我正在尝试使用Require.js创建一个外部库.感谢Require.js没有正确编译单个js文件和Require.js(almond.js)Timing Off我已经弄清楚如何将所有内容"编译"到一个优化/构建的文件中,并且该单个文件可以正常工作.只有一个问题:我无法弄清楚如何为我的库设置变量.
假设我希望我的库可以创建window.Foo.我尝试使用以下main.js文件:
window.Foo = require([], function() {
window.Foo = {someValue: 1};
return {someValue: 2};
});
Run Code Online (Sandbox Code Playgroud)
和一个包装器结束片段:
return require('main');
}));
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我尝试通过window.Foo从require调用内部显式设置并通过结束片段的返回值从外部显式设置Foo来将Foo暴露给全局空间.但是没有人工作; 如果我console.log(window.foo)在加载构建文件后添加一个权限,它会告诉我这window.Foo是未定义的.
如果我做一个window.setTimeout window.Foo最终会设置(to {someValue: 1}),但我不能指望我的用户必须用超时包装所有代码.任何人都可以解释一下window.Foo我的优化/构建文件加载后如何定义?
Lou*_*uis 13
如果你按照詹姆斯的指示在这里,你可以很容易地制作设计的RequireJS模块捆绑,有人可以同步加载库.
我有一个github 存储库来说明整个事情.重点:
该main模块出口Foo到全球空间:
define('main', ["./modC"], function () {
console.log("inside");
window.Foo = {someValue: 1};
return {someValue: 2};
});
Run Code Online (Sandbox Code Playgroud)
它还返回一个由起始片段导出的值Bar(即所说的行root.Bar = factory();).因此,它说明了两种导出到全球空间的方法.
r.jsstarts 使用的包装器代码与同步形式require:
require(`main`);
Run Code Online (Sandbox Code Playgroud)如果加载它,您将看到以下输出:
outside
loaded modC
inside
out in the HTML!
value of window.Foo: Object {someValue: 1}
value of window.Bar: Object {someValue: 2}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19812 次 |
| 最近记录: |