RequireJS超时使用优化器在慢速连接上加载main.js

时间:2012-09-13 08:52:40

标签: javascript requirejs

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

有没有办法让我改变waitSeconds超时?

例如,有没有办法将main.js文件拆分成多个部分,或者强制require等到加载main.js时出现错误?

1 个答案:

答案 0 :(得分:4)

我认为您不需要所有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('name')字符串文字调用的简化   CommonJS包装。因此,它不会找到通过a加载的模块   变量名称:

var mods = someCondition ? ['a', 'b'] : ['c', 'd'];
> require(mods);