vue前端项目优化方案

部署环境
@vue/cli 4.5.13 、nginx、 dockerfile、 k8s CI\CD 本次针对的是vue
cli脚手架进行webpack相关的配置, 包含到nginx 和dockerfile

一、包体积优化

分隔js  

代码分隔出来的js文件名 /* webpackChunkName: "register" */     {
    path: '/401',
    component: () => import(/* webpackChunkName: "401" */'@/views/error-page/401'),
    hidden: true   },
 配置打包名字
 
configureWebpack: {
    output: { // 输出重构  打包编译后的 文件名称  【模块名称.版本号.时间戳】
      filename: './static/js/[name].js',
      chunkFilename: './static/js/[name].js'
    }
}

没有用到hash,固定名字下面需要配合缓存解决,css本来想用插件但是用了更简单的方案
css也配置去掉hash,上面的 output 配置也可以去掉看个人要求

支持GZIP

安装 compression-webpack-plugin  npm i compression-webpack-plugin -D
 
// 顶部加入
const CompressionPlugin = require('compression-webpack-plugin')


 configureWebpack: {
    output: { // 输出重构  打包编译后的 文件名称  【模块名称.版本号.时间戳】
      filename: './static/js/[name].js',
      chunkFilename: './static/js/[name].js'
    },
    // GZIP
    plugins: [
      new CompressionPlugin({
        algorithm: 'gzip',
        test: /\.(js|css)$/, // 匹配文件名
        threshold: 81920, // 对超过10k的数据压缩
        deleteOriginalAssets: false, // 不删除源文件
        minRatio: 0.8 // 压缩比
      })
    ]
// ........其他的配置
}

一半的人会报错: ERROR TypeError: Cannot read property ‘tapPromise’ of
undefined 最后发现是是compression-webpack-plugin版本问题,
compression-webpack-plugin 默认安装的是 7 版本的 先执行卸载命令->npm uninstall
compression-webpack-plugin 执行安装命令->npm i
compression-webpack-plugin@5.0.1 -D

缓存问题解决

nginx配置协商缓存,加入一下配置
gzip_static on;
 add_header Cache-Control no-cache;  
 
user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
  worker_connections  1024;
}
http {
  include       /etc/nginx/mime.types;
  default_type  application/octet-stream;
  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
  access_log  /var/log/nginx/access.log  main;
  sendfile        on;
  keepalive_timeout  65;
  gzip_static on;
  server {
    listen       80;
    server_name  localhost;
    add_header Cache-Control no-cache;
    location / {
      add_header Cache-Control no-cache;
      root   /app;
      index  index.html;
      try_files $uri $uri/ /index.html;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
      root   /usr/share/nginx/html;
    }
  }
}

 

无用包去除

npm install -g depcheck 项目中运行 depcheck 即可
下面才是重点 这里检查只是为了减少npm i的工作量

Unused dependencies

  • driver.js
  • print-js
  • react-scripts
  • showdown

// 这里我建议别动尤其ts项目
Unused devDependencies

  • @vue/cli-plugin-babel
  • @vue/cli-plugin-eslint
  • @vue/cli-plugin-unit-jest
  • @vue/test-utils
  • autoprefixer
  • babel-core
  • babel-eslint
  • html-webpack-plugin
  • node-sass
  • sass-loader
  • script-ext-html-webpack-plugin
  • serve-static
  • svg-sprite-loader

//下面才是重点 找出src下面无用的vue文件或者无用的引用 删除才能减少打包体积

Missing dependencies

  • husky: ./package.json
  • qs: ./src/utils/http.js
  • lodash: ./src/utils/http.js
  • clearfix: ./src/styles/mixin.scss
  • scrollBar: ./src/styles/mixin.scss
  • relative: ./src/styles/mixin.scss
  • pct: ./src/styles/mixin.scss
  • direction: ./src/styles/mixin.scss
  • if: ./src/styles/mixin.scss
  • triangle: ./src/styles/mixin.scss
  • tui-editor: ./src/components/MarkdownEditor/index.vue
  • body-parser: ./mock/mock-server.js

注意:package.json的无用依赖去除不会减少打包体积,src下的无用 import才是影响包体积原因

Vue 前端性能优化可以从以下几个方面入手: 1. 代码优化:使用合适的数据绑定方式,避免不必要的计算和渲染。合理使用计算属性、watcher 和 v-if/v-show 等指令,避免频繁的重新渲染。同时,注意避免在模板中使用复杂的表达式和函数调用。 2. 组件拆分和懒加载:将大型组件拆分成更小的组件,按需加载。这样可以降低首次加载时的资源压力,提高页面初始化速度。使用 Vue 的异步组件和路由懒加载功能,可以在需要时再去加载组件。 3. 图片优化:使用合适的图片格式和压缩工具来减小图片大小,提高加载速度。可以使用工具将图片转为 WebP 格式,并通过 CDN 加速图片加载。 4. 路由优化:使用懒加载和异步组件,减少首次加载时需要加载的资源。合理使用路由懒加载,按需加载所需的组件。 5. 数据请求优化:减少不必要的接口请求,合并接口请求,避免频繁的网络请求。合理使用缓存和本地存储,减少对服务器的依赖。 6. 代码分割和打包优化:使用工具将代码按需分割成多个文件,利用浏览器的并行加载能力,加快页面加载速度。对打包后的资源进行压缩和混淆,减小文件大小。 7. 使用虚拟列表和无限滚动:对于大量数据的展示,可以使用虚拟列表或者无限滚动技术,只渲染可见区域的数据,提高列表性能。 8. 优化重绘和回流:避免频繁的 DOM 操作和样式改变,合理使用 CSS transform 和 opacity 等属性来减少重绘和回流。将频繁改变的元素设置为 fixed 或 absolute 定位,可以避免重新布局。 以上是一些常见的 Vue 前端性能优化的方法,根据具体项目的需求和实际情况,可以选择适合的优化方案来提高页面性能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值