本文阅读大概需要 1 分钟
在这份Seajs的PPT中,玉伯介绍到了Seajs的实现1
2
3
4
5
6
7
8
9/*a.js*/
define(function(require, exports, module){
var b = require('./b');
var c = require('./c');
//other code
});
/*main.js*/
seajs.use(./a);
- Step1: 解析 ‘./a’
- Step2.1: 下载a
- Step2.2: 执行define,保存a的factory
- Step2.3: 得到依赖b和c
- Step2.4: 加载b和c
- Step3: 执行a的factory,得到a的module.exports
Step1: 路径解析
在进行路径解析的时候require('jquery')
,首先判断在seajs.config
是否定义了该alias
,
如果存在替换.(parseAlias)
这之后在根据base
,将id值解析为uri.(id2uri)
在接下来进行(parseMap), 即对seajs.config
中的map进行解析。
最终得到完整的路径!
Step2: 模块加载_
- 将上一步得到的路径通过 insert script 、xhr、web workder…等方式插入