美文网首页
Vue项目优化方案

Vue项目优化方案

作者: 一颗得道的仙丹 | 来源:发表于2023-03-30 15:38 被阅读0次

编码优化:

1.vue 在使用v-for 循环时可以使用事件代理方式监听用户操作,节约性能。
2.可以采用keep-alive缓存组件。
3.尽可能拆分组件,来提高复用性、增加代码的可维护性,减少不必要的渲染。因为组件粒度最细,改组件的数组,它只会渲染当前的组件。
4.v-if 当值为false时内部指令不会执行,具有阻断功能,很多情况下使用v-if替代v-show,合理使用if和show。
5.vue循环中key的取值建议使用数据id,相比index更能保证数据的唯一性,更好 的触发vue虚拟dom采用就地复用策略。
6.data中的所以数据都会被劫持,所以将数据尽可能扁平化,如果数据只是用来渲染可以使用Object.freeze,可以将数据冻结起来,这样就不会增加getter和setter。
7.合理使用路由懒加载、异步组件。
8.页面需要响应式的数据放在data中,其他非响应式数据不需要放在data中,data中的数据都会增加getter和setter,会收集对应的 watcher,这样就会降低性能。

资源加载性能优化

1.使用第三方插件实现按需加载( babel-plugin-component )
2.滚动到可视区域动态加载 ( https://tangbc.github.io/vue-virtual-scroll-list )
3.图片懒加载 (https://github.com/hilongjw/vue-lazyload.git)
4.路由懒加载引入组件页面
5.cdn加速引入资源
6.长列表优化

SEO优化

1.使用服务端渲染(SSR):Vue.js 2.0 提供了服务端渲染的功能,使得搜索引擎能够更好地索引和解析网站内容。在使用 SSR 时,可以在服务端生成 HTML,而不是在客户端生成,这样搜索引擎可以更好地理解页面内容。
2.使用预渲染(Prerendering):预渲染是一种在构建时生成静态 HTML 文件的技术。这样搜索引擎就可以直接访问这些静态文件,而不需要等待页面加载完成。使用 Prerendering 可以提高页面加载速度和用户体验。
3.添加 meta 标签:在网页头部添加 meta 标签,包括 title、description、keywords 等,可以让搜索引擎更好地理解网页内容和结构。可以使用 Vue.js 的插件 vue-meta 管理 meta 标签。
4.加载速度优化:优化网站的加载速度,包括压缩 CSS 和 JavaScript 文件、使用 CDN 加速、优化图片等,可以提高用户体验和搜索引擎排名。

打包优化

1.去除项目中所有的console.log()打印
    在项目开发中我们不可避免的要使用到特别多的console.log()进行查看,而打包进行清除时由于逻辑错综复杂,且页面较多,清除起来十分麻烦,此时就可以使用到下列方法,这里要提示一句console.log()占用部分内存且影响网站安全,应在不使用时及时进行清除。

//安装模块:npm i babel-plugin-transform-remove-console --save-dev
//配置模块(babel.config.js页面配置):
const proPlugins = [];
    //如果是开发环境,则添加 transform-remove-console 插件
    if (process.env.NODE_DEV == "production") {
      proPlugins.push("transform-remove-console");
    }
    module.exports = {
      presets: [
        '@vue/cli-plugin-babel/preset'
      ],
      "plugins": [
        [
          "component",
          {
            "libraryName": "element-ui",
            "styleLibraryName": "theme-chalk"
          }
        ],
        ...proPlugins
      ]
    }

2.图片压缩
    使用imagemin-webpack-plugin对项目中的静态大图实现无损压缩,只改变大小不改变质量

//安装模块
//cnpm install image-webpack-loader --save-dev
//注意是npm 安装此模块容易丢包下载不完整
//配置vue.config.js文件:
config.module
    .rule('images')
    .use('image-webpack-loader')
    .loader('image-webpack-loader')
    .options({
             mozjpeg: { //用于压缩 JPEG 图片的选项
                 progressive: true, //表示是否启用渐进式压缩
                 quality: 65 //表示压缩质量,值范围为 0-100
             },
             optipng: { //用于压缩 PNG 图片的选项
                 enabled: true //enabled 表示是否启用压缩
             },
             pngquant: { //用于压缩 PNG 图片的选项
                 quality: [0.65, 0.9], //quality 表示压缩质量,值范围为 0-1
                 speed: 4 //speed 表示压缩速度,值范围为 1-11
             },
             gifsicle: { //用于压缩 GIF 图片的选项
                 interlaced: false //表示是否启用隔行扫描
             },
             webp: { //用于压缩 WebP 图片的选项
                 quality: 75 //表示压缩质量,值范围为 0-100
             }
     })
    .end()

3.启用gzip压缩
    1.俩种压缩方式(服务端压缩、前端压缩)
    2.服务端压缩(服务端压缩:当浏览器发送请求时,服务器进行实时压缩,返回浏览器)

//服务端以node为例:
   //可以通过服务器端使用express做gzip压缩,其配置如下:
   //服务器端安装包 `npm i compression -D`
   //导入包 const compression=require("compression");
   //启用中间件 app.use(compression())
   //app.js
    const express=require("express")
    const compression=require("compression")
    const app=express()
    app.use(compression())              //启用压缩插件
    app.use(express.static('./dist'))   //压缩public目录下前段打包资源dist
    app.listen(80,()=>{
    console.log("正在运行3000")
    })
//服务端这一块我不太熟悉(有错误请各位前辈指导)

3.前端压缩
    使用webpack打包时,进行压缩,浏览器请求时,服务端进行一些配置,返回压缩文件

//使用步骤:
    //安装压缩模块:npm install --save-dev compression-webpack-plugin@2
    //配置vue.config.js文件:
        module.exports = {
            ...........................
            chainWebpack: config => {
                const CompressionWebpackPlugin = require('compression-webpack-plugin')
                if (process.env.NODE_ENV === 'production') {
                    // gzip压缩
                    config.plugin('CompressionPlugin').use(
                        new CompressionWebpackPlugin({
                            test: /\.(js|css|json|txt|html|ico|svg|png)(\?.*)?$/i,
                            threshold: 10240, // 超过10kb的文件就压缩
                            deleteOriginalAssets: true, // 不删除源文件 
                            minRatio: 0.8 //指定压缩比例达到多少才会进行压缩
                        })
                    )
                }
            }
        }

4.两者对比
第一种,因为是实时压缩,所以非常耗服务器性能
第二种,就是dist打的包会偏大
所以,两者综合起来会更好
思路:webpack打包时,当文件体积超过一定程度的时候,进行gzip压缩,生产同名的.gz文件,然后配置nginx,让浏览器请求的时候,如果有.gz文件,返回压缩文件,没有的话,进行实时的压缩

相关文章

  • vue项目优化方案

    1、v-if 和 v-show 区分使用场景v-if 适用于在运行时很少改变条件,不需要频繁切换条件的场景;v-s...

  • vue项目优化方案

    使用严格模式,指定代码书写规范 首屏加载优化 开启gzip压缩代码,此方案同样是解决首屏加载过慢的方案之一 UI库...

  • Vue项目的SEO预渲染优化方案

    有关Vue项目或是单应用的项目优化方案很多,我只简单说两种,举个小栗子: # 1. vue-meta-info插件...

  • Vue SPA 首屏加载优化实践

    写在前面 本文记录笔者在Vue SPA项目首屏加载优化过程中遇到的一些坑及优化方案! 我们以 vue-cli 工具...

  • Vue项目性能优化方案

    经过对项目结构 / 开发方式 / 技术架构的研究,再次提出部分可以优化的点。 刚加入新公司之后,在学习来新公司的开...

  • vue项目性能优化方案

    背景:项目采用vue cli3搭建,集成前端组件以及地图效果,导致项目打包后资源包文件特别大,打包速度慢,首屏渲染...

  • Vue 项目性能优化方案

    前言 Vue 框架通过数据双向绑定和虚拟 DOM 技术,帮我们处理了前端开发中最脏最累的 DOM 操作部分, 我们...

  • vue-cli3 配置骨架屏方案

    vue-cli3配置骨架屏方案 前言 最近在学vue,准备使用vue写一个移动端项目。考虑到首页白屏优化,需要实现...

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

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

  • vue项目优化

    vue 项目优化 项目打包体积优化 通常vue项目通过webpack打包后,会出现vendor包的体积过大的情况,...

网友评论

      本文标题:Vue项目优化方案

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