美文网首页
Vue优化项目加载速度

Vue优化项目加载速度

作者: Lyudmilalala | 来源:发表于2021-03-15 00:01 被阅读0次

1.在编译时不生成.map文件
vue.config.js离设置productionSourceMapfalse,或者可以设置一个环境变量,让productionSourceMap只在生产环境为false

const IS_PROD = ['production', 'prod'].includes(process.env.NODE_ENV);
module.exports = {
  productionSourceMap: !IS_PROD
}
  1. vue-router路由懒加载
    在·src/router/index.js·中,路由本可以写成
import Home from '@/views/Home.vue'
const routes: Array<RouteConfig> = [
  {
    path: '/',
    name: 'Home',
    component: Home
   }
]

可以改成如下,让页面是在需要时才被加载

const routes: Array<RouteConfig> = [
  {
    path: '/',
    name: 'Home',
    component: resolve => {require(['@/views/Home.vue'],resolve)}
   }
]

官方还为vue-router版本2.4.0以上,提供了新写法

const routes: Array<RouteConfig> = [
  {
    path: '/',
    name: 'Home',
    component: () => import('@/views/Home.vue')
   }
]
  1. 开启Gzip压缩
    CompressionWebpackPlugin官网
    下载安装 compression-webpack-plugin
cnpm install --save compression-webpack-plugin

vue.config.js里设置用compression-webpack-plugin`压缩文件

const IS_PROD = ['production', 'prod'].includes(process.env.NODE_ENV);
module.exports = {
  configureWebpack: (config) => {
  if(IS_PROD){
        // gzip compression
        config.plugins.push(
            new CompressionPlugin({
                /* [file]被替换为原始资产文件名。
                  [path]替换为原始资产的路径。
                  [dir]替换为原始资产的目录。
                  [name]被替换为原始资产的文件名。
                  [ext]替换为原始资产的扩展名。
                  [query]被查询替换。*/
                filename: '[path].gz[query]',
                //压缩算法
                algorithm: 'gzip',
                //匹配文件
                test: /\.js$|\.css$|\.ttf$|\.svg$|\.json$|\.html$/,
                //压缩超过此大小的文件,以字节为单位
                threshold: 0,
                // 压缩率小于0.8才会压缩
                minRatio: 0.8,
                deleteOriginalAssets: true // 删除未压缩的文件
            })
       )
   }
}

为Nginx添加Gzip配置

server {
  gzip on;
  gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;  
  gzip_static on;
  gzip_min_length  1k;
  gzip_buffers     4 16k;
  gzip_http_version 1.1;
  gzip_comp_level 2;
  gzip_vary on;
  gzip_proxied   expired no-cache no-store private auth;
  gzip_disable   "MSIE [1-6]\.";
}
  1. 图片压缩
    下载安装 image-webpack-loader
cnpm install --save image-webpack-loader

vue.config.js里设置用image-webpack-loader处理图片

module.exports = {
  chainWebpack: config => {
        config.module
        .rule('images')
        .test(/\.(png|jpe?g|gif|svg)(\?.*)?$/)
        .use('image-webpack-loader')
        .loader('image-webpack-loader')
        .options({
            bypassOnDebug: true
        })
        .end()
    }
}
  1. 使用CDN加载图片和第三方库,将自身服务器压力分给其他服务器
  2. 使用 vue-lazyload 加载图片
    Vue-Lazyload官网
    下载安装 vue-lazyload
cnpm install vue-lazyload --save --no-optional

在main.js中导入包并注册

import VueLazyload from ‘vue-lazyload’

Vue.use(VueLazyload, {
  error: ‘dist/error.png’,//请求失败后显示的图片
  loading: ‘dist/loading.gif’,//加载的loading过渡效果
  try: 2 // 这个是加载图片数量
})

在页面中使用v-lazy代替src添加请求的图片地址,即将

<img src="../assets/img/mission.png" alt class="pic">

改为

<img v-lazy="../assets/img/mission.png" alt class="pic">

Reference

VUE CLI3项目优化
Vue项目打包压缩的实现

相关文章

  • Nginx开启Gzip优化网页访问速度

    前言 开启Nginx Gzip 优化网页加载速度不限于Vue项目,所有前端皆可开启gzip优化如果是Vue项目可以...

  • Vue优化项目加载速度

    1.在编译时不生成.map文件在vue.config.js离设置productionSourceMap为false...

  • 常见面试题--js+css+vue

    1、变量提升、函数提升 2、数组的常用方法 3.优化首屏加载速度 4.Vue 首屏加载速度优化 5、Vue如何设置...

  • vue项目优化方案(性能,包体积,页面加载速度等)

    vue项目优化方案(性能,包体积,页面加载速度等) 项目优化,是一个老生常谈的问题。这里简单总结一下相关方法: 1...

  • Vue项目总结

    (一)vue 1.页面加载速度优化 可在页面引入组件时引入异步加载的方式使加载速度变快export default...

  • 基础面试4

    3.vue怎么优化代码vue是组件化开发的,对代码优化主要是组件的按需加载,可以提高加载的速度,还有v-if,减少...

  • Vue项目首屏加载速度优化

    一、路由懒加载 1、作用 提升用户体验,提升首屏组件加载速度,解决白屏问题 2、代码示例 2.1 未使用路由懒加载...

  • Vue 网站首页加载优化

    Vue 网站首页加载优化 本篇主要讲解 Vue项目打包后 vendor.js 文件很大 如何对它进行优化 以及开启...

  • 博客网站首页加载优化

    Vue 网站首页加载优化 本篇主要讲解 Vue项目打包后 vendor.js 文件很大 如何对它进行优化 以及开启...

  • vue项目速度优化

    【1】可以在打包时去掉map文件,从而缩小文件大小提高编译速度/config/index.js:productio...

网友评论

      本文标题:Vue优化项目加载速度

      本文链接:https://www.haomeiwen.com/subject/srnccltx.html