<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答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 樣式封裝方式來改變這一些行為,它包括三個值:

      1. ViewEncapsulation.Emulated 默認,采用額外添加一些 _ngcontent 屬性來限定樣式隔離
      2. ViewEncapsulation.Native 采用Shadow Dom隔離方式
      3. ViewEncapsulation.None 不隔離
      4. 三、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
        主站蜘蛛池模板: 99精品视频免费在线观看| 国产精品玖玖美女张开腿让男人桶爽免费看 | 亚洲人成网网址在线看| 国产在线精品免费aaa片| 亚洲人成无码网站| 影音先锋在线免费观看| 亚洲一区二区三区国产精品无码| 美女内射无套日韩免费播放 | 亚洲国产综合久久天堂| 立即播放免费毛片一级| 免费在线观看污网站| 日本黄页网址在线看免费不卡| 亚洲第一视频在线观看免费| 国产精品黄页免费高清在线观看| 亚洲色成人中文字幕网站| 女人体1963午夜免费视频| 99久久亚洲综合精品成人网| 成人免费黄色网址| 亚洲一级特黄大片无码毛片| 国产精品hd免费观看| 亚洲AV日韩精品久久久久久久| 免费观看激色视频网站bd| 亚洲熟妇AV日韩熟妇在线| 国产国产人免费视频成69大陆 | 亚洲毛片在线观看| 在线观看特色大片免费视频| 国产成人精品亚洲| 亚洲精品白浆高清久久久久久| 久久综合给合久久国产免费| 成人区精品一区二区不卡亚洲| 大学生高清一级毛片免费| 91av免费在线视频| 亚洲天堂视频在线观看| 午夜两性色视频免费网站| 色www永久免费| 亚洲AV色吊丝无码| 亚洲精品成a人在线观看| 18禁美女黄网站色大片免费观看 | 精品国产污污免费网站入口 | 男女男精品网站免费观看| 亚洲国产综合专区在线电影|