国产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 Cli打包的事

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

簡單談談關于Angular Cli打包的事

簡單談談關于Angular Cli打包的事:本文主要給大家介紹了關于Angular Cli打包的事,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。 一、引言 Angular從開發再到生產環境部署都離不開Angular Cli工具集,而Angular Cli本質上是使用 Webpack(當前使用版本為2)
推薦度:
導讀簡單談談關于Angular Cli打包的事:本文主要給大家介紹了關于Angular Cli打包的事,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。 一、引言 Angular從開發再到生產環境部署都離不開Angular Cli工具集,而Angular Cli本質上是使用 Webpack(當前使用版本為2)

本文主要給大家介紹了關于Angular Cli打包的事,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

一、引言

Angular從開發再到生產環境部署都離不開Angular Cli工具集,而Angular Cli本質上是使用 Webpack(當前使用版本為2) 來打包資源。

Webpack 本身并不復雜,略用過一點都清楚,只需要創建一個 webpack.config.js 的文件并簡單的配置,就可以把一個復雜的應用所有文件全部打包成若干靜態資源文件。

然而一個復雜的應用免不了使用到第三方類庫,當這些外部類庫與自身業務腳本聯系在一起時,就產生一個大家都關心的問題:性能優化。

Angular Cli在構建一個含有路由、表單、HTTP等基本的Angular應用大約在150KB左右,就Angular體量而言,自己寫一個 Webpack 也很難能優化到這個大小。所以說,Angular Cli是很有良心的作品。然而極大的簡化對 Webpack 的使用,何樂不為呢?

本文我將介紹Angular Cli的一些配置在生產環境中所產生的效果,希望能讓大家由于一些不合理的行為可能會導致文件體量的上升在改善這一問題時有所幫助。

二、.angular-cli.json 配置

Angular Cli 的配置文件是根目錄下的 .angular-cli.json,而會影響文件體量的只有 styles、scripts 兩個節點。

1、scripts

scripts 節點最后會生成一個獨立的 scripts.bundle.js 文件,一般我們會把一些外部非Angular組件的類庫放置在這里,比如:jQuery。

"scripts": [
 "../node_modules/jquery/dist/jquery.js",
 "../test.ts"
]

scripts 節點還允許 *.ts 文件。

2、styles

styles 節點最后會生成一個獨立的 styles.bundle.css 文件。除此之外,組件內(styles 或 styleUrls)的樣式會全部打包進 .js 文件中。

正如 jQuery 一樣,如果我們需要引用第三方UI庫,比如:bootstrap 那么:

"styles": [
 "../node_modules/bootstrap/scss/bootstrap.scss",
 "styles.scss"
]

默認情況引用的是 ./src/styles.scss,你可以繼續導入外部其它外部樣式文件。

@import "variables";
@import "nav";
@import "layout";

組件類樣式

Angular組件內使用 styles 或 styleUrls 的樣式會全部打包進相應模塊的 .js 文件中;并且樣式生成存儲的方式是無法改變的。

encapsulation

