1 seajs核心实现包括以下几个函数
use(id,callback) 入口函数
define(id?dep?factory) 模块定义函数
require(id) 模块加载函数
getModuleExports(module) 取得模块接口函数
2 代码实现
2.1. use(ids, callback)
use为程序启动的入口,主要干两件事:加载指定的模块待模块加载完成后,调用回调函数
|
|
use会调用load函数,这个函数的作用是根据模块的id,加载模块,并返回一个Promise对象
|
|
2.2 define函数的实现
|
|
一个模块文件被浏览器下载下来后,并不会直接运行我们的模块定义代码,而是会首先执行一个define
函数,这个函数会取得模块定义的源代码(通过函数的toString()
函数来取得源代码),然后利用正则匹配找到依赖的模块(匹配require("dep.js")
这样的字符串),然后加载依赖的模块,最后发射一个自定义事件complete
,通知当前模块, 模块已经加载完成,此时,当前模块的就会调用与complete
事件绑定的回调函数,完成与这个模块相关的任务,比如resolve
与这个模块加载绑定的Promise
。
具体实现为:
|
|
2.3 require函数的实现
|
|