国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

webpack優(yōu)化前端框架性能

這篇具有很好參考價(jià)值的文章主要介紹了webpack優(yōu)化前端框架性能。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

webpack優(yōu)化目的

  1. 提升開發(fā)體驗(yàn)
  2. 提升打包構(gòu)建速度
  3. 減少代碼體積
  4. 優(yōu)化代碼運(yùn)行性能

1. 提升開發(fā)體驗(yàn)

提升開發(fā)體驗(yàn)使用 SourceMap

  1. 問題:正常情況下,開發(fā)環(huán)境不輸出dist 文件 直接保存在內(nèi)存中,瀏覽器控制臺source中可以看到,
    但是報(bào)錯(cuò)提示行數(shù)不正確,它會以打包后的行數(shù)進(jìn)行提示

  2. 解釋:sourceMap 可以生成源代碼與打包代碼一一映射的關(guān)系,方便找到出錯(cuò)源行數(shù)

  3. 使用方案:有兩種模式,cheap-module-source-map | source-map
    source-map 行列都提示,運(yùn)行慢 c-m-s-m 提示行出錯(cuò)
    這里有歧義:視頻講解生產(chǎn)用s-m 開發(fā)用 c-m-s-m
    實(shí)際可能用 生產(chǎn):禁用 開發(fā):用c-m-s-m

  4. 正常使用:在webpack配置文件中 devtool:“cheap-module-source-map” 直接添加一句即可

2. 提升打包構(gòu)建速度

提升打包構(gòu)建速度(開發(fā)模式)

  1. HotModuleReplacement (HMR熱模塊替換) devServer 中 hot:true(W5默認(rèn)值) !!!生產(chǎn)環(huán)境不推薦使用

  2. 注意:js文件不會熱替換,如果需要可以在main.js中寫上
    //判斷是否支持HMR功能,如果支持js也熱替換
    if(module.hot){
    module.hot.accept(./js/count)
    }

  3. 在react 和 vue 中 vue框架內(nèi)部集成了 React Hot Loader 來解決
    react hot loader 下載之后 添加到babel-loader的option選項(xiàng)中的plugins中,并在根組件使用,使用方法chatgpt

提升打包速度 oneOf

  1. 使用 :webpack配置文件中 創(chuàng)建一個(gè)對象oneOf包裹所有的loader,
  2. 原理: 打包時(shí)oneOf只使用一個(gè)loader 速度更快,不用遍歷所有的loader

提升打包速度 include(包含)/exclude(排除)

  1. 使用 :include:path.resolve(__dirname,“…/src”) __dirname當(dāng)前執(zhí)行腳本的絕對路徑
    exclude:“node_modules”
  2. 注意:主要針對js 文件babel 和 eslint

提升第二次打包速度 Cache (緩存)

  1. 原理:js文件每次打包都要經(jīng)過eslint檢查,babel編譯,可以對其緩存
  2. 使用:在babel的option選項(xiàng)配置中 開啟緩存 eslint 插件中也開啟緩存

提升打包速度 Thead

  1. 原理:對于js文件的處理主要是 eslint、babel、teser(內(nèi)部供生產(chǎn)環(huán)境壓縮js文件使用)三個(gè)工具,通過使用Thead可以開啟電腦多進(jìn)程同時(shí)處理js文件
  2. 注意:在特別耗時(shí)的操作中使用,因?yàn)槊總€(gè)進(jìn)程的啟動大約有600ms左右開銷
  3. 使用:
    1. 獲取cpu的核數(shù),每個(gè)電腦不一樣
    node.js核心模塊直接使用
    const os = require(“os”)
    cpu核數(shù)
    const threads = os.cpus().length
    2. 安裝 npm i thread-loader -D
    3. 在babel-loader 和 eslint插件中開啟多進(jìn)程
    4. 使用TeserWebpackPlugin(無需下載)開啟多進(jìn)程壓縮js文件

3. 減少代碼體積

