我可以在不需要文件的情况下对函数进行填充吗?

时间:2016-09-20 15:26:35

标签: javascript requirejs

我正在使用requirejs 2.我有一个在主html模板中定义的函数(使用模板化数据),我想确保将此函数作为其他模块的依赖项调用。

一个明显的选择是宣布一个垫片:

     shim: {
        initialization: {
            exports: "initialization",
            init: function () {
                window.apidata = {
                    base_url: "{{base_url}}",
                    prefix: "{{prefix}}",
                    {% if user %}
                    user: "{{user.name}}",
                    {% endif %}
                };
                return window.apidata;
            }
        }

然后在我的依赖模块的define()中放入一个“初始化”条目。但是,require一直要求“initialization.js”文件,这是我没有的。我也尝试将函数作为导出,但我得到了相同的结果。

1 个答案:

答案 0 :(得分:0)

通过定义命名模块,您可以获得与无文件shim相同的功能:

define("initialization", function () {
  window.apidata = {
    base_url: "{{base_url}}",
    prefix: "{{prefix}}",
    {% if user %}
    user: "{{user.name}}",
    {% endif %}
  };
  return window.apidata;
});

只要上述代码在之前执行任何需要initialization的代码,RequireJS就不会去网络解析initialization但会知道它已经定义

有一次,回过头来,我试着看看我是否可以创建无文件shim,但我找不到办法做到这一点。