2012-10-01 124 views
4

在boilerplatejs它看起来像模块是预加载延迟加载样板模块

(参见下面的代码)

​​

是什么在这方面的影响,当涉及到大规模的Web应用程序(模块沉重的Web应用程序)。有没有办法在boilerplatejs中延迟加载模块?

回答

2

Java脚本没有反射类型的机制来加载内容。任何需要加载的模块都必须在某处注册。这就是为什么模块(子上下文)加载如下:

appContext.loadChildContexts(moduleContexts); 

(在SRC/application.js中)

但是你上面的代码是关于requirejs AMD模块。这基本上是导入不同的JS脚本(每个都代表模块的代码)。使用requireJS AMD,脚本(您的源代码)不会延迟加载,而是预加载。这是有道理的,因为您的应用程序源代码应该在浏览器中可供执行。另一方面,当您进行JS优化时,我们无论如何都会创建一个包含所有源代码的单个脚本。那么没有单独的脚本文件或延迟加载源代码的意义。

但是应该对行为应用延迟加载(不加载代码)。这就是为什么只在'activate()'方法中创建UI组件(ViewTemplate)的原因。这些仅在用户需要时才创建。这是行为的延迟加载,因此应用程序渲染时间较少。

this.activate = function(parent, params) { 
     // if panel is not created, lets create it and initiate bindings 
     if (!panel) { 
      panel = new Boiler.ViewTemplate(parent, template, nls); 
      ... 
     } 
     vm.initialize(params.name); 
     panel.show(); 
    } 
+0

另见初步认识的问题在这里:http://stackoverflow.com/questions/12366823/in-boilerplatejs-browser-is-loading-all-the-scripts-in-other-modules-regardles – Hasith