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

vue項(xiàng)目首次打開時(shí)加載速度很慢的優(yōu)化過程

 更新時(shí)間:2022年08月31日 09:13:25   作者:隨遇而安、1314  
這篇文章主要介紹了vue項(xiàng)目首次打開時(shí)加載速度很慢的優(yōu)化過程,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue首次打開時(shí)加載速度很慢

1、使用 vue-router 懶加載解決首次加載時(shí)資源過多導(dǎo)致的速度緩慢問題

當(dāng)你的 SPA(單頁應(yīng)用程序)變得很復(fù)雜時(shí),打包構(gòu)建后的 js 包會(huì)變得非常大,以至于嚴(yán)重影響頁面的加載時(shí)間。vue-router 支持 webpack 內(nèi)置的異步模塊加載系統(tǒng)。所以,那些使用較少的路由組件不必打包進(jìn) bundles 里,只要在路由被訪問時(shí)按需加載。 

懶加載路由寫法:

{
	path: "/base/user",
	name: "user",
	component: resolve => require.ensure([], () => resolve(require('@/modules/base/user/User')), 'User'),
	meta: {
		breadcrumb: ["基本信息", "用戶管理"]
	}
},
{
	path: "/base/role",
	name: "role",
	component: resolve => require.ensure([], () => resolve(require('@/modules/base/role/Role')), 'Role'),
	meta: {
		breadcrumb: ["基本信息", "角色管理"]
	}
}

2、使用CDN加速

以引入vue、vuex、vue-router為例:

第一步,在index.html中,添加CDN資源:

<!-- 引入Vue.js -->
<script src="https://cdn.staticfile.org/vue/2.4.3/vue.min.js"></script>
<!-- 引入vuex.js -->
<script src="https://cdn.staticfile.org/vuex/3.0.0/vuex.min.js"></script>
<!-- 引入vue-router -->
<script src="https://cdn.staticfile.org/vue-router/3.0.0/vue-router.min.js"></script>

第二步,在 bulid/webpack.base.conf.js 文件中,增加 externals,將引用的外部模塊導(dǎo)入,如下:

第三步,將所有的引用去掉:

// import Vue from "vue";
// 引入element 組件
// import ElementUI from "element-ui";
// import "element-ui/lib/theme-chalk/index.css";
// import VueRouter from "vue-router";
// import Vuex from "vuex";
// Vue.use(ElementUI);
// Vue.use(VueRouter);
// Vue.use(Vuex);

優(yōu)化vue項(xiàng)目加載過慢問題

發(fā)現(xiàn)問題

線上訪問地址加載時(shí)間很慢

優(yōu)化方案

1、webpack-bundle-analyzer 是 webpack的可視化資源分析工具,優(yōu)化之前下載webpack-bundle-analyzer。

npm i webpack-bundle-analyzer?
或者
cnpm i webpack-bundle-analyzer

2、配置vue.config.js文件

chainWebpack(config){
	config.plugin('webpack-bundle-analyzer').use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
}

3、 執(zhí)行 npm run build --report 即可 瀏覽器會(huì)自動(dòng)打開一個(gè)頁面,如下圖所示

優(yōu)化方法

1、使用CDN減小代碼體積加快請求速度

使用CDN主要解決兩個(gè)問題:

  • 1. `打包時(shí)間太長、打包后代碼體積太大,請求慢`
  • 2. `服務(wù)器網(wǎng)絡(luò)不穩(wěn)帶寬不高,使用cdn可以回避服務(wù)器帶寬問題`

我們將vue,vue-router,vuex,axios,echarts,element,moment使用CDN資源引入。國內(nèi)的CDN服務(wù)推薦使用 bootCDN

1.1、在index.html里引入線上cdn

 1.2、在vue.config.js配置中配置是為了在加載的時(shí)候,引用cdn資源 而不是node_modules里的包

configureWebpack:{
	externals: {
      'echarts': 'echarts',
      'vue': 'Vue',
      'vuex': 'Vuex',
      'vue-router': 'VueRouter',
      'axios': 'axios',
      'moment': 'moment',
      'element-ui': 'ELEMENT'
    },
}

同時(shí)注銷掉main.js文件當(dāng)中的import

 2、開啟gzip壓縮

npm i compression-webpack-plugin@1.1.12 --save-dev 新版本有問題的話下載1.1.12版本配置vue.config.js

const CompressionWebpackPlugin = require('compression-webpack-plugin')
configureWebpack:{
	plugins:[
      new CompressionWebpackPlugin({
        filename: '[path].gz[query]',
        algorithm: 'gzip',
        // test: /\.js$|\.html$|\.json$|\.css/,
        test: /\.js$|\.json$|\.css/,
        threshold: 10240, // 只有大小大于該值的資源會(huì)被處理
        minRatio: 0.8, // 只有壓縮率小于這個(gè)值的資源才會(huì)被處理
        // deleteOriginalAssets: true // 刪除原文件
      })
    ],
}

需要nginx服務(wù)器,更改nginx.conf文件, 加在如圖所示位置

# 開啟gzip。
gzip on
# 開啟后如果能找到 .gz 文件,直接返回該文件,不會(huì)啟用服務(wù)端壓縮。
gzip_static on
# 文件大于指定 size 才壓縮,以 kb 為單位。
gzip_min_length 1;
# 用于識別http協(xié)議的版本,早期的瀏覽器不支持gzip壓縮,用戶會(huì)看到亂碼,所以為了支持前期版本加了此選項(xiàng),目前此項(xiàng)基本可以忽略
gzip_http_version 1.1;
# 壓縮級別,1-9,值越大壓縮比越大,但更加占用 CPU,且壓縮效率越來越低。
gzip_comp_level 9;
# 壓縮的文件類型。
gzip_types text/css application/javascript application/json;
root /dist;

 3、路由懶加載

