为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

小怪兽爱吃肉 2019-03-28 22:18:16
我想学习下模块化加载器的核心原理,现在已经可以动态加载文件和防止重载,但目前卡在回调函数接收参数这一步了,烦请各位高手给指点一二、、、谢谢。例如:文件A.jsrequire(["依赖"],function(依赖){    // 此处是如何拿到依赖返回值的?});文件B.jsdefine(function(){    // 此处的返回结果如何让A拿到?})我整明白动态加载模块后执行回调函数了,但我不知道这个参数咋传过去的,回调函数如何获得模块的返回结果,请问他们之间的关联中间键是什么?若能给个简单demo就万分感激啦、、、文字描述下原理也行,谢谢了。
查看完整描述

3 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

define实现:


// 全局模块变量

const moduleResult = {}


function define(module){

    moduleResult[filepath] = module()

}

require实现:


function require(dependenceList, callback){

    callback(...dependenceList.map(dependence => moduleResult[dependence]))

}

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


查看完整回答
反对 回复 2019-04-05
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

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


function require(list, callback) {

    // 加载list,得到结果,加载啊缓存啊什么的

    // const result1 = eval('xx1.js')

    // const result2 = eval('xx2.js')

    callback(result1, result2)

}


查看完整回答
反对 回复 2019-04-05
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

可以查看一下我的这个文章 seajs和requirejs模块化开发


查看完整回答
反对 回复 2019-04-05
  • 3 回答
  • 0 关注
  • 448 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信