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

  • 相关阅读:
    高效 告别996,开启java高效编程之门 问题
    高效 告别996,开启java高效编程之门 3-3实战:利用Lambda+Stream处理业务逻辑
    高效 告别996,开启java高效编程之门 3-2传统方式处理业务逻辑
    高效 告别996,开启java高效编程之门 3-1流式编程开场与案例场景概述
    无限树
    拖拽示例
    日期格式化字符串 字符串转化成日期
    loading
    It运维项目整理
    免费的二维码发布平台 http://zhifubao.masao.top:8282/assets/index.html
  • 原文地址:https://www.cnblogs.com/chencidi/p/5677773.html
Copyright © 2011-2022 走看看