Javascript RequireJS超时使用优化器在慢速连接上加载main.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来向用户显示初始应用

我正在使用requirejs构建我的主干项目。这一切都运行良好,我能够使用优化器将所有js模块和模板编译成单个main.js文件。问题是main.js大约是1.5兆。在工作中,这很好,因为我们的互联网连接很快,但我注意到,对于一些较慢的连接,在main.js能够加载之前,require.js会超时

有没有办法不让我改变等待秒超时


例如,有没有一种方法可以将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);