我正在使用requirejs来构建我的Backbone项目。一切都很好,我可以使用优化器将所有的js模块和模板编译到一个单独的main.js文件中。问题是main.js大约是1.5 meg。在工作中,这很好,因为我们的互联网连接很快,但我注意到,对于一些较慢的连接,require.js会在main.js加载之前超时。
有没有办法不让我更改waitSeconds超时?
例如,有没有一种方法可以将main.js文件分解为多个部分,或者在加载main.js时强制要求等待出现错误?
我认为您不需要所有的1.5mb来向用户显示inital应用程序。因此,您可以在代码中要求一些具有条件的部分。所以不是:
define(['module1','module2','module3','module4'], function(m1, m2, m3, m4){
if(m1.someCondition){
m2.start()
}else{
m3.start()
}
})
您可以使用require
:加载应用程序的部分内容
define(['module1'], function(m1){
m1.start();
if(m1.someCondition){
var name = 'module2'
m2 = require(name)
m2.start()
}else{
var name = 'module3'
m3 = require(name)
m3.start()
}
})
请注意,只有当传递的名称不是字符串时,优化器才会忽略模块
来自文档:
优化器将只组合数组中指定的模块传递到顶级的字符串文字的请求和定义调用,或简化中的require('name')字符串文字调用CommonJS包装。因此,它将找不到通过变量名:
var mods = someCondition ? ['a', 'b'] : ['c', 'd'];
> require(mods);