seajs + 模板引擎
2018-04-11 本文已影响0人
shanshanfei
//这种写法 模块会加载aa 和 bb,而不是根据条件进行加载
//原因是:seajs分析模块依赖是将整个模块文件变为字符串,然后进行require的正则匹配,所以aa 和 bb都被分析进了依赖模块中
//这种情况下 使用require.async进行异步加载模块即可
if(a){
require('./aa')
}else{
require('./bb')
}
【这篇文章有说为什么要用require.async来加载模块而不是通过if...else来进行判断】
seajs模块加载的大体流程:
1.seajs.use启动模块加载,模块加载完成,将模块的返回值module.exports作为callback回调函数的参数并执行;
2.模块加载的过程,包含模块本身的加载、依赖模块分析及加载、以及依赖模块的依赖模块的加载等,然后按照依赖的顺序依次生成script标签,插入文档中;
模板引擎的原理就是将模板字符串进行解析,然后进行正则替换,for、if等语句进行js代码转换,最后进行返回。