zoukankan      html  css  js  c++  java
  • 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 的对象。

  • 相关阅读:
    AngularJs练习Demo3
    AngularJs练习Demo2
    AngularJs练习Demo1
    上传图片预览,支持IE6
    上传图片预览插件(转)
    微信公众平台SDK
    C# 4.0 并行计算部分
    在没有安装有mvc3的主机上部署asp.net mvc3网站,需要包含的DLL文件
    全排列
    不重复排列
  • 原文地址:https://www.cnblogs.com/chencidi/p/5677773.html
Copyright © 2011-2022 走看看