2016-10-23 11 views
5

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

私はng build --prodを実行すると、それは1.08メガバイトだ:私はng build --prod --aotを実行すると、それは1.26メガバイト

        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] 

です。 TSconfigのために

        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] 

次のようになります。生成されたテンプレートJavaScriptがテンプレート自体よりもはるかに大きいです

{ 
    "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" 
    ] 
} 

答えて

5

私はissue on our GitHubでこれを答えたが、ここで参照するために私の答えです:

あなたはIBMアカデミーをサポート(とUMDの束を解放)していない特定のライブラリを使用している場合、これが発生する可能性があります。その理由は、純粋なJavaScriptであるコンポーネントを最適化できないためです。残念ながら、これは私たちの側で修正できるものではありません。

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

また、一部のテンプレートでは、AoTサイズがJITよりも大きくなることがあります。 gzipされたバージョンは、AoTの内容のほとんどが何度も何度も繰り返されている同じステートメントであるため、別の方法にする必要があります。

バンドルは大きいが、ブートストラップ時間が大幅に高速化する必要があります。私はそれが正しいことだと思う... IBMアカデミーを使用した場合、角度のコンパイラは、バンドルの残りの部分と、ブラウザに出荷する必要はありませんが、これは、「コンパイラので、「小さな角度フレームワークのダウンロードサイズ」につながるいけない

+0

これがまさにそうである... CLIは、生産の大きさのビルドを削減に努めています。図書館の教育とツールは、彼らがベストプラクティスに従っていることを確認するのに役立ちます。 – Brocco

1

。ファイルサイズと実行時間のトレードオフ状況です。

+0

角度自体のおよそ半分が公式角度のドキュメントによれば、」次のとおりです。https://angular.io/docs/ts/latest/cookbook/aot-compiler.html#!#aot-jit – Rob

+0

@Rob、私は彼が話していると思いますテンプレート(つまりHTML)についてjsの合計ファイルサイズではありません。はい、コンパイルモジュールは出荷する必要はありませんが、 'コンパイルされた'テンプレートは大きくなる可能性があります。 – Brad

関連する問題