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

angular共享依賴的解決方案分享

 更新時間:2020年10月15日 09:11:56   作者:wszgrcy  
這篇文章主要給大家介紹了關(guān)于angular共享依賴解決方案的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

webpack-ng-dll-plugin

  • ng版本可用的dll插件,路子比較野

用途

  • 提高打包速度
  • 代碼復(fù)用(微前端依賴共享)

使用

  • 首先根據(jù)個人熟悉程度選擇@angular-devkit/build-webpack,@angular-builders/custom-webpack,ngx-build-plus

第一個是官方的,后兩個是第三方的,但是確認(rèn)你有練過之前,請不要選擇官方的...

作者在測試的時候選擇的是@angular-builders/custom-webpack

  • 先構(gòu)建dll,建議使用空項目來創(chuàng)建dll,因為目前開發(fā)中并沒考慮到一些復(fù)雜邏輯的實現(xiàn)及相關(guān)第三方包的依賴關(guān)系保存(full模式應(yīng)該可以實現(xiàn),理論)
  • 然后在構(gòu)建時引用

引用就是webpack的正常引用插件就ok了

嘗鮮

下面的函數(shù)過濾了index.html,styles,polyfills,License的輸出,并且禁用了runtimeChunk

 setNgDllPlugin(
 config,
 {
  //webpack 的out相關(guān)配置
  output: {
  filename: 'dll.js',
  },
  ngDllPluginOptions: {
   // dll的資源清單導(dǎo)出配置
  path: path.join(__dirname, 'dist', 'manifest.json'),
  name: 'TLIB',
  format: true,
  filter: {
   // 過濾模式,full全量,auto相對于項目,manual 手動指定過濾項(需要設(shè)置map)
   mode: 'auto',
  },
  },
 },
 options
 );

自定義

相關(guān)配置需要參考(暫時沒寫文檔,需要查看源碼)

 config.plugins.push(new NgDllPlugin(option.ngDllPluginOptions));

引用

// 這里的context可以理解為代碼(應(yīng)用代碼)相對于哪個文件夾解析(不是打包出來的dll.js,如果正確引用,你會發(fā)現(xiàn)把dll.js刪掉,也不會影響打包),如果發(fā)現(xiàn)打包出來的東西沒有使用這個,應(yīng)該就是這個配置錯了
 config.plugins.push(
 new webpack.DllReferencePlugin({
  context: path.resolve(__dirname),
  manifest: require('./dist/manifest.json'),
 })
 );

演示地址

https://github.com/wszgrcy/ng-cli-plugin-demo

可能解鎖的技術(shù)

  • 分體式路由加載

正常情況下,哪怕是動態(tài)加載的路由,也是與項目一同打包,只不過是打包為兩個文件

主體項目先打包,然后再單獨開發(fā)懶加載路由模塊

  • web-component的使用率上升

雖然ng已經(jīng)實現(xiàn)了這個,但是由于每次一大包,就相當(dāng)于打了一個單獨項目,非常龐大,使用dll后則會縮小到一個可怕的程度,副作用接近0

目前(可能)存在的問題

  • 資源清單輸出的是全量的引用,但是實際上,只有mode:'full'時,才等價

沒修改之一主要是影響不大,加上調(diào)試需要

  • 如果生成dll的項目中有動態(tài)加載模塊,可能有未知影響

dll在設(shè)計的時候根本沒考慮過動態(tài)模塊之類的東西,完全就是只打一個大包

盡量使用空項目生成dll

  • auto只代表當(dāng)前生成項目可以達到完全引用,如果你修改了項目,那么必須重新構(gòu)建項目(額.看起來比較廢物的一個模式)

其實如果項目代碼足夠多(各種種類),修改代碼是不影響的,但是比如有些引入第一次使用,或者h(yuǎn)tml模板中使用了一些新的東西,都需要重新構(gòu)建

待改進

主動排除一部分永遠(yuǎn)無法使用的導(dǎo)出

為什么dll比直接打包大

  • 即使dll打包現(xiàn)在使用到了ng的aot,搖樹等相關(guān)優(yōu)化技術(shù),但是仍然有個致命問題,就是導(dǎo)出名,默認(rèn)打包時,所有名字都會被優(yōu)化(混淆),而dll打包就必須暴露這個名字,當(dāng)完全暴露時,就會出現(xiàn)體積增長

