RequireJS shim 在简单示例中被忽略
RequireJS shim being ignored in simple example
据我了解,您可以使用带有 Requirejs 的垫片来动态加载未在其自己的文件中定义为模块的脚本。那么为什么我不能让这样一个简单的脚本工作呢?
这是我的非工作示例:
/libs/test.js:
var a = 'Hello from TestJS';
main.js
require.config({
shim: {
'./libs/test': { exports: 'test'}
}
}
然后在控制台中尝试:
require(['./libs/test'], function(t) { console.log(t); })
产生 undefined
。
那么我如何获得 a
?
我可以从网络选项卡中看到 test.js 是从服务器加载的。我有一种感觉,我的 shim 配置被忽略了,requirejs 只是在没有 shim 的情况下加载它。因此,如果我只做 console.log(window.a)
,我会看到 'Hello from TestJS'。
使用您为 test.js
显示的代码,您必须指定导出的符号是 a
,而不是 test
,因为后者从未在 test.js
中定义:
shim: {
'./libs/test': { exports: 'a'}
}
据我了解,您可以使用带有 Requirejs 的垫片来动态加载未在其自己的文件中定义为模块的脚本。那么为什么我不能让这样一个简单的脚本工作呢?
这是我的非工作示例:
/libs/test.js:
var a = 'Hello from TestJS';
main.js
require.config({
shim: {
'./libs/test': { exports: 'test'}
}
}
然后在控制台中尝试:
require(['./libs/test'], function(t) { console.log(t); })
产生 undefined
。
那么我如何获得 a
?
我可以从网络选项卡中看到 test.js 是从服务器加载的。我有一种感觉,我的 shim 配置被忽略了,requirejs 只是在没有 shim 的情况下加载它。因此,如果我只做 console.log(window.a)
,我会看到 'Hello from TestJS'。
使用您为 test.js
显示的代码,您必须指定导出的符号是 a
,而不是 test
,因为后者从未在 test.js
中定义:
shim: {
'./libs/test': { exports: 'a'}
}