export const constantRoutes = [
  {
    path: '/login',
    component: () => import('@/views/login'),
    hidden: true
  },
 
  {
    path: '/auth-redirect',
    component: () => import('@/views/login/auth-redirect'),
    hidden: true
  },
 
  {
    path: '/404',
    component: () => import('@/views/404'),
    hidden: true
  },
]

 4、圖片放在oss上,不放在項(xiàng)目的assets文件夾下

對象存儲(oss)提供內(nèi)置的CDN集成,可以緩存資產(chǎn)以加快頁面加載速度。對象存儲非常適合存儲靜態(tài)資源,例如,用于存儲用戶定義的內(nèi)容:圖像和電影,存儲備份文件和日志。更換項(xiàng)目里的圖片路徑,為線上地址即可。

5.去除ScourpMap文件

配置一下vue.config.js即可

productionSourceMap: false,//去除.map文件

6.壓縮代碼,移除console.log

npm i uglifyjs-webpack-plugin@1.1.1 --save-dev

配置vue.config.js

const isProduction = process.env.NODE_ENV === 'production';
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
chainWebpack(config) {
    const plugins = [];
    if (isProduction) {
      plugins.push(
        new UglifyJsPlugin({
          uglifyOptions: {
            output: {
              comments: false, // 去掉注釋
            },
            warnings: false,
            compress: {
              drop_console: true,
              drop_debugger: false,
              pure_funcs: ['console.log']//移除console
            }
          }
        })
      )
    }
  }

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于element-ui自定義封裝大文件上傳組件的案例分享

    基于element-ui自定義封裝大文件上傳組件的案例分享

    本文主要介紹了以element-ui基礎(chǔ)封裝大文件上傳的組件,包括斷點(diǎn)續(xù)傳,秒傳,上傳進(jìn)度條,封裝思想邏輯來源于el-upload 組件源碼,文中有具體案例分享,需要的朋友可以參考下
    2024-01-01
  • Element-ui table中過濾條件變更表格內(nèi)容的方法

    Element-ui table中過濾條件變更表格內(nèi)容的方法

    下面小編就為大家分享一篇Element-ui table中過濾條件變更表格內(nèi)容的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Vue引入路徑正確但一直報(bào)錯(cuò)問題:Already included file name ‘××ב differs from file name ‘××ב only in casing.

    Vue引入路徑正確但一直報(bào)錯(cuò)問題:Already included file name&n

    這篇文章主要介紹了Vue引入路徑正確但一直報(bào)錯(cuò):Already included file name ‘××ב differs from file name ‘××ב only in casing.具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Vue精美簡潔登錄頁完整代碼實(shí)例

    Vue精美簡潔登錄頁完整代碼實(shí)例

    這篇文章主要給大家介紹了關(guān)于Vue精美簡潔登錄頁完整代碼的相關(guān)資料,通過文中的方法大家可以使用實(shí)現(xiàn)簡單的用戶登錄界面,下面通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • Vue標(biāo)尺插件使用詳解

    Vue標(biāo)尺插件使用詳解

    這篇文章主要為大家詳細(xì)介紹了Vue標(biāo)尺插件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • vue實(shí)現(xiàn)瀑布流布局的示例代碼

    vue實(shí)現(xiàn)瀑布流布局的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用vue實(shí)現(xiàn)簡單的瀑布流布局,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2023-09-09
  • 在vue項(xiàng)目中使用sass語法問題

    在vue項(xiàng)目中使用sass語法問題

    sass是一個(gè)最初由Hampton Catlin設(shè)計(jì)并由Natalie Weizenbaum開發(fā)的層疊樣式表語言。這篇文章主要介紹了在vue項(xiàng)目中使用sass語法,需要的朋友可以參考下
    2019-07-07
  • Vue3計(jì)算屬性computed和監(jiān)聽屬性watch區(qū)別解析

    Vue3計(jì)算屬性computed和監(jiān)聽屬性watch區(qū)別解析

    計(jì)算屬性適用于對已有的數(shù)據(jù)進(jìn)行計(jì)算,派生新的數(shù)據(jù),并在模板中使用;而監(jiān)聽屬性適用于監(jiān)聽數(shù)據(jù)的變化,并執(zhí)行一些特定的操作,根據(jù)具體的需求和場景,選擇適合的機(jī)制這篇文章主要介紹了Vue3計(jì)算屬性computed和監(jiān)聽屬性watch,需要的朋友可以參考下
    2024-02-02
  • 分享一個(gè)基于Ace的Markdown編輯器

    分享一個(gè)基于Ace的Markdown編輯器

    相信開發(fā)中或多或少都會(huì)有使用md的時(shí)候。那么一個(gè)簡易的md編輯器顯得尤為重要,如果想要在自己的項(xiàng)目中添加一個(gè)md編輯器,那么不妨來看看這篇文章
    2021-10-10
  • vue中使用event.target.value踩坑記錄

    vue中使用event.target.value踩坑記錄

    這篇文章主要介紹了vue中使用event.target.value踩坑記錄,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03

最新評論

泊头市| 泗洪县| 兴山县| 田林县| 嘉鱼县| 衡东县| 松溪县| 饶河县| 临洮县| 全州县| 天等县| 石柱| 深州市| 夏邑县| 新蔡县| 固镇县| 陆良县| 南雄市| 通榆县| 理塘县| 扎囊县| 容城县| 阆中市| 洛扎县| 叶城县| 安吉县| 长宁区| 厦门市| 洞头县| 巴彦县| 库车县| 海宁市| 新巴尔虎左旗| 毕节市| 鹰潭市| 赤峰市| 龙山县| 庐江县| 临澧县| 连南| 息烽县|