Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
454 views
in Technique[技术] by (71.8m points)

rxjs - Angular 2: Reduce app size (in addition to bundling/minification)

I have a small-medium size (~28 KB including just the (TypeScript transpiled) JS + HTML templates) Angular 2 app.

It's based originally on the angular.io quickstart, but now I am bundling/minifying it using JSPM for deployment.

The bundled JS file I get is 2.1 MB, coming down to 449?KB when served with gzip compression.

This is still rather large, and I would like to ask how best to go about reducing the overall size of the app for deployment, to deliver my app in the smallest and most efficient bundle.

Edit: I should mention that I've reduced the uncompressed but minified bundle size to 1.9 MB by importing RxJS operators individually, e.g. with import 'rxjs/add/operator/map';; so any size savings I'd be looking for on top of that.

Many thanks in advance for your help.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Now that Angular 2 has gone 2.0.0, there's documentation on Ahead of Time compilation of Angular apps (i.e., from TypeScript + HTML templates to Javascript).

Compilation removes the (template) compiler from Angular 2, reducing the Angular 2 payload by half.

As mentioned by Gunter Zochbauer, tree-shaking with rollup is supported, bringing the bundle size down further.

Tree shaking is now supported for production bundling in the Angular CLI, with AoT compilation support also in development.

With a [email protected] new project without any changes:

ng build --prod:

3.9K styles.b52d2076048963e7cbfd.bundle.js
183K main.8b778eea5dd35968ef66.bundle.js.gz
805K main.8b778eea5dd35968ef66.bundle.js

ng build --prod --aot:

3.9K styles.b52d2076048963e7cbfd.bundle.js
99K  main.a2eb733289ef46cb798c.bundle.js.gz
452K main.a2eb733289ef46cb798c.bundle.js

Meaning a basic, working app is now at < 100 KB with AoT compilation, minification, tree-shaking, and gzipping.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...