我可以在不需要文件的情况下填充一个函数吗?
问题描述:
我正在使用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;
}
}
,然后把一个“初始化”项中定义()我的依赖模块。但是,require要求一个“initialization.js”文件,我没有。我也尝试将函数作为出口,但我得到了相同的结果。
答
你可以得到相同的功能的一个你会从fileless 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
,但我没有找到办法做到这一点。