目前用空項目生成出的dll(包括rxjs,router,common,core),全量暴力是440k(也就是說當(dāng)其他包使用時這些文件都會在dll中查找),選擇性導(dǎo)出最小化啟動在216k作用,最終估計應(yīng)該平均在300k左右

  • 目前使用的技術(shù),只能1.全量導(dǎo)出,2.選擇可用導(dǎo)出,這其實就有一個副作用存在,全量導(dǎo)出時.不僅一些不使用的依賴被導(dǎo)出了,還有些內(nèi)部引用的(比如ɵangular_packages_core_core_h)也被強制導(dǎo)出了,從而增加了包大小

后期,其實可以整理一個永不導(dǎo)出的列表,進行排除,從而減小體積

  • 傳統(tǒng)打包是多個模塊打包一個模塊,中間很多依賴都是屬于內(nèi)部依賴,所以精簡了很多代碼,dll的這種打包屬于多模塊,因此每個模塊都有出口,之間的引用也是用的模塊之間的引用,所以即使最小化dll也會比打包的多40k左右

總結(jié)

到此這篇關(guān)于angular共享依賴解決方案的文章就介紹到這了,更多相關(guān)angular共享依賴解決內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Angularjs使用directive自定義指令實現(xiàn)attribute繼承的方法詳解

    Angularjs使用directive自定義指令實現(xiàn)attribute繼承的方法詳解

    這篇文章主要介紹了Angularjs使用directive自定義指令實現(xiàn)attribute繼承的方法,結(jié)合實例形式較為詳細(xì)的分析了基于directive自定義指令實現(xiàn)attribute繼承的具體步驟與相關(guān)技巧,需要的朋友可以參考下
    2016-08-08
  • Angular使用Restful的增刪改

    Angular使用Restful的增刪改

    今天小編就為大家分享一篇關(guān)于Angular使用Restful的增刪改,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 基于Angular中ng-controller父子級嵌套的相關(guān)屬性詳解

    基于Angular中ng-controller父子級嵌套的相關(guān)屬性詳解

    今天小編就為大家分享一篇基于Angular中ng-controller父子級嵌套的相關(guān)屬性詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • AngularJS發(fā)送異步Get/Post請求方法

    AngularJS發(fā)送異步Get/Post請求方法

    今天小編就為大家分享一篇AngularJS發(fā)送異步Get/Post請求方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • AngularJS入門教程之AngularJS指令

    AngularJS入門教程之AngularJS指令

    AngularJS指令用于擴展HTML。本文給大家介紹AngularJS入門教程之AngularJS指令,感興趣的朋友一起學(xué)習(xí)吧
    2016-04-04
  • Angularjs中數(shù)據(jù)綁定的實例詳解

    Angularjs中數(shù)據(jù)綁定的實例詳解

    這篇文章主要介紹了Angularjs中數(shù)據(jù)綁定的實例詳解的相關(guān)資料,這里提供簡單實例,大家可以參考下,希望通過本文可以掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • 在Angular中使用NgTemplateOutlet創(chuàng)建可重用組件的流程步驟

    在Angular中使用NgTemplateOutlet創(chuàng)建可重用組件的流程步驟

    在 Angular 中,使用 NgTemplateOutlet 而不是創(chuàng)建特定組件,可以使組件在不修改組件本身的情況下輕松修改為各種用例,在本文中,您將接受一個現(xiàn)有組件并重寫它以使用 NgTemplateOutlet,需要的朋友可以參考下
    2024-03-03
  • angularjs中ng-bind-html的用法總結(jié)

    angularjs中ng-bind-html的用法總結(jié)

    這篇文章主要介紹了angularjs中ng-bind-html的用法總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 最棒的Angular2表格控件

    最棒的Angular2表格控件

    最好的Angular2表格控件,滿足更小、更快、更熟悉的基本要求,感興趣的小伙伴們可以參考一下
    2016-08-08
  • 詳解Angular Forms中自定義ngModel綁定值的方式

    詳解Angular Forms中自定義ngModel綁定值的方式

    在Angular應(yīng)用中有兩種方式來實現(xiàn)表單綁定,但是對于一些特殊的表單控件沒法實現(xiàn),這篇文章主要介紹了詳解Angular Forms中自定義ngModel綁定值的方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12

最新評論

共和县| 聊城市| 双牌县| 鄂温| 桑植县| 鹿邑县| 岳西县| 陵川县| 阳谷县| 望城县| 韶山市| 舟曲县| 尉犁县| 报价| 西丰县| 大石桥市| 康马县| 墨竹工卡县| 五华县| 桐乡市| 鄢陵县| 墨竹工卡县| 南阳市| 长汀县| 上蔡县| 鸡东县| 长武县| 会东县| 离岛区| 拉萨市| 康乐县| 那坡县| 博罗县| 庆元县| 三原县| 岳西县| 望城县| 贵州省| 盐山县| 平南县| 定兴县|