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

vue前端性能優(yōu)化之分包策略、異步組件、Gzip壓縮

這篇具有很好參考價值的文章主要介紹了vue前端性能優(yōu)化之分包策略、異步組件、Gzip壓縮。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、Gzip壓縮

二、異步組件

三、分包策略

最后


?

????????項目的性能優(yōu)化是有完整項目經(jīng)歷的開發(fā)者都會遇到得一個問題。這是整個項目開發(fā)最后的一步,也是最關(guān)鍵的一步,做一個項目并不是單單完成功能就算結(jié)束了,作為開發(fā)者,更要站在用戶角度去進行項目體驗,響應(yīng)快速的程序交互會直接提升程序的印象分。反之,如果頁面間的交互響應(yīng)緩慢、時??D,無論程序功能再多再強大,讓人很難去想去體驗第二次。這個時候,性能優(yōu)化尤為重要。

一、Gzip壓縮

?1.服務(wù)端nginx Gzip壓縮配置

????????nginx開啟gzip壓縮后,就會幫你來把數(shù)據(jù)(靜態(tài)資源 和 接口數(shù)據(jù))進行壓縮,然后傳入到客戶端,客戶端來解壓,然后在進行代碼的讀取,經(jīng)過測試之后,發(fā)現(xiàn)資源包體積會被壓縮到原來的20%左右,這樣大大減少了資源的請求時間,提升了頁面的響應(yīng)速度。Gzip壓縮是項目必備的優(yōu)化方法,也是最直觀有效的。

// nginx.conf ?
http {  ?
    gzip on; // 開啟gzip壓縮 
    gzip_types *; // 對響應(yīng)的MIME types在text/html的基礎(chǔ)上進行擴展配置,*匹配所有MIME types ...             
    gzip_static  on; // 開啟gzip_static壓縮
    // 詳細的配置信息可以參考nginx官網(wǎng): http://nginx.org/en/docs/http/ngx_http_gzip_module.html 
}

2.客戶端插件Gzip壓縮

? ? ? ? webpack項目使用的compression-webpack-plugin插件

