欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

發(fā)布Angular應(yīng)用至生產(chǎn)環(huán)境的方法

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

創(chuàng)新互聯(lián)自2013年創(chuàng)立以來,公司以做網(wǎng)站、成都網(wǎng)站制作、系統(tǒng)開發(fā)、網(wǎng)絡(luò)推廣、文化傳媒、企業(yè)宣傳、平面廣告設(shè)計等為主要業(yè)務(wù),適用行業(yè)近百種。服務(wù)企業(yè)客戶上1000家,涉及國內(nèi)多個省份客戶。擁有多年網(wǎng)站建設(shè)開發(fā)經(jīng)驗。為企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、創(chuàng)意設(shè)計、宣傳推廣等服務(wù)。 通過專業(yè)的設(shè)計、獨特的風(fēng)格,為不同客戶提供各種風(fēng)格的特色服務(wù)。

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

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

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

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]
  }
];

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

預(yù)先壓縮 js 文件

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

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

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

當(dāng)然, 如果發(fā)現(xiàn)編譯生成 css 文件比較大的話, 也可以通過下面的命令進(jìn)行壓縮:

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 , 而經(jīng)過 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 的體積, 這樣將會顯著減輕網(wǎng)絡(luò)傳輸?shù)膲毫Α?/p>

使用 nginx 作為服務(wù)器

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

支持傳輸預(yù)先壓縮的 js 文件

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

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

作為后臺接口的網(wǎng)關(guān)

nginx 支持反向代理, 可以作為后臺接口的網(wǎng)關(guān), 這樣可以省去一些跨域調(diào)用 (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 確實是好東西, 用了就停不下來了。

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

當(dāng)前名稱:發(fā)布Angular應(yīng)用至生產(chǎn)環(huán)境的方法
網(wǎng)站地址:http://aaarwkj.com/article40/jjggeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、網(wǎng)站制作、企業(yè)網(wǎng)站制作電子商務(wù)、微信公眾號、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
国产av剧情精品麻豆| 久久久久久狠狠亚洲综合| 99热这里在线只有精品| 日本在线中文字幕乱码| 高清日本一区二区三区不卡片| 亚洲av不卡一区二区在线观看| 亚洲熟妇中文字幕五十中出| 国产女同一区二区三区久久| 免费看男人添女人无遮挡| 亚洲大陆免费在线视频| 日本一区二区三区视频| 日韩欧美中文字幕在线等| 久久精品无人区乱码一区二区| 色哟哟网站在线观看入口| 国产有码视频一区二区三区| 最新日本欧美一区二区| 日韩一区二区三区免费播放 | 一区二区三区欧美影片| 99麻豆久久久精品国产| 久久久久久国产精品亚洲| 亚洲成人日韩国产欧美| 亚洲av一区二区三区| 萌白的所有视频在线观看| 国产一区二区精品久久岳| 欧美香蕉高清视频免费| 小仙女精品经典三级永久| 免费啪啪视频一区二区| 久久国产精品久久国产精品| 国产原创av剧情六区| 青青草原在线视频伊人| 欧美日韩黄色的三级视频| 男女做爰高清无遮挡免费| 亚洲品质一区二区三区| 九九免费在线视频观看| 中文字幕亚洲无级av| 国产成人色污在线观看| 亚洲欧美半夜激情一区二区| 国产在线一区二区三区观看| 亚洲一区二区三区久久精品| 午夜福利视频在线观看| 欧美日韩一区二区三区色拉拉|