requirejs源码分析: config中shim
shim处理的源码:
//Merge shim
if (cfg.shim) {
eachProp(cfg.shim, function (value, id) {
//shim 为数组类型, 很少用。
//一般为 对象类型
//Normalize the structure
if (isArray(value)) {
value = {
deps: value
};
}
// 当前配置点有exports或 init.
// 没有初始化过exportsFn时
// 进行初始化
if ((value.exports || value.init) && !value.exportsFn) {
value.exportsFn = context.makeShimExports(value);
}
shim[id] = value;
});
config.shim = shim;
}
1. 从以上代码可以看出, exports的对象是由makeShimExports获得的
makeShimExports: function (value) {
function fn() {
var ret;
if (value.init) {
ret = value.init.apply(global, arguments);
}
return ret || (value.exports && getGlobal(value.exports));
}
return fn;
}
从这里可以看当有配置 init方法时, 将使用init的返回值。 不存时直接获取全局中 对象名为shim设置的exports 的对象。
最新文章
- Html 特殊符号
- Phylab2.0 文档汇总
- poco json 中文字符,抛异常JSON Exception -->;iconv 转换 备忘录。
- c# wpf定时器的一种用法
- 如何通过pid快速找出进程的路径
- centos 下如何加入sudo 用户
- Linux系统VIM编辑器
- 谷歌的C++智能指针实现
- poj 1012 Joseph (约瑟夫问题)
- treeview自动从表中添加标题和列值做目录的方法2
- Power BI本地部署(10月正式版)
- 编程之美2.18 数组分割 原创解O(nlogn)的时间复杂度求解:
- Java设计模式总结
- 树上倍增求LCA及例题
- django源码分析 LazySetting对象
- Vue.js——60分钟快速入门(转)
- OmniPlan 3 Pro密钥
- jpg转yuv420抠图后转为jpg
- 配置zabbix当内存剩余不足15%的时候触发报警
- bash if 表达式含义
热门文章
- RunTime.getRunTime().addShutdownHook用法
- Mysql 5.7 liunx 忘记密码的补救方法
- 面向对象JSON的继承(复制)与函数的继承(复制)
- 【转】 在Eclipse中使用JUnit4进行单元测试(中级篇)
- Eclipse 首选项(Preferences)
- Codeforces Round #398 (Div. 2) BCD
- jetty端口灵活配置方法
- crm操作电子邮件
- [读书笔记]JavaScript 闭包(Closures)
- 2318: Spoj4060 game with probability Problem