減少代碼體積(Tree Shaking)

  1. Tree Shaking 不需要配置webpack默認(rèn)開啟
  2. 作用:旨在移除未使用的代碼(未引用的模塊、函數(shù)、變量等),從而減少最終打包后的文件大小。

減少代碼體積(Babel)

  1. 原理:babel會為編譯的每個(gè)文件都插入輔助代碼,使代碼的體積過大
    Babel對一些公共方法使用了非常小的輔助代碼,比如extend. 默認(rèn)情況下會被添加到每一個(gè)需要它的文件中。
    你可以使用runtime將這些輔助代碼作為一個(gè)獨(dú)立模塊,來避免重復(fù)引入。
  2. 介紹:runtime 禁用了babel自動對每個(gè)文件的runtime注入,而是引入;
    并且使所有的輔助代碼從這里引用
  3. 使用: npm i @babel/plugin-transform-runtime -D
    插件放到babel中

減少代碼體積(Image minimizer)

  1. 原理:打包時(shí)對圖片進(jìn)行壓縮
  2. 使用: npm i image-minimizer-webpack-plugin imagemin -D
    無損壓縮:npm install imagemin-gifsicle imagemin-jpegtran imagemin-optipng imagemin-svgo -D
    有損壓縮:npm install imagemin-gifsicle imagemin-mozjpeg imagemin-pngquant imagemin-svgo -D
  3. 注意:有損、無損安裝一個(gè)即可,這里在安裝的時(shí)候可能會安裝不上,使用cnpm單獨(dú)安裝imagemin-gifsicle

優(yōu)化代碼的運(yùn)行性能 (code split)

  1. 原理:打包時(shí)會將所有的js文件打包到一個(gè)文件中,code split 可以
    將打包生成的文件進(jìn)行分割,生成多個(gè)js文件,需要那個(gè)文件就加載那個(gè)文件

  2. 使用:見wpcodeSplitTest,webpack配置 無需下載

  3. 在動態(tài)加載文件時(shí),會單獨(dú)進(jìn)行打包,當(dāng)需要時(shí)自動加載

4.優(yōu)化代碼的運(yùn)行性能

優(yōu)化代碼的運(yùn)行性能 (preload / prefetch)

  1. 原理: 我們在使用split之后,代碼按需加載會卡頓。
    preload :告訴瀏覽器立即加載資源(優(yōu)先級高,只加載當(dāng)前頁面)
    prefetch :告訴瀏覽器在空閑時(shí)間加載 (可以加載當(dāng)前頁面。也可以加載其他頁面)
    他們都只會加載資源,并不執(zhí)行
    都有緩存

  2. 缺點(diǎn):兼容性差,preload不兼容ie,prefetch(60%)不兼容safri 建議使用preload(92%瀏覽器支持)

  3. 使用: npm i -D preload-webpack-plugin
    const PreloadWebpackPlugin = require(“preload-webpack-plugin”)
    放到htmlplugin后面,
    new PreloadWebpackPlugin()

優(yōu)化代碼的運(yùn)行性能 (network cache)

  1. 原理 :當(dāng)緩存文件發(fā)生變化,一般所有都更新,加上這個(gè)只更新修改的文件,其他緩存文件不變
  2. 使用 :
    runtimeChunk: {
    name: (entrypoint) => runtime~${entrypoint.name}.js
    }