// 這里使用的 vue.config.js, webpack.config.js 里面內(nèi)容大部分相同,只是vue.config.js里面是鏈?zhǔn)秸{(diào)用的。
 ?const compressionWebpackPlugin = require('compression-webpack-plugin')
 ?configureWebpack: {
 ? ?plugins: [new compressionWebpackPlugin({
 ? ? ?filename: '[path].gz[query]', //壓縮后的文件名
 ? ? ?algorithm: 'gzip', // 壓縮格式 有:gzip、brotliCompress,
 ? ? ?test: /.(js|css|svg)$/,
 ? ? ?threshold: 10240,// 只處理比這個值大的資源,按字節(jié)算
 ? ? ?minRatio: 0.8, //只有壓縮率比這個值小的文件才會被處理,壓縮率=壓縮大小/原始大小,如果壓縮后和原始文件大小沒有太大區(qū)別,就不用壓縮
 ? ? ?deleteOriginalAssets: false //是否刪除原文件,最好不刪除,服務(wù)器會自動優(yōu)先返回同名的.gzip資源,如果找不到還可以拿原始文件
 ?  })],

? ? ? ? vite項目使用的vite-plugin-compression插件

// vite.config.ts
import viteCompression from 'vite-plugin-compression';
// https://vitejs.dev/config/
export default defineConfig({
 ?plugins: [
 ? ? ?...
 ? ? ?viteCompression({
 ? ? ? ? ?verbose: true, // 默認即可
 ? ? ? ? ?disable: false, //開啟壓縮(不禁用),默認即可
 ? ? ? ? ?deleteOriginFile: false, //刪除源文件
 ? ? ? ? ?threshold: 10240, //壓縮前最小文件大小
 ? ? ? ? ?algorithm: 'gzip', //壓縮算法
 ? ? ? ? ?ext: '.gz', //文件類型
 ? ?  })
 ? ? ?...
  ],
})

二、vue異步組件

? ? ? ?異步組件在需要渲染的時候才會被加載,同時延遲加載其余組件,從而提高了首次加載速度,減輕了頁面渲染負擔(dān),并且也減輕了服務(wù)器壓力。在項目打包后,如果一個vue頁面import了太多的資源,那么這個頁面生成一個js資源包而且體積很大,所以進入頁面的時候需要下載完這個資源包才會渲染,這樣服務(wù)端的壓力很大,可能出現(xiàn)響應(yīng)時間長、請求阻塞等問題。使用異步組件后,打包后會將這些組件打包為單獨的js包,這樣就將一個資源分割成了n個,服務(wù)端可以發(fā)起多個http請求來下載資源,大大提升了響應(yīng)時間與渲染速度。

?????????1.vue2異步組件

????????使用 Vue.component 方法與 resolve => require(['./yourComponent.vue'], resolve) 結(jié)合使用。require語法將會告訴 webpack,自動將你的構(gòu)建代碼切割成多個包,這些包會通過 http 請求加載。

Vue.component('async-component', function(resolve) {
  require(['./components/AsyncComponent.vue'], resolve)
})

? ? ? ? 2.vue3異步組件

? ? ? ? 使用vue3提供的?defineAsyncComponent?方法

import { defineAsyncComponent } from "vue"
const LoginPopup = defineAsyncComponent(() => import("./components/LoginPopup.vue"))

?使用異步組件之前主頁面打包完資源包6M

vue 分包加載,前端

使用異步組件之后主頁面打包完資源包,把頁面掛載的組件單獨打包

?

?

三、分包策略

? ? ? ? ?其實異步組件就是vue的一種分包策略,但是由于前期考慮不足,導(dǎo)致開發(fā)完成后遇到嚴重的性能問題,這時候才考慮性能的優(yōu)化方案,使用vue異步組件之后,發(fā)現(xiàn)存在bug,因為引入組件都使用了ref標(biāo)記,由于ref在組件沒有實例的時候是獲取不到的,所以會報undeifiend。沒辦法只能通過vite工具來實現(xiàn),在vite運行時是基于ESMoudle,打包是基于rollup,所以配置rollup打包即可。如下設(shè)置即可分割單個vue文件,比較過后與異步組件分割的文件大小幾乎一致。

// vite.config.ts
build: {
    // rollup 配置
    rollupOptions: {
        output: {
            manualChunks(id: any): string {
                if (id.includes("style.css")) {
                    // 需要單獨分割那些資源 就寫判斷邏輯就行
                    return 'src/style.css';
		        }
                if (id.includes("HelloWorld.vue")) {
                    // 單獨分割hello world.vue文件
                    return 'src/components/HelloWorld.vue';
		        }
                //  最小化拆分包
                if (id.includes("node_modules")) {
                    return id
                            .toString()
                            .split("node_modules/")[1]
                            .split("/")[0]
                            .toString();
		        }
            }
        }
    }
}

???????分包之前,只有一個主頁js+css兩個資源包,首屏加載請求時間需要1.5s,點擊登錄等2s才有反應(yīng),而且這個時間是對網(wǎng)速有一定要求的,網(wǎng)絡(luò)延遲高甚至要等7-8s,這對于用戶體驗來說是非常差的。

vue 分包加載,前端

? ? ? ?分包之后響應(yīng)時間不到1s,雖然還很慢,但是請求高并發(fā)使請求時間趨于穩(wěn)定,最大的文件體積不到原來的1/10,更多的是文件的編譯時間,請求資源時間不會有太大影響。

??vue 分包加載,前端

?

最后

?????????前端的優(yōu)化方案肯定不止這些,還有許多包括webpack的代碼優(yōu)化插件、刪除打包后的map文件、腳本優(yōu)化、靜態(tài)資源優(yōu)化、懶加載、預(yù)編譯、SSR渲染等等方案,但是大的方面弄好這三個就可以了,其他都是需要在編碼過程中需要注意與優(yōu)化的細節(jié)。文章來源地址http://www.zghlxwxcb.cn/news/detail-707449.html

到了這里,關(guān)于vue前端性能優(yōu)化之分包策略、異步組件、Gzip壓縮的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 小程序:使用分包異步化解決一個分包引入另一個分包的組件/函數(shù)的問題

    小程序:使用分包異步化解決一個分包引入另一個分包的組件/函數(shù)的問題

    我們一般使用小程序插件的時候,喜歡將其放在分包中,因為插件體積會打包進主包內(nèi),很容易造成主包體積超過 2M 從而無法發(fā)布,我們暫且叫這個有插件的分包叫分包P,這時候另外兩個業(yè)務(wù)分包XY,想引入這個分包P里的插件(插件里包含了幾個組件和一些接口函數(shù))。 方

    2024年02月02日
    瀏覽(23)
  • 【前端知識】React 基礎(chǔ)鞏固(三十四)——組件中的異步操作及優(yōu)化

    【前端知識】React 基礎(chǔ)鞏固(三十四)——組件中的異步操作及優(yōu)化

    通過組件的生命周期來完成網(wǎng)絡(luò)請求,網(wǎng)絡(luò)請求的異步代碼直接放在組件中 通過redux來管理異步網(wǎng)絡(luò)請求 在store中引入中間件 redux-thunk 構(gòu)建 fetchHomeMultidataAction ,將原本在組件中的異步請求代碼放入到actionCreators.js中 改寫原來的category.jsx,派發(fā)異步請求的dispatch 查看運行結(jié)果

    2024年02月15日
    瀏覽(38)
  • 性能優(yōu)化-webpack配置gzip

    3步搞定,實測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日
    瀏覽(18)
  • 學(xué)習(xí)Vue:響應(yīng)式原理與性能優(yōu)化策略

    性能優(yōu)化是Vue.js應(yīng)用開發(fā)中的一個關(guān)鍵方面,而深入了解響應(yīng)式原理并采用有效的性能優(yōu)化策略可以顯著提升應(yīng)用的性能。本文將解釋響應(yīng)式原理并介紹一些性能優(yōu)化策略,旨在幫助您構(gòu)建高性能的Vue.js應(yīng)用。 Vue.js的響應(yīng)式原理是通過利用 Object.defineProperty 或 Proxy 來追蹤數(shù)據(jù)

    2024年02月11日
    瀏覽(29)
  • 解決前端性能瓶頸:高效處理大量數(shù)據(jù)渲染與復(fù)雜交互的策略與優(yōu)化方法

    解決前端性能瓶頸:高效處理大量數(shù)據(jù)渲染與復(fù)雜交互的策略與優(yōu)化方法

    ??祝屏幕前的小伙伴們每天都有好運相伴左右,一定要天天開心!??? ????作者主頁: 喔的嘛呀???? 目錄 引言 一、分頁加載數(shù)據(jù) 二、虛擬滾動 三、懶加載 四、數(shù)據(jù)緩存 五、減少重繪和回流 六、優(yōu)化圖片和資源: 七、合并壓縮文件 八、使用Web Workers? 在前端開發(fā)

    2024年04月27日
    瀏覽(21)
  • vue前端開發(fā)自學(xué),異步加載組件,提升用戶端的客戶體驗度

    vue前端開發(fā)自學(xué),異步加載組件,提升用戶端的客戶體驗度

    vue前端開發(fā)自學(xué),異步加載組件,提升用戶端的客戶體驗度!現(xiàn)實項目開發(fā)時,組件的數(shù)量非常龐大,如果都是一口氣加載完,對手機用戶來說,體驗度會很差。因此,非常有必要使用異步加載。 那就是,用到了哪個組件,再去加載它就行了。用不到的時候,不加載它。下面看

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

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

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

    2024年02月02日
    瀏覽(21)
  • 瀏覽器層面優(yōu)化前端性能(1):Chrom組件與進程/線程模型分析

    現(xiàn)階段的瀏覽器運行在一個單用戶,多合作,多任務(wù)的操作系統(tǒng)中。一個糟糕的網(wǎng)頁同樣可以讓一個現(xiàn)代的瀏覽器崩潰。其原因可能是一個插件出現(xiàn)bug,最終的結(jié)果是整個瀏覽器以及其他正在運行的標(biāo)簽被銷毀。 現(xiàn)代操作系統(tǒng)已經(jīng)非常健壯了,它讓應(yīng)用程序在各自的進程中運

    2023年04月09日
    瀏覽(24)
  • 前端工程化實戰(zhàn):React 模塊化開發(fā)、性能優(yōu)化和組件化實踐

    前端工程化實戰(zhàn)是指通過組織工作流程、使用工具和技術(shù)來提高前端開發(fā)效率和質(zhì)量的一種方法。常見的前端工程化實踐包括模塊化開發(fā)、自動化構(gòu)建、代碼檢查和測試、性能優(yōu)化等。下面將簡要介紹模塊化開發(fā)、性能優(yōu)化和組件化實踐。 模塊化開發(fā) 在 React 中實現(xiàn)模塊化開

    2023年04月10日
    瀏覽(100)
  • vite3、vue 項目打包分包進階-組件分包

    vite3、vue 項目打包分包進階-組件分包

    在上次的分包實戰(zhàn)后,我在服務(wù)器上測試了分包后的項目效果很好,但是還不夠理想,因為在我的Login頁面我使用的動態(tài)組件,其中包含注冊組件register、忘記密碼組件renew,我們知道vite的打包機制是由各個分入口匯總到一個總文件,那么我們該怎么做呢? vite打包實戰(zhàn),在這篇

    2023年04月23日
    瀏覽(27)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包