亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何打包優化Angular6項目

發布時間:2021-06-03 10:43:09 來源:億速云 閱讀:188 作者:小新 欄目:web開發

這篇文章主要介紹如何打包優化Angular6項目,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

可以從以下三個角度優化:

  • 輸出包體組成分析文件

  • Rollup 搖樹優化

  • 導出Webpack配置,通過修改webpack配置優化打包

讓我們來逐一分析。

輸出包體組成分析文件

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

使用步驟:

  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/ 查看分析圖,根據分析圖了解一些優化的細節

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

Rollup 搖樹優化

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

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

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

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

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

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 庫,要注意一下使用方法,如果按照其官網示例方式引入的話,在打包的時候會把其下所有模塊引入進來,不管你用沒用到。所以要想辦法把沒有用到的模塊干掉,只引入需要的模塊。

以時間組件為例,官網示例:

// 根模塊
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打包分離,仍在實踐中,成功后續更。

以上是“如何打包優化Angular6項目”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

彝良县| 腾冲县| 桑日县| 承德市| 启东市| 阜阳市| 四子王旗| 武川县| 上思县| 东宁县| 克拉玛依市| 琼中| 龙山县| 苏尼特右旗| 西吉县| 马山县| 新巴尔虎右旗| 左权县| 云和县| 宣威市| 法库县| 梁山县| 隆回县| 易门县| 澄迈县| 专栏| 泾源县| 宜良县| 平武县| 新龙县| 张掖市| 佛山市| 弋阳县| 苏尼特右旗| 内丘县| 新乐市| 甘孜县| 寿阳县| 潢川县| 时尚| 北安市|