優(yōu)化代碼的運(yùn)行性能 (core.js)

  1. 原理: 我們使用babel打包時(shí)能對es6進(jìn)行編譯轉(zhuǎn)換,但是promise、async等無法編譯,放到一些瀏覽器就會有兼容性問題,直接報(bào)錯(cuò)

  2. 概念:core.js專門用來做es6以上的polyfill(補(bǔ)?。?/p>

  3. 使用:
    npm安裝
    修改main.js
    import “core-js”; 會有一個(gè)問題是打包出來的文件比較大

     所以我們可以根據(jù)需要的兼容引入 
     import "core-js/es/promise"
    
     更好的方法
     在babel.config.js中配置
       presets: [
        [
          "@babel/preset-env",
         {
            useBuiltIns: "usage",  // 按需引入corejs
             corejs: 3,
         },
       ],
      ],
    

優(yōu)化代碼的運(yùn)行性能 (PWA)

漸進(jìn)式網(wǎng)絡(luò)應(yīng)用程序 離線時(shí)也能繼續(xù)運(yùn)行功能(正常情況下不可以)

使用:插件webpack Workbox 見官網(wǎng)
npm install workbox-webpack-plugin --save-dev
const WorkboxPlugin = require(‘workbox-webpack-plugin’);
plugins: [
new HtmlWebpackPlugin({
title: ‘Output Management’,
title: ‘Progressive Web Application’,
}),
new WorkboxPlugin.GenerateSW({
// 這些選項(xiàng)幫助快速啟用 ServiceWorkers
// 不允許遺留任何“舊的” ServiceWorkers
clientsClaim: true,
skipWaiting: true,
}),
],

在main.js 添加
 if ('serviceWorker' in navigator) {

window.addEventListener(‘load’, () => {
navigator.serviceWorker.register(‘/service-worker.js’).then(registration => {
console.log('SW registered: ', registration);
}).catch(registrationError => {
console.log('SW registration failed: ', registrationError);
});
});
}文章來源地址http://www.zghlxwxcb.cn/news/detail-616839.html

到了這里,關(guān)于webpack優(yōu)化前端框架性能的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 前端知識點(diǎn)、技巧、webpack、性能優(yōu)化(持續(xù)更新~)

    前端知識點(diǎn)、技巧、webpack、性能優(yōu)化(持續(xù)更新~)

    可以把? 圖片轉(zhuǎn)換成? base64? 放在src里面? ?減少服務(wù)器請求? 但是圖片會稍微大一點(diǎn)點(diǎn) 以上的方法不需要一個(gè)一個(gè)自己轉(zhuǎn)化 可以在webpack? 進(jìn)行 性能優(yōu)化? ?(官網(wǎng)有詳細(xì)描述)

    2024年03月10日
    瀏覽(18)
  • 用webpack做一些前端打包時(shí)的性能優(yōu)化

    一.webpack 的五個(gè)核心概念 1.Entry:入口指示,webpack以哪個(gè)文件為入口起點(diǎn)開始打包,分析構(gòu)建內(nèi)部依賴圖 2.output:輸出指示,webpack打包后的資源bundles輸出到哪里去,以及如何命名 3.loader :loader讓webpack能夠去處翻譯理那些非js文件(img css…) 4.Plugins :Plugins插件可以用于執(zhí)行范圍

    2024年02月12日
    瀏覽(19)
  • 前端(八)——深入探索前端框架中的Diff算法:優(yōu)化視圖更新與性能提升

    前端(八)——深入探索前端框架中的Diff算法:優(yōu)化視圖更新與性能提升

    ??博主:小貓娃來啦 ??文章核心: 深入探索前端框架中的Diff算法:優(yōu)化視圖更新與性能提升 前端框架中的diff算法是一種比較兩個(gè)虛擬DOM樹之間差異的算法。在更新頁面時(shí),為了提高性能,前端框架通常會先生成新的虛擬DOM樹,然后通過diff算法比較新舊虛擬DOM樹的差異,

    2024年02月16日
    瀏覽(16)
  • webpack的性能優(yōu)化(一)——分包優(yōu)化

    webpack的性能優(yōu)化(一)——分包優(yōu)化

    ????????默認(rèn)情況下,Webpack 會將所有代碼構(gòu)建成一個(gè)單獨(dú)的包,這在小型項(xiàng)目通常不會有明顯的性能問題,但伴隨著項(xiàng)目的推進(jìn),包體積逐步增長可能會 導(dǎo)致應(yīng)用的響應(yīng)耗時(shí)越來越長 。歸根結(jié)底這種將所有資源打包成一個(gè)文件的方式存在兩個(gè)弊端: 「 資源冗余 」 :客

    2024年02月02日
    瀏覽(21)
  • webpack5性能優(yōu)化

    webpack5性能優(yōu)化

    ?注意:開啟緩存,配置后打包是就能緩存babel webpack.common.js文件命中緩存cacheDirectory ????????Directory/d??rekt?ri/目錄; ? 測試:? 打包后的結(jié)果:? 注意:打包后promise的打包文件會變化文件名 ?? 注意:引入第三方模塊,模塊可能有許多東西是我們不需要的,而引入時(shí)會默認(rèn)

    2024年02月16日
    瀏覽(22)
  • webpack性能優(yōu)化方案(詳細(xì))

    webpack性能優(yōu)化方案(詳細(xì))

    ?? 個(gè)人網(wǎng)站:【紫陌】【筆記分享網(wǎng)】 ?? 想尋找共同學(xué)習(xí)交流、共同成長的伙伴,請點(diǎn)擊【前端學(xué)習(xí)交流群】 文章最后有作者l聯(lián)系方式(備注進(jìn)群) webpack的性能優(yōu)化較多,我們可以對其進(jìn)行分類: 優(yōu)化一:打包后的結(jié)果,上線時(shí)的性能優(yōu)化。(比如分包處理、減小包體

    2024年02月16日
    瀏覽(18)
  • 【萬字解析】Webpack 優(yōu)化構(gòu)建性能(分析->優(yōu)化)

    全局安裝 webpack-bundle-analyzer 插件 運(yùn)行 webpack-bundle-analyzer 開始打包,需要獲取所有的依賴模塊 搜索所有的依賴項(xiàng),這需要占用一定的時(shí)間,即搜索時(shí)間,那么就確定了: 需要優(yōu)化的第一個(gè)時(shí)間就是 搜索時(shí)間 。 解析所有的依賴模塊(解析成瀏覽器可運(yùn)行的代碼) Webpack 根據(jù)

    2024年01月21日
    瀏覽(48)
  • 性能優(yōu)化-webpack配置gzip

    3步搞定,實(shí)測1.3Mjs壓縮到363k,體積減少70% 1.裝包 yarn add compression-webpack-plugin --dev 2.配置webpack 打開config/webpack.config.js 1)在 module.exports 導(dǎo)出函數(shù)前面引入插件 2)添加配置 位置,搜索new HtmlWebpackPlugin(在其上邊添加配置

    2024年02月15日
    瀏覽(19)
  • 前端框架前置學(xué)習(xí)Webpack(1) 常用webpack配置

    前端框架前置學(xué)習(xí)Webpack(1) 常用webpack配置

    ? ? ? ? 本質(zhì)上,Webpack是用于現(xiàn)代JavaScript應(yīng)用程序的 靜態(tài)模塊打包工具 .當(dāng)webpack處理應(yīng)用程序時(shí),它會在內(nèi)部從一個(gè)或多個(gè)入口點(diǎn)構(gòu)建一個(gè) 依賴圖(dependency graph) ,然后將你項(xiàng)目中所需的每一個(gè)模塊組合成一個(gè)或多個(gè)bundles,它們均為靜態(tài)資源,用于展示你的內(nèi)容. 靜態(tài)模塊: 指的是

    2024年01月21日
    瀏覽(25)
  • 使用 Webpack 優(yōu)化前端開發(fā)流程

    在現(xiàn)代前端開發(fā)中,構(gòu)建工具的選擇和優(yōu)化流程的設(shè)計(jì)至關(guān)重要。Webpack 是一個(gè)功能強(qiáng)大的前端構(gòu)建工具,能夠優(yōu)化我們的開發(fā)流程,提高開發(fā)效率和項(xiàng)目性能。本文將介紹如何使用 Webpack 來優(yōu)化前端開發(fā)流程。 代碼優(yōu)化和資源管理也是前端項(xiàng)目中不可忽視的一部分。我們將

    2024年02月15日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包