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

vue 性能優(yōu)化方案

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

????????首先說(shuō)明一下,我優(yōu)化的項(xiàng)目是基于vue3 + ts的一個(gè)項(xiàng)目,使用的是webpack5的版本,不一定非要是webpack5經(jīng)測(cè)試4也可以正常使用

????????若想查看自己當(dāng)前項(xiàng)目的webpack版本,可以找node_modules目錄下面的webpack/package.json文件,查看文件中的version,如下圖

productionsourcemap,vue.js,性能優(yōu)化,前端

下面開(kāi)始進(jìn)入正題

一、關(guān)閉productionSourceMap

?????????productionSourceMap的作用在于定位問(wèn)題,打包時(shí)會(huì)生成.map文件,在生產(chǎn)環(huán)境就可以在瀏覽器查看到輸出的信息具體是在哪一行,但相應(yīng)的包的體積也會(huì)變大,將其設(shè)置為false則不生成.map文件

module.exports = defineConfig({
  productionSourceMap: false,
})

二、開(kāi)啟gzip

? ? ? ? gzip并不能很好的減小dist包的體積,個(gè)人覺(jué)的主要作用是在你build后,會(huì)生成兩份代碼,一份壓縮的,一份未壓縮的,在請(qǐng)求時(shí)服務(wù)器會(huì)優(yōu)先選擇壓縮的版本進(jìn)行返回

// 判斷是否是生產(chǎn)環(huán)境
const isProduction = process.env.NODE_ENV !== "development";
module.exports = {
  configureWebpack: config => {
    // 若是生產(chǎn)環(huán)境,則執(zhí)行以下代碼
    if (isProduction) {
      //gzip壓縮
      const productionGzipExtensions = ["html", "js", "css"];
      config.plugins.push(
        new CompressionWebpackPlugin({
          filename: "[path][base].gz", // 有的版本是[path].gz[query] 根據(jù)情況而定
          algorithm: "gzip",
          test: new RegExp("\\.(" + productionGzipExtensions.join("|") + ")$"),
          threshold: 10240, // 只有大小大于該值的資源會(huì)被處理 10240
          minRatio: 0.8, // 只有壓縮率小于這個(gè)值的資源才會(huì)被處理
          deleteOriginalAssets: false, // 刪除原文件
        })
      );
    }
  }
}

上面配置完后,還需配置下nginx

? ? ? ? 在ngxin.conf文件,在http模塊填入以下內(nèi)容

 # 開(kāi)啟gzip
    gzip on;

    # 啟用gzip壓縮的最小文件,小于設(shè)置值的文件將不會(huì)壓縮
    gzip_min_length 1k;

    # gzip 壓縮級(jí)別,1-9,數(shù)字越大壓縮的越好,也越占用CPU時(shí)間,后面會(huì)有詳細(xì)說(shuō)明
    gzip_comp_level 2;

    # 進(jìn)行壓縮的文件類(lèi)型。javascript有多種形式,后面的圖片壓縮不需要的可以自行刪除
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;

    # 是否在http header中添加Vary: Accept-Encoding,建議開(kāi)啟
    gzip_vary on;

    # 設(shè)置壓縮所需要的緩沖區(qū)大小     
    gzip_buffers 4 16k;

然后就可以啟動(dòng)nginx查看效果了,因?yàn)槲疫@是測(cè)試項(xiàng)目,沒(méi)有多少東西,所以結(jié)果時(shí)間相差不大,大家可以自行測(cè)試

????????????????????????????????????????????????????????????????未壓縮的

productionsourcemap,vue.js,性能優(yōu)化,前端

????????????????????????????????????????????????????????????????壓縮后的

productionsourcemap,vue.js,性能優(yōu)化,前端

?三、開(kāi)啟CDN

? ? ? ? CDN主要是將一些可以在CDN服務(wù)器上引用到的插件不進(jìn)行打包,直接通過(guò)CDN鏈接,從而減小包的體積

? ? ? ? 1、首先配置好各個(gè)鏈接地址

? ? ? ? 若不知道地址是什么的可通過(guò)BootCDN - Bootstrap 中文網(wǎng)開(kāi)源項(xiàng)目免費(fèi) CDN 加速服務(wù)進(jìn)行查詢(xún),下面是關(guān)于cdn鏈接地址后綴的介紹

Vue的各種版本介紹:

1. cjs(兩個(gè)版本都是完整版,包含編譯器)

????????vue.cjs.js

????????vue.cjs.prod.js(開(kāi)發(fā)版,代碼進(jìn)行了壓縮)

2. global(這四個(gè)版本都可以在瀏覽器中直接通過(guò)scripts標(biāo)簽導(dǎo)入,導(dǎo)入之后會(huì)增加一個(gè)全局的Vue對(duì)象)

????????vue.global.js(完整版,包含編譯器和運(yùn)行時(shí))

