所以情况如下:
我有一堆页面特定的js文件,我正在使用r.js进行优化。
99%的人将名为core.js的模块定义为依赖项。 Core有5个自己的依赖。
我想通过从页面js文件的优化版本中排除核心来利用缓存。
所以在我的build.js中,我尝试了以下几点:
modules: [
{
name : 'modules/core'
},
{
name: 'homepage',
exclude : ['modules/core']
}
]
当我运行优化器时,它会优化模块/核心和核心。主页很好。
转到使用homepage.js的页面,问题是:core.js&它的依赖项被单独加载,导致7个请求而不是2个。
在上面的例子中,我想要实现的是:将homepage.js和它的依赖关系优化到一个文件中并将其加载到core.js的优化版本中,而不是加载到core.js中它是独立的依赖。
这甚至可能吗?
答案 0 :(得分:2)
在构建之后,您有两个选项:
1)修改顶级加载,以便在任何其他加载之前加载模块/核心:
require(['modules/core'], function () {
//Now do normal require stuff in here
});
如果在首页加载完成之前看到所请求的模块,请在主页中使用另一个嵌套的require()调用。
2)插入一个require.config块,将核心中的所有模块指向核心文件。 requirejs只会在多个模块ID都指向它时才获取core.js文件:
require.config({
paths: {
'mod/one': 'modules/core',
'mod/two', 'modules/core',
...
}
});
或者看到这种示例项目设置加载一个公共的,然后是一个特定于页面的图层,但是在构建之后无需进行源修改即可工作(只使用#1的变体,但将其设置为以来源形式工作):