JS 简单的模块加载原理、求指教

我想学习下模块化加载器的核心原理,现在已经可以动态加载文件和防止重载,但目前卡在回调函数接收参数这一步了,烦请各位高手给指点一二、、、谢谢。

例如:

文件A.js
require(["依赖"],function(依赖){
    // 此处是如何拿到依赖返回值的?
});

文件B.js
define(function(){
    // 此处的返回结果如何让A拿到?
})

我整明白动态加载模块后执行回调函数了,但我不知道这个参数咋传过去的,回调函数如何获得模块的返回结果,请问他们之间的关联中间键是什么?若能给个简单demo就万分感激啦、、、文字描述下原理也行,谢谢了。

阅读 1.7k
3 个回答

define实现:

// 全局模块变量
const moduleResult = {}

function define(module){
    moduleResult[filepath] = module()
}

require实现:

function require(dependenceList, callback){
    callback(...dependenceList.map(dependence => moduleResult[dependence]))
}

只有原理,没考虑其他东西

正常调用第二个参数就行了啊。

function require(list, callback) {
    // 加载list,得到结果,加载啊缓存啊什么的
    // const result1 = eval('xx1.js')
    // const result2 = eval('xx2.js')
    callback(result1, result2)
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题