• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

vue3性能优化

武飞扬头像
凡小多
帮助1

1. Lighthouse

谷歌浏览器自带的 DevTools

也可以全局安装Lighthouse

# 安装
yarn global add lighthouse

# 使用
lighthouse 网站地址

学新通

1.1 性能参数

学新通

2. rollup-plugin-visualizer(打包代码块分析)

vite打包是基于rollup的,所以可以使用这个插件进行包分析

# 安装
npm install rollup-plugin-visualizer

配置vite.config.ts

import { visualizer } from 'rollup-plugin-visualizer';
...
plugins: [vue(), vueJsx(),visualizer({
      open:true
 })],

npm run build 打包
学新通

3. vite配置优化

/* vite.config.ts */
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  ...
  build: {
    chunkSizeWarningLimit: 2000,
    cssCodeSplit: true, //css 拆分
    sourcemap: false, //不生成sourcemap
    minify: false, //是否禁用最小化混淆,esbuild打包速度最快,terser打包体积最小。
    assetsInlineLimit: 5000 //小于该值 图片将打包成Base64
  }
})


学新通

4. PWA离线缓存技术

npm install vite-plugin-pwa -D

vite-plugin-pwa 地址

PWA 技术 的出现就是让web网页无限接近于Native 应用

  1. 可以添加到主屏幕,利用manifest实现
  2. 可以实现离线缓存,利用service worker实现
  3. 可以发送通知,利用service worker实现

配置vite.config.ts

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { VitePWA } from 'vite-plugin-pwa'

export default defineConfig({
  plugins: [
    vue(),
    VitePWA({
      workbox: {
        cacheId: "DuoDuo",//缓存名称
        runtimeCaching: [
          {
            urlPattern: /.*\.js.*/, //缓存文件
            handler: "StaleWhileRevalidate", //重新验证时失效
            options: {
              cacheName: "DuoDuo-js", //缓存js,名称
              expiration: {
                maxEntries: 30, //缓存文件数量 LRU算法
                maxAgeSeconds: 30 * 24 * 60 * 60 //缓存有效期
              }
            }
          }
        ]
      },
    }),
    ...
  ],
})
学新通

打包后生产sw.js文件
学新通

学新通

5. 其他优化

  1. 图片懒加载

使用 vue3-lazy 或者自己封装一个懒加载指令,详请可见:vue自定义指令图片懒加载

import lazyPlugin from 'vue3-lazy'

<img v-lazy="user.avatar" >
  1. 虚拟列表

后端数据返回过多时,但不想分页或过滤优化,原理是删除可视区域外的DOM节点
学新通

  1. websocket多线程

一般前后端数据交互是前端发送请求,后端返回数据。缺点是每次获取新数据都需要提交新请求

websocket 实现是根据后端数据的改变推送新数据到前端,运用场景一般图表展示,图表数据实时变化

多线程work文档

VueUse 库已经集成了 webWorker — useWebWork

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgggjig
系列文章
更多 icon
同类精品
更多 icon
继续加载