【问题标题】:Can i shim a function without the need for a file?我可以在不需要文件的情况下填充函数吗?
【发布时间】:2017-01-28 14:44:01
【问题描述】:

我正在使用 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”文件。我也尝试将函数作为导出,但我得到了相同的结果。

【问题讨论】:

    标签: javascript requirejs


    【解决方案1】:

    通过定义命名模块,您可以获得与从无文件 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,但我没有找到方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-19
      • 2011-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-22
      • 1970-01-01
      相关资源
      最近更新 更多