requireJS
来加载我的模块。目前我正在自己这样做,所以我对requireJS有一些疑问。
更确切地说,如果您有require(["some/module", "a.js", "b.js"], function...});
之类的电话,并且您在之后的a.js
或b.js
来电中再次引用.require
或.define
,如何需要JS处理那些?我的猜测是,它会完全忽略那些额外的引用,这是正确的吗?如果是这样,是否可以强制requireJS 重新加载脚本?
我通常做的是连接所有js文件(包括模块),除了需要根据运行时条件加载的文件。就我阅读requireJS doc而言,您可以为模块定义自己的名称。所以我的问题是,你可以加载一个已经存在于脚本中的模块,而不通过网络传输吗? 据我了解的文档,名称是根据模块的路径位置和文件名自动创建的,所以这对我的要求没有任何意义。
答案 0 :(得分:5)
requirejs.undef()
应该做的伎俩
答案 1 :(得分:3)
通常情况下,一个模块只会被require.js加载一次。 require.js将始终解析依赖项并以正确的顺序加载模块,这样您就不必关心它了。对同一模块的require
的后续调用将立即生成它。
重新加载模块不。如果您真的需要多次加载同一个模块(不幸的是表明模块的设计有问题),您可以查看Multiversion support.
我不确定我理解“静态加载模块”的含义。但是,如果我猜对了,你想要将几个模块加载为一个并单独使用它们。这个有可能: 通常在您的模块中,您将执行以下操作:
define(['moduleA', 'moduleB', 'moduleC'], function (a, b, c) {
...
return exports;
});
其中exports
可以是或多或少的任何东西,一个函数,一个对象,等等。所以你也可以这样做:
define(['moduleA', 'moduleB', 'moduleC'], function (a, b, c) {
...
return {moduleA: a, moduleB: b, moduleC: c};
});
将它们全部导出。
但请注意,您应该真正查看optimization tool。它可以将相关模块组合在一起。
最后,自动命名是一种误解,您可以明确模块的名称。