????????vue.global.prod.js(完整版,包含編譯器和運(yùn)行時(shí),這是開(kāi)發(fā)版本,代碼進(jìn)行了壓縮) ????????vue.runtime.global.js

????????vue.runtime.global.prod.js

3. browser(四個(gè)版本都包含esm,瀏覽器的原生模塊化方式,可以直接通過(guò)<script type="module" />的方式來(lái)導(dǎo)入模塊)

????????vue.esm-browser.js

????????vue.esm-browser.prod.js

????????vue.runtime.esm-browser.js

????????vue.runtime.esm-browser.prod.js

4. bundler(這兩個(gè)版本沒(méi)有打包所有的代碼,只會(huì)打包使用的代碼,需要配合打包工具來(lái)使用,會(huì)讓Vue體積更?。?/p>

????????vue.esm-bundler.js

????????bue.runtime.esm-bundler.js

? ? ? ? 2、找到需要的cdn鏈接后,進(jìn)行如下配置

// 本地環(huán)境是否需要使用cdn
const devNeedCdn = false

const cdn = {
  // cdn:模塊名稱(chēng)和模塊作用域命名(對(duì)應(yīng)window里面掛載的變量名稱(chēng))
  externals: {
      vue: 'Vue',
      vuex: 'Vuex',
      'vue-router': 'VueRouter',
      'element-plus': 'ElementPlus',
      'axios': 'axios',
      'echarts': 'echarts'
  },
  // cdn的css鏈接
  css: [
    'https://cdn.bootcdn.net/ajax/libs/element-plus/2.2.12/theme-chalk/index.min.css'
  ],
  // cdn的js鏈接
  js: [
      'https://cdn.bootcdn.net/ajax/libs/vue/3.2.37/vue.global.min.js',
      'https://cdn.bootcdn.net/ajax/libs/vuex/4.0.2/vuex.global.min.js',
      'https://cdn.bootcdn.net/ajax/libs/vue-router/4.1.3/vue-router.global.min.js',
      'https://cdn.bootcdn.net/ajax/libs/element-plus/2.2.12/index.full.min.js',
      'https://cdn.bootcdn.net/ajax/libs/element-plus/2.2.12/locale/zh-cn.min.js',
      'https://cdn.bootcdn.net/ajax/libs/echarts/5.3.3/echarts.min.js',
      'https://cdn.bootcdn.net/ajax/libs/axios/0.27.2/axios.js'
  ]
}
module.exports = {
    chainWebpack: config => {
        // ============注入cdn start============
        config.plugin('html').tap(args => {
        // 生產(chǎn)環(huán)境或本地需要cdn時(shí),才注入cdn
        if (isProduction || devNeedCdn) args[0].cdn = cdn
        return args
    })
    },
    configureWebpack: config => {
        // 用cdn方式引入,則構(gòu)建時(shí)要忽略相關(guān)資源
        if (isProduction || devNeedCdn) config.externals = cdn.externals
    }
}

然后配置你的靜態(tài)資源文件,目錄:public/index.html中,配置如下

<!DOCTYPE html>
<html lang="">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <title><%= htmlWebpackPlugin.options.title %></title>
     <!-- 使用CDN的CSS文件 -->
     <% for (var i in htmlWebpackPlugin.options.cdn &&
     htmlWebpackPlugin.options.cdn.css) { %>
     <link
             href="<%= htmlWebpackPlugin.options.cdn.css[i] %>"
             rel="stylesheet"
     />
     <% } %>
  </head>
  <body>
    <div id="app"></div>
    
    <!-- built files will be auto injected -->
  </body>
</html>
<!-- 使用CDN的JS文件 -->
<% for (var i in htmlWebpackPlugin.options.cdn &&
htmlWebpackPlugin.options.cdn.js) { %>
<script src="<%= htmlWebpackPlugin.options.cdn.js[i] %>"></script>
<% } %>

四、代碼壓縮

使用uglifyjs-webpack-plugin插件進(jìn)行對(duì)js的代碼壓縮優(yōu)化

安裝插件? npm i -D uglifyjs-webpack-plugin

然后配置如下內(nèi)容

const UglifyJsPlugin = require('uglifyjs-webpack-plugin')

module.exports = defineConfig({
  configureWebpack: config => { 
    // 代碼壓縮
    config.plugins.push(
      new UglifyJsPlugin({
          uglifyOptions: {
            //生產(chǎn)環(huán)境自動(dòng)刪除console
            compress: {
                drop_debugger: true,
                drop_console: true,
                pure_funcs: ['console.log']
            }
          },
          sourceMap: false,
          parallel: true
      })
    )
  }
})

五、圖片壓縮

使用image-webpack-loader插件將圖片進(jìn)行壓縮

此插件會(huì)將你的圖片壓縮到一定大小,而一些小圖片會(huì)被直接壓縮成base64格式

安裝插件 npm install?image-webpack-loader?--save-dev

? 我看到有些人也會(huì)使用url-loader來(lái)壓縮圖片,url-loader只適用于比較小的圖片資源,如果圖片很大會(huì)導(dǎo)致構(gòu)建出的.js文件加載緩慢。

? 一般會(huì)配置小圖片使用url-loader完成,而大圖片則使用image-webpack-loader進(jìn)行壓縮,不過(guò)我測(cè)試了一下,發(fā)現(xiàn)直接使用image-webpack-loader也可以直接將小圖片壓縮為base64,所以我這里就直接配置了image-webpack-loader,沒(méi)有去進(jìn)行拆分

配置如下信息

module.exports = defineConfig({
  chainWebpack: config => { 
    // ============壓縮圖片 start============
    config.module
    .rule('images')
    .use('image-webpack-loader')
    .loader('image-webpack-loader')
    .options({ bypassOnDebug: true })
    .end()
  }
})

目前了解的優(yōu)化手段大概是這些,如果還有其他方式,還希望老板們也可以分享一下,大家相互學(xué)習(xí)!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-790073.html

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

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

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

相關(guān)文章

  • vue 性能優(yōu)化方案

    vue 性能優(yōu)化方案

    ????????首先說(shuō)明一下,我優(yōu)化的項(xiàng)目是基于vue3 + ts的一個(gè)項(xiàng)目,使用的是webpack5的版本,不一定非要是webpack5經(jīng)測(cè)試4也可以正常使用 ????????若想查看自己當(dāng)前項(xiàng)目的webpack版本,可以找node_modules目錄下面的webpack/package.json文件,查看文件中的version,如下圖 下面開(kāi)始進(jìn)

    2024年02月01日
    瀏覽(22)
  • 最全 Vue 性能優(yōu)化方案

    當(dāng)涉及到 Vue 應(yīng)用的性能優(yōu)化時(shí),有許多技術(shù)和策略可以幫助提升應(yīng)用的性能并改善用戶(hù)體驗(yàn)。以下總結(jié)了常用的十種 Vue 的性能優(yōu)化方案: 因?yàn)?v-show 本質(zhì)上是通過(guò) css 控制元素的顯示與隱藏,而 v-if 是通過(guò)操作 dom 來(lái)控制元素的顯示與隱藏,頻繁操作 dom 會(huì)導(dǎo)致性能有所影響

    2024年04月24日
    瀏覽(26)
  • 快速搞定前端JS面試 -- 第十二章 運(yùn)行環(huán)境 (頁(yè)面加載、性能優(yōu)化、安全)

    快速搞定前端JS面試 -- 第十二章 運(yùn)行環(huán)境 (頁(yè)面加載、性能優(yōu)化、安全)

    4.?Window.onload和DOMContentLoaded 二、性能優(yōu)化 1、性能優(yōu)化原則 2、如何入手性能優(yōu)化 1.?資源合并 2.?緩存 3.?CDN 4.?SSR 5. 懶加載 6.?緩存DOM查詢(xún) 7.?盡早開(kāi)始JS執(zhí)行 8. 防抖 9. 節(jié)流 三、安全 1.?XSS跨站請(qǐng)求攻擊 2.?XSRF跨站請(qǐng)求偽造 問(wèn)題解答 1. 從輸入url到顯示出頁(yè)面的整個(gè)過(guò)程 2.

    2024年04月16日
    瀏覽(25)
  • 極致性能優(yōu)化:前端SSR渲染利器Qwik.js | 京東云技術(shù)團(tuán)隊(duì)

    極致性能優(yōu)化:前端SSR渲染利器Qwik.js | 京東云技術(shù)團(tuán)隊(duì)

    前端性能已成為網(wǎng)站和應(yīng)用成功的關(guān)鍵要素之一。用戶(hù)期望快速加載的頁(yè)面和流暢的交互,而前端框架的選擇對(duì)于實(shí)現(xiàn)這些目標(biāo)至關(guān)重要。然而,傳統(tǒng)的前端框架在某些情況下可能面臨性能挑戰(zhàn)且存在技術(shù)壁壘。 在這個(gè)充滿挑戰(zhàn)的背景下,我們引入了 Qwik.js 框架。Qwik.js 不僅

    2024年02月05日
    瀏覽(24)
  • 快速搞定前端JS面試 -- 第十二章 運(yùn)行環(huán)境 (頁(yè)面加載、性能優(yōu)化、安全)(1)

    快速搞定前端JS面試 -- 第十二章 運(yùn)行環(huán)境 (頁(yè)面加載、性能優(yōu)化、安全)(1)

    4.?SSR 5. 懶加載 6.?緩存DOM查詢(xún) 7.?盡早開(kāi)始JS執(zhí)行 8. 防抖 9. 節(jié)流 三、安全 1.?XSS跨站請(qǐng)求攻擊 2.?XSRF跨站請(qǐng)求偽造 問(wèn)題解答 1. 從輸入url到顯示出頁(yè)面的整個(gè)過(guò)程 2. Window.onload和DOMContentLoaded區(qū)別 3. 為何把css放在中 4. 為何把js放在最后 5. html中css寫(xiě)在前js寫(xiě)在后的優(yōu)點(diǎn) 6. 如何入

    2024年04月14日
    瀏覽(33)
  • vue前端性能優(yōu)化之分包策略、異步組件、Gzip壓縮

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

    目錄 一、Gzip壓縮 二、異步組件 三、分包策略 最后 ? ????????項(xiàng)目的性能優(yōu)化是有完整項(xiàng)目經(jīng)歷的開(kāi)發(fā)者都會(huì)遇到得一個(gè)問(wèn)題。這是整個(gè)項(xiàng)目開(kāi)發(fā)最后的一步,也是最關(guān)鍵的一步,做一個(gè)項(xiàng)目并不是單單完成功能就算結(jié)束了,作為開(kāi)發(fā)者,更要站在用戶(hù)角度去進(jìn)行項(xiàng)目體

    2024年02月09日
    瀏覽(25)
  • vue-productionSourceMap作用

    vue-productionSourceMap作用

    當(dāng)其設(shè)置為false時(shí)(productionSourceMap: false) 當(dāng)其設(shè)置為true時(shí)(productionSourceMap: true)? 注:1.當(dāng)設(shè)置為true時(shí),打包后每個(gè)文件都有一個(gè).map文件,其目的是為了精確定位代碼錯(cuò)誤 ???? 2.當(dāng)設(shè)置為false時(shí),可減少項(xiàng)目打包大小 ???? 3.正式環(huán)境禁止使用true,因?yàn)槠淇赏ㄟ^(guò)反編譯.map文件,造成

    2024年02月20日
    瀏覽(14)
  • 前端項(xiàng)目部署自動(dòng)檢測(cè)更新后通知用戶(hù)刷新頁(yè)面(前端實(shí)現(xiàn),技術(shù)框架vue、js、webpack)——方案一:編譯項(xiàng)目時(shí)動(dòng)態(tài)生成一個(gè)記錄版本號(hào)的文件

    前端項(xiàng)目部署自動(dòng)檢測(cè)更新后通知用戶(hù)刷新頁(yè)面(前端實(shí)現(xiàn),技術(shù)框架vue、js、webpack)——方案一:編譯項(xiàng)目時(shí)動(dòng)態(tài)生成一個(gè)記錄版本號(hào)的文件

    當(dāng)我們重新部署前端項(xiàng)目的時(shí)候,如果用戶(hù)一直停留在頁(yè)面上并未刷新使用,會(huì)存在功能使用差異性的問(wèn)題,因此,當(dāng)前端部署項(xiàng)目后,需要提醒用戶(hù)有去重新加載頁(yè)面。 vue、js、webpack 編譯項(xiàng)目時(shí)動(dòng)態(tài)生成一個(gè)記錄版本號(hào)的文件 輪詢(xún)(20s、自己設(shè)定時(shí)間)這個(gè)文件,判斷版

    2024年02月02日
    瀏覽(57)
  • 前端面試:【性能優(yōu)化】頁(yè)面加載性能、渲染性能、資源優(yōu)化

    嗨,親愛(ài)的前端開(kāi)發(fā)者!在今天的Web世界中,用戶(hù)期望頁(yè)面加載速度快、交互流暢。因此,前端性能優(yōu)化成為了至關(guān)重要的任務(wù)。本文將探討三個(gè)關(guān)鍵方面的性能優(yōu)化:頁(yè)面加載性能、渲染性能以及資源優(yōu)化,以幫助你構(gòu)建更快速、響應(yīng)更快的Web應(yīng)用程序。 1. 頁(yè)面加載性能:

    2024年02月11日
    瀏覽(33)
  • 性能優(yōu)化 - 前端性能監(jiān)控和性能指標(biāo)計(jì)算方式

    性能優(yōu)化 - 前端性能監(jiān)控和性能指標(biāo)計(jì)算方式

    利用LightHouse進(jìn)行合理的頁(yè)面性能優(yōu)化 這篇文章主要講解了如何使用 Lighthouse 。 這里把相關(guān)圖片再展示一下: 我們可以看到 Lighthouse 計(jì)算的時(shí)候,會(huì)根據(jù)這幾個(gè)維度的指標(biāo)來(lái)計(jì)算總分。那么本篇文章,就主要講解下前端性能監(jiān)控相關(guān)的重要指標(biāo)含義和計(jì)算方式。 在介紹指標(biāo)

    2024年02月15日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包