最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Angular6項目打包優(yōu)化的實現(xiàn)方法

 更新時間:2019年12月15日 09:25:18   作者:一個開發(fā)的許許  
這篇文章主要給大家介紹了關于Angular6項目打包優(yōu)化的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Angular6具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

可以從以下三個角度優(yōu)化:

  • 輸出包體組成分析文件
  • Rollup 搖樹優(yōu)化
  • 導出Webpack配置,通過修改webpack配置優(yōu)化打包

讓我們來逐一分析。

輸出包體組成分析文件

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

使用步驟:

  1. 打開項目,命令行輸入:npm install webpack-bundle-analyzer --save-dev
  2. 命令行輸入項目打包命令加--stats-json
  3. 在package.json文件的"scripts"里配置里,添加"bundle-report": "webpack-bundle-analyzer dist/wp/stats.json"
  4. 命令行輸入:npm run bundle-report
  5. 瀏覽器輸入:http://127.0.0.1:8888/ 查看分析圖,根據(jù)分析圖了解一些優(yōu)化的細節(jié)

備注:在不影響性能的情況下,盡量少用Base64引入圖片,把圖片放在本地引入,不會打包到項目中去,但使用Base64編碼的圖片,會以圖片的1.5倍體積打包到項目中去,且若該圖片為精靈圖,使用圖片時采取了div切圖,切了幾次,就會打包幾次,占用體積非常大。具體可以參考以下:https://www.imooc.com/article/27804

Rollup 搖樹優(yōu)化

所謂Rollup是指Webpack2會把那些應用中未使用的引用代碼除掉,但不會刪除這些代碼,所以就需要配合 UglifyJs 能夠智能的

移除這些未使用的代碼。從而減少包體大小。

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

方法一:Angular Cli只需要在打包命令中加上 --build-optimizer 參數(shù)就可以,在一些情況下壓縮的還是很厲害的(但我做優(yōu)化的過程中,使用了這樣的方法,毫無作用)

方法二:去掉沒有用到的模塊,從而減小體積

1、moment

對于 ng-cli 的項目:

(1)運行npm uninstall moment

(2)運行npm install moment --save-dev

(3).angular-cli.json 文件的 scripts

里加上"../node_modules/moment/min/moment.min.js"

(4)typings.d.ts 文件的最后加上 declare var moment: any;

(5)將項目中的代碼 import * as moment from 'moment';全部干掉

備注:如果想應用其中某個庫則需要(以 fr 為例)

引入:import "moment/locale/fr";

使用:moment.locale("fr");

對于 webpack 的項目:

(1)在 webpack 配置文件的 plugins 里加上

new webpack.ContextReplacementPlugin(/moment[\/\\]locale$/, / /)

或者

new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/)

備注:如果想應用其中某個庫則需要(以 de、fr、hu 為例),在 webpack 配置文件的 plugins 里加上
new webpack.ContextReplacementPlugin(/moment[\/\\]locale$/, /de|fr|hu/)

2、@ng-bootstrap/ng-bootstrap

如果在項目中要用到 @ng-bootstrap/ng-bootstrap 庫,要注意一下使用方法,如果按照其官網(wǎng)示例方式引入的話,在打包的時候會把其下所有模塊引入進來,不管你用沒用到。所以要想辦法把沒有用到的模塊干掉,只引入需要的模塊。

以時間組件為例,官網(wǎng)示例:

// 根模塊
import {NgbModule} from '@ng-bootstrap/ng-bootstrap';

@NgModule({
 declarations: [AppComponent, ...],
 imports: [NgbModule.forRoot(), ...], 
 bootstrap: [AppComponent]
})
export class AppModule {
}
// 其他需要模塊
import {NgbModule} from '@ng-bootstrap/ng-bootstrap';

@NgModule({
 declarations: [OtherComponent, ...],
 imports: [NgbModule, ...],
})
export class OtherModule {
}

更改為:

// 根模塊
import {NgbDatepickerModule, NgbTimepickerModule} from '@ng-bootstrap/ng-bootstrap';

