Javascript RequireJS超时使用优化器在慢速连接上加载main.js
我正在使用requirejs构建我的主干项目。这一切都运行良好,我能够使用优化器将所有js模块和模板编译成单个main.js文件。问题是main.js大约是1.5兆。在工作中,这很好,因为我们的互联网连接很快,但我注意到,对于一些较慢的连接,在main.js能够加载之前,require.js会超时 有没有办法不让我改变等待秒超时Javascript RequireJS超时使用优化器在慢速连接上加载main.js,javascript,requirejs,Javascript,Requirejs,我正在使用requirejs构建我的主干项目。这一切都运行良好,我能够使用优化器将所有js模块和模板编译成单个main.js文件。问题是main.js大约是1.5兆。在工作中,这很好,因为我们的互联网连接很快,但我注意到,对于一些较慢的连接,在main.js能够加载之前,require.js会超时 有没有办法不让我改变等待秒超时 例如,有没有一种方法可以将main.js文件分解成多个部分,或者强制require在加载main.js时等待出现错误?我认为您不需要所有的1.5mb来向用户显示初始应用
例如,有没有一种方法可以将main.js文件分解成多个部分,或者强制require在加载main.js时等待出现错误?我认为您不需要所有的1.5mb来向用户显示初始应用程序。因此,您可以在代码中要求某些具有条件的部分。因此,不是:
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和define的字符串文本的数量
调用,或在简化的
普通包装。因此,它将找不到通过
变量名:
是的,我正在使用如上所示的定义部分。但是优化器缩小了所有模块,并将它们放在一个js文件中。这就是为什么文件是1.5毫克大。在我的项目中,有数百个单独的小文件。好的,名称必须是变量。更新我的示例。但是所有模块在优化后仍然需要可用。我的理解是,Optimizer的全部目的是将数百个单独的文件整理成少量的文件,这样就不会有数百个ajax文件请求。我的问题是,这种用途与waitSeconds超时相冲突,因为较慢的连接无法在所需的超时时间内下载文件。其想法是将应用程序拆分为由较小的requirejs模块组成的较大组件。比如说,你有一个不同分区的应用程序,为每个分区创建一个入口点,就像你现在为整个应用程序创建入口点一样。此部分可以在需要时加载。请查看。诀窍是向构建文件中添加多个模块。
var mods = someCondition ? ['a', 'b'] : ['c', 'd'];
> require(mods);