国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

發布Angular應用至生產環境的方法

來源:懂視網 責編:小采 時間:2020-11-27 22:02:49
文檔

發布Angular應用至生產環境的方法

發布Angular應用至生產環境的方法:兩年前, 寫過一篇使用rollup 來 為生產環境編譯 Angular 2 應用 的文章, 因為當時還沒有 angular-cli 項目。 而如今 Angular 已經到了 7.x 版本, 對應的工具也是非常的完善, 也就不在使用 rollup 來處理 angular 項目。 angular-
推薦度:
導讀發布Angular應用至生產環境的方法:兩年前, 寫過一篇使用rollup 來 為生產環境編譯 Angular 2 應用 的文章, 因為當時還沒有 angular-cli 項目。 而如今 Angular 已經到了 7.x 版本, 對應的工具也是非常的完善, 也就不在使用 rollup 來處理 angular 項目。 angular-

兩年前, 寫過一篇使用rollup 來 為生產環境編譯 Angular 2 應用 的文章, 因為當時還沒有 angular-cli 項目。 而如今 Angular 已經到了 7.x 版本, 對應的工具也是非常的完善, 也就不在使用 rollup 來處理 angular 項目。

angular-cli 用起來雖然方便, 但是針對生產環境編譯的話, 還是有一些地方要注意的, 接下來就介紹我在項目部署時的一些做法。

合理拆分功能模塊, 按需加載

一個系統往往功能非常多, 因此就要根據項目的實際情況劃分功能模塊,一個功能模塊對應一個 NgModule , 編譯成一個獨立的 js 文件, 再結合 angular 的路由技術進行按需加載,就這一功能點來說, angular 的支持已經非常的完善了。

const routes: Routes = [
 { path: '', redirectTo: '/home', pathMatch: 'full' },
 { path: 'home', loadChildren: './home/home.module#HomeModule' },
 { path: 'about', loadChildren: './about/about.module#AboutModule' },
 {
 path: 'arcgis',
 loadChildren: './arcgis/arcgis.module#ArcgisModule',
 canLoad: [EsriLoaderGuard]
 }
];

這一點經常容易被忽視, 曾經就出現過猶豫沒有合理劃分模塊, 導致編譯出來的 js 文件高達 5 兆, 造成的客戶體驗非常差。 (甚至還出現開發機內存不足,無法成功編譯的情況)

預先壓縮 js 文件

當然, 僅僅考合理劃分 js 模塊的話, 還往往不太夠, 因為單個模塊也可能會比較大, 可能會超過 1 兆, 特別是使用了一些第三方控件(ng-bootstrap, ng-zorro 等)的情況下。

針對這種情況, 通常還需要對編譯生成的 js 文件進行 gzip 壓縮, 因此在執行 ng build --prod 編譯之后, 再繼續執行下面的 shell 命令:

find dist -name "*.js" -print0 | xargs -0 gzip -k

當然, 如果發現編譯生成 css 文件比較大的話, 也可以通過下面的命令進行壓縮:

find dist -name "*.css" -print0 | xargs -0 gzip -k

以一個僅僅使用了 ng-bootstrap 的模板項目為例, 生成的 js 文件如下所示:

1.8K dist/ng-seed/4.1495aba38157395f4a2d.js
 1.7K dist/ng-seed/5.ec7eb27ea7c8eee53bcc.js
 482K dist/ng-seed/main.6ee651175769ea64ed5f.js
 37K dist/ng-seed/polyfills.5d61d41949cb87471fa8.js
 2.2K dist/ng-seed/runtime.c66e13242c809a55bd2f.js

其中的 main.6ee651175769ea64ed5f.js 就有 482KB , 而經過 gzip 壓縮之后, 文件大小顯著減?。?/p>

