我正在使用RequireJS来模块化我的代码。我使用的网站将有几个不同的页面类别。对于它们中的每一个,我想加载包含所有页面类别中存在的所有依赖项的通用JS文件,jQuery是最明显的一个。我已经设法做到了。
对于其余页面,我想要单独的JS文件。每个页面都有自己的模块,但我认为如果我一次下载多个页面模块会更有意义,这样当用户访问其他页面时,他将已经缓存了JS文件而不必下载。
现在我尝试连接这些模块,这些模块运行得相当好。但是,我不确定如何从文件加载特定模块。到目前为止,我这样做:
require(['./js/common'], function (common) {
require(['public']);
});
common是依赖项文件,public是我的连接文件,包含所有依赖项。里面有每个页面的模块,但我不知道如何调用特定的。有什么想法吗?
答案 0 :(得分:1)
看看require-lazy。
它允许您将应用程序的独立部分捆绑到单独的包中。从开发人员的角度来看,而不是:
define(["module1", "module2"], function(module1, module2) {...});
你写道:
define(["lazy!module1", "lazy!module2"], function(module1, module2) {...});
模块1& 2不会预先加载;当你打电话时,他们和他们的依赖关系将被加载:
module1.get().then(function(realModule1) {
// here you have access to the real module1
});
查看一些用例的示例。
答案 1 :(得分:1)
查看RequireJS'运行时配置的bundles
选项。在你的情况下,它将是这样的:
bundles: {
public: ['mod1', 'mod2', ...]
}
我使用了mod1
,mod2
,因为我没有看到你问题中实际模块的名称,但是你想要的是{{{{{{ 1}}捆绑和您想要单独加载。有了这个,RequireJS会知道当你想加载这样的模块时,它必须从public
获取它们,而不是单独搜索它们。
然后您应该可以将加载代码更改为:
public
同样,require(['./js/common'], function (common) {
require(['mod1']);
});
仅供参考。