vue性能优化

背景 vue cli3.0 + element-ui 管理系统部署上线后首次访问速度非常慢

将写好的vue项目部署到服务器上后首次加载,速度感人,这里记录下优化的方案

1、查找原因

在network中看到页面加载中有一个打包文件请求的时间非常长
在这里插入图片描述资源请求耗时:从图里可以明显看到个别js文件请求耗时高达7秒

2、选择解决方案

优化加载速度的方法很多,比如优化代码、优化请求接口,或者采用压缩打包文件(需要配置nginx,优化效果也比较明显)。
本文选择详细描述的是 cdn引入文件,减少webpack打包文件的体积,从而优化加载速度

3、话不多说直接上 第一步

vue项目下的index.html文件 cdn引入需要用到的包 引入地址推荐使用:cnd地址
可以选择对应版本

<!DOCTYPE html>
<html lang="en">
  <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 href="https://cdn.bootcdn.net/ajax/libs/element-ui/2.13.1/theme-chalk/index.css" rel="stylesheet">
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <title><%= htmlWebpackPlugin.options.title %></title>
  </head>
  <body>
    <noscript>
      <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
    </noscript>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.min.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/axios/0.19.2/axios.min.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/vuex/3.1.3/vuex.min.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue-router/3.1.3/vue-router.min.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/element-ui/2.13.1/index.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/echarts/4.7.0/echarts-en.common.js"></script>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>
第二步 配置vue.config.js

这是我的配置 优化的关键点是在配置里加上 externals的配置 externals具体作用可以去webpack官网看

const path = require('path');
module.exports = {
    //部署应用包时的基本 URL ,用法和 webpack 本身的 output.publicPath 一致
    // publicPath:process.env.NODE_ENV === 'production'?'/':'./'
    publicPath:'./',
    //输出文件目录
    outputDir:'dist',
    //eslint-loader 是否在保存的时候检查
    lintOnSave:false,
    //是否使用包含运行时编译的 Vue 构建版本
    runtimeCompiler:true,
    //生产环境是否生成 sourceMap 文件
    productionSourceMap:false,
    // webpack-dev-server 相关配置
    devServer:{
        open:true,
        host:'localhost',
        port:9003,
        https:false,
    },
    configureWebpack:{ 
        resolve: {
            extensions: ['.js', '.json', '.vue', '.scss', '.css'],
            alias: {},
          },
        **externals: {
            'vue': 'Vue',
            'vuex': 'Vuex',
            'vue-router': 'VueRouter',
            'ElementUI': 'ELEMENT',
            'echarts': 'echarts',
            'Axios':'axios'
          },**
    },
    
}
第三步 修改引入文件的方式

例如 vuex

// import Vue from 'vue'			//删除
import Vuex from 'vuex'

// Vue.use(Vuex)				//删除

export default new Vuex.Store({
  state: {
  },
  mutations: {
  },
  actions: {
  },
  modules: {
  }
})

vue-router

// import Vue from 'vue'	//删除
import VueRouter from 'vue-router'

// Vue.use(VueRouter)		//删除
最后修改main.js文件的引入
import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store'
//import ELEMENT from 'element-ui'		//element 做成按需加载 具体上篇博客有介绍
//Vue.use(ELEMENT)


/* eslint-disable no-new */
new Vue({
  el: '#app',
  router: router,
  store: store,
  render: h => h(App)
})

本章完

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值