我使用需求2。我有一个在主html模板中定义的函数(使用模板化的数据),并且我想确保该函数作为其他模块的依赖项被调用。
一个明显的选择是声明一个shim:
shim: {
initialization: {
exports: "initialization",
init: function () {
window.apidata = {
base_url: "{{base_url}}",
prefix: "{{prefix}}",
{% if user %}
user: "{{user.name}}",
{% endif %}
};
return window.apidata;
}
}
,然后在我的依赖模块的define()中放入一个"initialization"条目。然而,require一直要求"initialization.js"文件,而我没有。我还尝试将函数作为导出,但我得到了相同的结果。
您可以通过定义命名模块获得与从无文件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
,但我没有找到这样做的方法。