Kami menggunakan SystemJS untuk memuat dua bundel: aurelia.js dan app-build.js. SystemJs memuatnya satu demi satu. Bagaimana kita bisa meminta SystemJs untuk memuatnya secara bersamaan?

Two xhr requests, one after the other.

Config.js kami, dengan detail dihilangkan untuk kejelasan, terlihat seperti ini:

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
  }
});
1
Shaun Luttin 13 Juni 2016, 21:19
2
Bagaimana mereka dimuat? Apakah Anda yakin bahwa app-build dapat diterapkan saat aurelia tidak dimuat?
 – 
Estus Flask
13 Juni 2016, 22:48
Pertanyaan bagus! app-build bergantung pada aurelia. Ini tidak bisa diterapkan tanpanya. Saya ingin tahu... dapatkah kita memuat app-build secara bersamaan dengan ketergantungannya?
 – 
Shaun Luttin
13 Juni 2016, 23:20
Apa yang Anda maksud dengan, "Bagaimana mereka dimuat?" Jawaban yang muncul di benak adalah SystemJs memuatnya. Detail apa yang Anda minta?
 – 
Shaun Luttin
13 Juni 2016, 23:23
1
Tolong, posting kode yang memuat paket-paket ini. System.config(...) sendiri tidak memuat apa pun. Jika app-build berisi kode yang memulai aplikasi, maka tidak, Anda tidak dapat memuatnya secara bersamaan, karena app-build akan dieksekusi setelah memuat, dan aurelia seharusnya sudah dimuat saat ini .
 – 
Estus Flask
14 Juni 2016, 00:04

1 menjawab

Jawaban Terbaik

config.js memberi tahu pemuat SystemJS di mana bundel setiap modul berada. SystemJS kemudian malas memuat bundel karena modul diperlukan. Alasan Anda melihat hal di atas adalah karena hierarki ketergantungannya linier. index.html Anda mungkin memiliki baris seperti ini:

  System.import('aurelia-bootstrapper');

Jadi SystemJS mencari model 'aurelia-bootstrapper' dan memuat bundel yang membutuhkannya. Bootstrapper kemudian memulai dengan memuat file main.js atau app.js Anda tergantung pada konfigurasi Anda.

Solusi terbaik

Jangan jangan pisahkan bundel Anda. Jika Anda memaketkan, Anda mungkin juga GZipping, karena keduanya standar untuk lingkungan produksi dan harus selalu terjadi bersamaan. GZip akan mencapai rasio kompresi yang lebih tinggi jika Anda menggabungkan semua file ke dalam satu file. Ada sedikit alasan untuk memisahkan bundel Anda, kecuali jika Anda tidak membuat bundel itu sendiri.

Solusi lainnya

Tambahkan impor manual dari bundel Anda yang lain dengan impor 'aurelia-bootstrapper' di index.html Anda.

<script>
  System.import('my-module/main');
  System.import('aurelia-bootstrapper');
</script>
1
Matthew James Davis 16 Juni 2016, 04:36