Performance 同时加载捆绑包,而不是连续加载
我们使用SystemJS加载两个包:Performance 同时加载捆绑包,而不是连续加载,performance,browser,aurelia,systemjs,Performance,Browser,Aurelia,Systemjs,我们使用SystemJS加载两个包:aurelia.js和app build.js。SystemJs正在一个接一个地加载它们。我们如何要求SystemJs同时加载它们 为了清晰起见,我们省略了config.js的细节,如下所示: System.config({ defaultJSExtensions: true, transpiler: "none", paths: { // omitted }, meta: { // omitted }, map:
aurelia.js
和app build.js
。SystemJs正在一个接一个地加载它们。我们如何要求SystemJs同时加载它们
为了清晰起见,我们省略了config.js的细节,如下所示:
System.config({
defaultJSExtensions: true,
transpiler: "none",
paths: {
// omitted
},
meta: {
// omitted
},
map: {
// omitted
},
bundles: {
"app-build.js": [
"about.html!github:systemjs/plugin-text@0.0.3.js",
"about.js",
"admin.html!github:systemjs/plugin-text@0.0.3.js",
"admin.js",
// et cetera
],
"aurelia.js": [
"github:HubSpot/tether@1.3.2.js",
"github:HubSpot/tether@1.3.2/js/tether.js",
"github:Leaflet/Leaflet@0.7.7.js",
"github:Leaflet/Leaflet@0.7.7/dist/leaflet-src.js",
// et cetera
]
},
depCache: {
// omitted
}
});
config.js
告诉SystemJS加载程序每个模块所在的包。然后,SystemJS将延迟加载捆绑包作为需要的模块。您看到上述内容的原因是依赖关系层次结构是线性的。您的index.html
可能有这样一行:
System.import('aurelia-bootstrapper');
因此SystemJS寻找“aurelia bootstrapper”模型并加载需要它的包。引导程序首先根据您的配置加载main.js
或app.js
文件
最佳解决方案
不要将包裹分开。如果您正在进行捆绑,那么您很可能也在进行gzip,因为这两种方式都是生产环境的标准方式,应该始终同时进行。如果将所有文件捆绑到一个文件中,GZip将实现更高的压缩比。没有什么理由分开你的包,除非你不是自己创建包的
另一种解决方案
使用index.html
中的“aurelia bootstrapper”导入,添加手动导入其他捆绑包
<script>
System.import('my-module/main');
System.import('aurelia-bootstrapper');
</script>
系统导入('my-module/main');
System.import('aurelia-bootstrapper');
它们是如何加载的?当未加载aurelia
时,您确定app build
是可行的吗?@estus问得好<代码>应用程序构建取决于奥雷利亚
。没有它是行不通的。我想知道。。。我们可以同时加载app build
和它的依赖项吗?@estus你所说的“它们是如何加载的”是什么意思?我想到的答案是SystemJs加载它们。您需要什么详细信息?请发布加载这些包的代码System.config(…)
本身不加载任何内容。如果app build
包含启动应用程序的代码,则不能同时加载,因为加载后将执行app build
,此时应该已经加载了aurelia
。