4
在boilerplatejs它看起来像模块是预加载延迟加载样板模块
(参见下面的代码)
是什么在这方面的影响,当涉及到大规模的Web应用程序(模块沉重的Web应用程序)。有没有办法在boilerplatejs中延迟加载模块?
在boilerplatejs它看起来像模块是预加载延迟加载样板模块
(参见下面的代码)
是什么在这方面的影响,当涉及到大规模的Web应用程序(模块沉重的Web应用程序)。有没有办法在boilerplatejs中延迟加载模块?
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();
}
另见初步认识的问题在这里:http://stackoverflow.com/questions/12366823/in-boilerplatejs-browser-is-loading-all-the-scripts-in-other-modules-regardles – Hasith