1.8K dist/ng-seed/4.1495aba38157395f4a2d.js
1.0K dist/ng-seed/4.1495aba38157395f4a2d.js.gz
1.7K dist/ng-seed/5.ec7eb27ea7c8eee53bcc.js
888B dist/ng-seed/5.ec7eb27ea7c8eee53bcc.js.gz
482K dist/ng-seed/main.6ee651175769ea64ed5f.js
124K dist/ng-seed/main.6ee651175769ea64ed5f.js.gz
 37K dist/ng-seed/polyfills.5d61d41949cb87471fa8.js
 12K dist/ng-seed/polyfills.5d61d41949cb87471fa8.js.gz
2.2K dist/ng-seed/runtime.c66e13242c809a55bd2f.js
1.2K dist/ng-seed/runtime.c66e13242c809a55bd2f.js.gz

main.6ee651175769ea64ed5f.js.gz 有 124KB , 只有原來的 1/4 。

一般來說, 對于 angular 項目編譯出的 js 文件, gzip 壓縮能減少 3/4 甚至 4/5 的體積, 這樣將會顯著減輕網絡傳輸的壓力。

使用 nginx 作為服務器

為什么使用 nginx 作為前端服務器呢? 原因如下:

支持傳輸預先壓縮的 js 文件

將預先壓縮好的 .js.gz 和原來的 .js 文件一起上傳到服務器, 只要在 nginx 服務器的配置文件上加一句 gzip_static on; 即可啟用,這樣在客戶端請求 .js 文件時, nginx 會先檢查一下是否存在對應的 .js.gz 文件, 如果存在的話, 就直接返回 .js.gz 文件的內容, 從而省去了在服務端進行壓縮的過程, 節省服務器的資源。

location /ng-app {
 root /usr/share/nginx/html;
 index index.html index.htm;
 gzip_static on;
 try_files $uri /ng-app/index.html;
}

作為后臺接口的網關

nginx 支持反向代理, 可以作為后臺接口的網關, 這樣可以省去一些跨域調用 (cors) 的問題, 一般的反向代理配置如下:

location /api {
 proxy_pass http://api-server:8080/api;
 proxy_read_timeout 600s;
 proxy_redirect off;
 proxy_set_header Host $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
}

官方的 docker 鏡像

nginx 有 docker 的官方鏡像, 部署、升級都是非常的方便。 不得不說docker 確實是好東西, 用了就停不下來了。

這幾點都是在項目中積累的一些小技巧, 如果想要了解細節, 請查看這個ng-seed 項目。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

發布Angular應用至生產環境的方法

發布Angular應用至生產環境的方法:兩年前, 寫過一篇使用rollup 來 為生產環境編譯 Angular 2 應用 的文章, 因為當時還沒有 angular-cli 項目。 而如今 Angular 已經到了 7.x 版本, 對應的工具也是非常的完善, 也就不在使用 rollup 來處理 angular 項目。 angular-
推薦度:
標簽: 應用 發布 方式
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 97在线亚洲| 国产成人综合久久精品尤物 | 欧美成人一区二区三区在线视频 | 亚洲日本韩国欧美 | 国产亚洲一区二区精品 | heyzo国产| 日韩亚洲欧洲在线com91tv | 日韩一页| 成人久久久精品乱码一区二区三区 | 欧美日韩啪啪 | 色老头久久久久久久久久 | 欧美 日韩 视频 | 成人一a毛片免费视频 | 亚洲一区综合 | 免费一级a毛片在线播 | 国产成人青青热久免费精品 | 日韩另类| 国产日韩免费 | 亚洲第一区se | 卡通动漫亚洲综合 | 亚洲精品美女久久777777 | 国产欧美一区二区精品性色99 | 国内精品一区二区三区αv 国产最新进精品视频 | 91久久精品国产一区二区 | 一区二区三区在线视频播放 | 欧美xxxxxbbbb | 国产一区二区在线视频 | 亚洲国产日韩在线精品频道 | 国产va在线播放 | 国产最新网站 | 国产精品成人免费 | 日韩系列第一页 | 99热成人精品国产免国语的 | 亚洲国产成人久久一区久久 | 日韩亚洲第一页 | 国产91精品一区二区视色 | 国产一区二区三区高清 | 欧美日韩国产亚洲人成 | 一级毛片免费毛片毛片 | 亚洲国产精品热久久 | 国产大片www |