順帶提一下。既然是Angular組件,如果說此時還需要外部的樣式這顯得有點框住組件獨立性的特點,然而組件樣式是否污染其它組件呢?我們通過指定 encapsulation 樣式封裝方式來改變這一些行為,它包括三個值:

  • ViewEncapsulation.Emulated 默認,采用額外添加一些 _ngcontent 屬性來限定樣式隔離
  • ViewEncapsulation.Native 采用Shadow Dom隔離方式
  • ViewEncapsulation.None 不隔離
  • 三、ng build 指令

    Angular Cli 會根據 .angular-cli.json 配置(apps/root、apps/main)決定從哪里開始啟動。因此,當執行:

    ng build --prod --build-optimizer

    --build-optimizer 從 1.3.0-rc.5 才開始支持。相比較之前 Cli 版本,Tree-Shaking 力度更大,當然相應的文件大小也更輕。

    會從根模塊開始逐一對每一個模塊進行打包,并保存在每一個文件當中。若采用路由遲延加載模塊的話,會在 inline.js 中加上相應的動態加載腳本代碼。

    1、文件名哈希

    Angular Cli 提供了 --output-hashing 參數,來指定文件名哈希模式,它包括四種:

    模式 說明
    none 不哈希
    all 所有(若 --prod 時默認)
    media 限資源文件
    bundles 限webpack打包后的js文件

    注意:這里并不會哈希 assets 文件夾,因為該文件夾采用是直接復制的形式。

    2、指定輸出

    Angular應用很多時候可能是放在現有WEB服務的某個目錄下(例如:v2),因此,訪問地址會變成:https://www.demo.com/v2。但會發現,無法加載應用;這是由 index.html 會包括一句:

    <base href="/" rel="external nofollow" >

    倒置所有腳本資源的加載URL指向根目錄。Angular Cli 提供一個參數改變該值。

    ng build --prod --bh /v2/

    往往在開發過程中總需要依賴一些圖片資源的訪問,倘若在代碼中采用絕對路徑,那就懵逼了,所以建議不要在代碼中使用絕對路徑訪問資源文件。

    四、優化方式

    1、輸出包體組成分析文件

    Webpack 有一個非常好用的工具叫 webpack-bundle-analyzer,會自動分析包體組成結構,并以一種可視化的方式顯示。

    首先,生成 stats.json 包體組成結構的統計文件。

    ng build --prod --stats-json

    最后訪問 webpack analyse 導入生成的JSON文件即可。

    利用可視化的視覺可以了解一些優化的細節。

    2、Rollup 搖樹優化

    所謂Rollup是指Webpack2會把那些應用中未使用的引用代碼除掉,但不會刪除這些代碼,所以就需要配合 UglifyJs 能夠智能的移除這些未使用的代碼。從而減少包體大小。

    而Agnular應用是基于Typescript,因此Angular Cli提供了一個叫 Angular Build Optimizer 插件,將 Typescript 編譯結果轉化成更友好的UglifyJs版本。這樣UglifyJs就能夠更有效的移除那些未使用的代碼。

    Angular Cli只需要加上 --build-optimizer 參數就可以,在一些情況下壓縮的還是很厲害的。

    ng build --prod --build-optimizer

    3、導出Webpack配置

    Angular Cli 是基于 Webpack 封閉的一個Angular命令行工具,但并不表示我們無法了解細節。

    Webpack 的核心是 webpack.config.js 文件,然后 Angular Cli 構建的項目并看不到該文件。

    但是可以透過 ng eject (更多細節見wiki) 轉化成 Webapck 項目所需要的配置文件與運行配置指令。這時候會在根目錄產生 webpack.config.js 文件。

    不過,同時也會改變了 package.json 與 .angular-cli.json 的一些配置,若你只想查看 Webpack 配置信息,可以還原這些配置即可。

    結論

    本文只是日常做一次總結,都是一些網絡中可以查閱到的知識,并無新意。而上面所有 Angular Cli 相關命令,都可以在 Wiki 都有相應的描述。

    好了,

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

    文檔

    簡單談談關于Angular Cli打包的事

    簡單談談關于Angular Cli打包的事:本文主要給大家介紹了關于Angular Cli打包的事,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。 一、引言 Angular從開發再到生產環境部署都離不開Angular Cli工具集,而Angular Cli本質上是使用 Webpack(當前使用版本為2)
    推薦度:
    標簽: 打包 cli angular
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 欧美曰韩 | 欧美高清在线精品一区二区不卡 | 亚洲综合精品一区二区三区中文 | 久久久久国产成人精品亚洲午夜 | 欧美综合图区亚洲综合图区 | 国产一区二区三区成人久久片 | 欧美极品在线观看 | 日韩精品成人免费观看 | 国产精品一级片 | 亚洲国产欧美日韩 | 久久精品成人一区二区三区 | 国产精品免费视频网站 | 亚洲欧美中文日韩在线v日本 | 日韩欧美极品 | 日本特级淫片免费 | 91精品一区二区 | 日韩va亚洲va欧美va浪潮 | 国产激情一区二区三区成人91 | 91久久精品国产免费一区 | 日本三级电影网址 | 国产亚洲一区二区三区在线观看 | 色视频久久 | 中文国产成人精品少久久 | 热久久国产欧美一区二区精品 | 最新国产精品亚洲 | 国产精品123区 | 日韩123 | 免费日本黄色网址 | 欧美日韩性视频一区二区三区 | 日韩电影在线 | 国产精品va在线观看一 | 另类区 | 国产伦精品一区二区三区在线观看 | 日韩欧美高清一区 | 在线观看日韩视频 | 最新国产精品电影入口 | 中文字幕第13亚洲另类 | 国产第一夜 | 一边摸一边叫床一边爽 | 国产精品久久久久一区二区 | 福利视频一区 |