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 的对象。

最新文章

  1. Html 特殊符号
  2. Phylab2.0 文档汇总
  3. poco json 中文字符,抛异常JSON Exception -->iconv 转换 备忘录。
  4. c# wpf定时器的一种用法
  5. 如何通过pid快速找出进程的路径
  6. centos 下如何加入sudo 用户
  7. Linux系统VIM编辑器
  8. 谷歌的C++智能指针实现
  9. poj 1012 Joseph (约瑟夫问题)
  10. treeview自动从表中添加标题和列值做目录的方法2
  11. Power BI本地部署(10月正式版)
  12. 编程之美2.18 数组分割 原创解O(nlogn)的时间复杂度求解:
  13. Java设计模式总结
  14. 树上倍增求LCA及例题
  15. django源码分析 LazySetting对象
  16. Vue.js——60分钟快速入门(转)
  17. OmniPlan 3 Pro密钥
  18. jpg转yuv420抠图后转为jpg
  19. 配置zabbix当内存剩余不足15%的时候触发报警
  20. bash if 表达式含义

热门文章

  1. RunTime.getRunTime().addShutdownHook用法
  2. Mysql 5.7 liunx 忘记密码的补救方法
  3. 面向对象JSON的继承(复制)与函数的继承(复制)
  4. 【转】 在Eclipse中使用JUnit4进行单元测试(中级篇)
  5. Eclipse 首选项(Preferences)
  6. Codeforces Round #398 (Div. 2) BCD
  7. jetty端口灵活配置方法
  8. crm操作电子邮件
  9. [读书笔记]JavaScript 闭包(Closures)
  10. 2318: Spoj4060 game with probability Problem