7

プロジェクトに最新の angular-cli (beta-18) を使用しています。cli がまだ非常に初期段階にあることは知っていますが、AoTを使用しないと、最終的なバンドル サイズが実際に小さくなる理由について困惑しています。

を実行するng build --prodと、1.08 mb になります。

                                 Asset       Size  Chunks             Chunk Names                                                        
   main.53d637ff9422b65418e6.bundle.js    1.08 MB    0, 2  [emitted]  main                                                               
 styles.01cffb95000fdb84402c.bundle.js     8.9 kB    1, 2  [emitted]  styles                                                             
                             inline.js    1.45 kB       2  [emitted]  inline                                                             
  main.53d637ff9422b65418e6.bundle.map    7.24 MB    0, 2  [emitted]  main                                                               
styles.01cffb95000fdb84402c.bundle.map    40.3 kB    1, 2  [emitted]  styles                                                             
inline.d41d8cd98f00b204e980.bundle.map    13.5 kB       2  [emitted]  inline                                                             
main.53d637ff9422b65418e6.bundle.js.gz     236 kB          [emitted]                                                                     
                            index.html  907 bytes          [emitted]                                                                     
                     assets/.npmignore    0 bytes          [emitted]                                                                     
                           favicon.ico    5.43 kB          [emitted] 

実行するng build --prod --aotと、1.26 mb です。

                                 Asset       Size  Chunks             Chunk Names                                                        
styles.01cffb95000fdb84402c.bundle.map    40.3 kB    1, 2  [emitted]  styles                                                             
     0.688d48f52a362bd543fc.bundle.map    2.94 kB          [emitted]                                                                     
 styles.01cffb95000fdb84402c.bundle.js     8.9 kB    1, 2  [emitted]  styles                                                             
                             inline.js    1.45 kB       2  [emitted]  inline                                                             
  main.6490041404a193461c3c.bundle.map    6.81 MB    0, 2  [emitted]  main                                                               
   main.6490041404a193461c3c.bundle.js    1.26 MB    0, 2  [emitted]  main                                                               
inline.d41d8cd98f00b204e980.bundle.map    13.5 kB       2  [emitted]  inline                                                             
main.6490041404a193461c3c.bundle.js.gz     223 kB          [emitted]                                                                     
                            index.html  907 bytes          [emitted]                                                                     
                     assets/.npmignore    0 bytes          [emitted]                                                                     
                           favicon.ico    5.43 kB          [emitted] 

tsconfig の場合は次のようになります。

{
  "compilerOptions": {
    "declaration": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": [
      "es6",
      "dom"
    ],
    "mapRoot": "./",
    "module": "es6",
    "moduleResolution": "node",
    "outDir": "../dist/out-tsc",
    "sourceMap": true,
    "target": "es5",
    "typeRoots": [
      "../node_modules/@types"
    ]
  },
  "exclude": [
    "**/*.spec.ts"
  ]
}
4

2 に答える 2

6

GitHubの問題でこれに回答しましたが、参考までに私の回答を次に示します。

AoT をサポートしていない (および UMD バンドルをリリースしていない) 特定のライブラリを使用している場合、これが発生する可能性があります。その理由は、純粋な JavaScript であるコンポーネントを最適化できないためです。残念ながら、これは私たちの側で修正できるものではありません。

これらのライブラリは、デコレータが削除され、コンポーネント/モジュールが既に AoT コンパイルされている ES2015 モジュールを公開する必要があります。JIT と AoT コンパイルの両方をサポートするライブラリのガイドラインに取り組んでいます。

また、一部のテンプレートでは、AoT サイズが JIT よりも大きい場合があります。ほとんどの AoT コンテンツは何度も繰り返される同じステートメントであるため、gzip 圧縮されたバージョンは逆にする必要があります。

バンドルは大きくなりますが、ブートストラップ時間は大幅に短縮されます。

于 2016-10-24T17:00:16.083 に答える
1

生成されたテンプレート JavaScript は、テンプレート自体よりもはるかに大きくなります。これは、ファイル サイズと実行時間のトレードオフの状況です。

于 2016-10-23T18:07:30.860 に答える