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

  • 相关阅读:
    如何控制input框!
    火车头采集器破解版
    记Angular与Django REST框架的一次合作(2):前端组件化——Angular
    拉勾网一些“震惊”的结论
    一个知乎重度用户眼中的知乎
    anthelion编译
    搜索引擎爬虫蜘蛛的USERAGENT大全
    Netty系列之Netty高性能之道
    python正则表达式
    Cookie的使用,详解,获取,无法互通、客户端获取Cookie、深入解析cookie
  • 原文地址:https://www.cnblogs.com/chencidi/p/5677773.html
Copyright © 2011-2022 走看看