RequireJS中define方法和require方法原理简单实现

35 阅读1分钟

介绍

AMD也是一种JavaScript模块化规范,与CommonJs最大的不同在于它采用异步的方式加载依赖的模块,最近正好看了下,这里简单自己实现下

示例代码


let factories = {  };

/*
 * modsName 模块名称
 * depends  依赖
 * factory  工厂函数
 */
function define(modsName, depends, factory) {
  factories[modsName] = factory;
}

/*
 * mods      要加载的模块
 * callback  回调函数
 */
function require(mods, callback) {

    let result = mods.map(function(name) {
       return factories[name]();
    });

    callback.apply(null, result);

}

define('name', [], function() {
  return '不粘锅';
});

define('age', [], function() {
  return 11;
});

require(['name', 'age'], function(name, age) {
  console.log(name, age);
});

输出结果

这里我们看到已经正常输出,因为比较简单没有做详细说明,不理解的小伙伴可以自己敲几次,就可以理解了,大神请忽视。