Performance 同时加载捆绑包,而不是连续加载

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:

我们使用SystemJS加载两个包:
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