@NgModule({
 declarations: [AppComponent, ...],
 imports: [NgbDatepickerModule.forRoot(), NgbTimepickerModule.forRoot() ...], 
 bootstrap: [AppComponent]
})
export class AppModule {
}
// 其他需要模塊
import {NgbDatepickerModule, NgbTimepickerModule} from '@ng-bootstrap/ng-bootstrap';

@NgModule({
 declarations: [OtherComponent, ...],
 imports: [NgbDatepickerModule, NgbTimepickerModule, ...],
})
export class OtherModule {
}

導出Webpack配置

方法一:eject(Angular6可能不支持)

方法二:工具庫ngx-build-plus

我期望通過導出Webpack配置的方式,使scss文件與main.js打包分離,仍在實踐中,成功后續(xù)更。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

相關文章

  • AngularJS中的攔截器實例詳解

    AngularJS中的攔截器實例詳解

    這篇文章主要介紹了AngularJS中的攔截器實例詳解的相關資料,需要的朋友可以參考下
    2017-04-04
  • Angularjs 基礎入門

    Angularjs 基礎入門

    這篇文章主要介紹了Angularjs 基礎入門的一些知識,需要的朋友可以參考下
    2014-12-12
  • AngularJS在IE下取數(shù)據(jù)總是緩存問題的解決方法

    AngularJS在IE下取數(shù)據(jù)總是緩存問題的解決方法

    這篇文章主要介紹了AngularJS在IE下取數(shù)據(jù)總是緩存問題的解決方法,分析了問題的原因及AngularJS設置禁止IE對ajax緩存的實現(xiàn)方法,需要的朋友可以參考下
    2016-08-08
  • AngularJS基礎 ng-model 指令詳解及示例代碼

    AngularJS基礎 ng-model 指令詳解及示例代碼

    本文主要介紹AngularJS ng-model 指令,這里幫大家整理了ng-model的基本資料,并附有示例代碼,有需要的小伙伴可以參考下
    2016-08-08
  • angular json對象push到數(shù)組中的方法

    angular json對象push到數(shù)組中的方法

    下面小編就為大家分享一篇angular json對象push到數(shù)組中的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • Angular如何在應用初始化時運行代碼詳解

    Angular如何在應用初始化時運行代碼詳解

    這篇文章主要給大家介紹了關于Angular如何在應用初始化時運行代碼的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-06-06
  • AngularJS中實現(xiàn)用戶訪問的身份認證和表單驗證功能

    AngularJS中實現(xiàn)用戶訪問的身份認證和表單驗證功能

    這篇文章主要介紹了AngularJS中實現(xiàn)用戶訪問的身份認證及表單驗證功能的方法,Angular是Google開發(fā)的一款瀏覽器端的高人氣JavaScript框架,需要的朋友可以參考下
    2016-04-04
  • 詳解AngularJS如何實現(xiàn)跨域請求

    詳解AngularJS如何實現(xiàn)跨域請求

    跨域請求一直是網(wǎng)頁編程中的一個難題,在過去,絕大多數(shù)人都傾向于使用JSONP來解決這一問題。不過現(xiàn)在,我們可以考慮一下W3C中一項新的特性——CORS(Cross-Origin Resource Sharing)了。
    2016-08-08
  • Angular2實現(xiàn)自定義雙向綁定屬性

    Angular2實現(xiàn)自定義雙向綁定屬性

    本篇文章主要介紹了Angular 2實現(xiàn)自定義 雙向綁定 屬性,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • AngularJS 打開新的標簽頁實現(xiàn)代碼

    AngularJS 打開新的標簽頁實現(xiàn)代碼

    本文通過實例代碼給大家介紹了angularJS 打開新的標簽頁方法,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-09-09

最新評論

尉氏县| 西华县| 馆陶县| 凤城市| 临桂县| 平阴县| 合肥市| 五指山市| 滁州市| 临西县| 和林格尔县| 天台县| 石城县| 遂川县| 宝鸡市| 辛集市| 即墨市| 合山市| 红安县| 扶沟县| 奎屯市| 钟山县| 梅河口市| 凌源市| 昭苏县| 肥东县| 句容市| 贡觉县| 肥城市| 若羌县| 冕宁县| 乐昌市| 蕲春县| 津南区| 黄龙县| 舒兰市| 松溪县| 凌海市| 应城市| 观塘区| 扎鲁特旗|