原文出處:
時間 2016-11-15 08:51:48
張志敏的技術專欄 原文
主題angularjs
ecmascript
angular 2 已經發布了 2.1.2 版本, 相信很多人已經在使用(試用)了, 相比 angularjs 1.x , angular 2 在效能上有了長足的進步, 同時 angular 2 也變得非常的龐大, 動輒幾兆的指令碼, 如何部署到生產環境? 接下來就介紹如何為生產環境編譯 angular 2 應用, 在本文中, 我們將 angular 2 官方文件中的hello angular
應用編譯到 50k 以下, 以用於生產環境。
根據 angular2 官方的 quickstart 快速建立乙個hello angular
應用, 在沒有任何優化的情況下, 運**況如下圖所示:
從上圖可以看出, 僅僅乙個 hello 應用, 就產生了 40 個請求, 載入了 1.8m 的指令碼, 這個在生產環境下(特別是移動端)是無法接受的。
傳統的方式無非就是進行打包和壓縮, 我使用 browserify 和 uglifyjs 來進行打包與壓縮, 首先是安裝這兩個工具類庫:
npm i -d browserify uglifyjs在 package.json 檔案中新增這兩個 npm 命令:
}現在執行這兩個命令, 看看會怎麼樣:
npm run bundle && npm run minify經過一大堆 warn 之後, 沒有出現 error , 也沒有出現 npm-debug.log 檔案, 證明沒有錯誤, 現在來分析一下大小:
ls
-hldist
-rw-r--r-- 1 zhang
staff 1.4m
nov 14 14:08
bundle
.js-rw-r--r-- 1 zhang
staff 528k
nov 14 14:10
bundle
.min
.js
bundle.js 有 1.4m , 不過 bundle.min.js 被壓縮到了 528k , 看起來還不錯, 還可以再優化一下, 那就是 gzip 壓縮, 通常在伺服器上都會啟用:
gzip dist/bundle.min.js -c > dist/bundle.min.js.gz && ls -hl dist經過 gzip 之後, bundle.min.js.gz 有 129k , 似乎應該可以了吧? 但是我覺得還有優化的空間。-rw-r--r-- 1 zhang staff 1.4m nov 14
14:08 bundle.js
-rw-r--r-- 1 zhang staff 528k nov 14
14:10 bundle.min.js
-rw-r--r-- 1 zhang staff 129k nov 14
14:15 bundle.min.js.gz
es2016 (es6) 有乙個很重要的特性, 那就是 tree shaking , 可以移除專案中不需要的部分, 接下來我們使用 rollup 進行 tree shaking 。
為了能夠使用 tree shaking , 我們需要將專案中的 typescript 編譯成 es2015 指令碼, 需要修改 typescript 配置, 新建乙個tsconfig-es2015.json
的配置檔案, 內容如下:
,在 angular2 應用中, 包含了乙個即時編輯器 (jit) , 在預編譯好的應用中不是必需的, 使用 angular2 的 aot 編譯可以移除即時編譯器 (jit) , 因此需要先安裝 angular 的編譯器:"files": [
]}
npm
i-d @angular/compiler-cli
為了使用 aot 編譯出來的檔案, main.ts 檔案也要做相應的修改, 將 main.ts 檔案另存為main-aot.ts
, 修改內容如下:
import from
'@angular/core';
import from
'@angular/platform-browser';
enableprodmode();
const platform = platformbrowser();
不再使用platform-browser-dynamic, 改為使用platform-browser
。
同時 index.html 也另存為index-aot.html
, 也做相應的修改, 不在載入 system.js , 改為直接使用最終的 aot 指令碼:
head>
angular2基礎環境搭建
搭建環境前提 node和npm要安裝好了。搭建環境步驟 在搭建環境步驟裡,要建立乙個package.json檔案,裡面描述的是一些命令,還有我們angular2專案要引用的一些包。而包的安裝就用到了npm包管理器。使用 npm install 就能夠自動安裝我們需要的一些包,不需要我們再乙個乙個的找...
Angular2環境搭建
一 環境準備 先安裝node,npm會與node一起安裝到環境中。node準備 npm準備 二 安裝環境 首先安裝ts的 為啥安裝它,ng2使用的開發語言是ts 接著安裝angular cli,按照官方文件嗦的,這是個工具,能夠幫你快速建立ng2的工程,做個工程空架子吧,可以省很多事.如果想用cnp...
angular2 環境配置
看到angular發布正式版,心動不已準備測試下。看著官網教程,使用了cli建立專案,在命令列中鍵入 npm install g angular cli 如果安裝過以前的版本,請執行以下命令,進行更新 npm uninstall g angular cli npm cache clean npm i...