Vue3 + vite 首屏优化加载速度

1.使用路由懒加载(异步加载)

当访问到当前页面,再去加载

javascript 复制代码
// router/index.ts
import { createRouter, createWebHistory } from 'vue-router'

const routes = [
  {
    path: '/',
    component: () => import('@/views/Home.vue') // ✅ 异步加载
  },
  {
    path: '/about',
    component: () => import('@/views/About.vue')
  }
]

const router = createRouter({
  history: createWebHistory(),
  routes
})

export default router

这样只打包当前访问的组件,首屏包更小,速度更快。

2.使用defineAsyncComponent异步加载组件

javascript 复制代码
import { defineAsyncComponent } from 'vue'

const LazyChart = defineAsyncComponent(() => import('./Chart.vue'))

可用于图表、地图、大型列表、富文本编辑器等组件

3.压缩静态资源(gzip / brotli)

复制代码
npm install vite-plugin-compression -D
javascript 复制代码
// vite.config.ts
import compression from 'vite-plugin-compression'

export default {
  plugins: [
    compression({
      algorithm: 'gzip', // 或 brotliCompress
      ext: '.gz'
    })
  ]
}

可以把 JS/CSS 从几百 KB 压缩到几十 KB,浏览器自动解压

4. 使用 SSR(服务端渲染)或 SSG(预渲染)

对于 SEO 要求高或首屏复杂的页面,可以用:

  • SSR:服务端渲染,推荐使用 Nuxtvite-plugin-ssr
  • SSG:预渲染 HTML 页面,使用 vite-plugin-prerender
css 复制代码
npm i vite-plugin-prerender -D

5. 图片优化与懒加载

1)压缩图片,使用 webp 格式

2)大图懒加载:

xml 复制代码
<img v-lazy="url" /> <!-- 使用 vue-lazyload 插件 -->

或手动:

ini 复制代码
<img :src="show ? url : placeholder" @load="onLoad" />

6. 移除不必要的依赖和 console

arduino 复制代码
// vite.config.ts
export default {
  esbuild: {
    drop: ['console', 'debugger']
  }
}

7. 开启浏览器缓存 + CDN 提升加载速度

markdown 复制代码
-   把打包文件缓存加 hash(Vite 默认有)

-   使用 CDN 托管 `index.html`、图片、JS 包等静态资源

8. 预加载关键资源

使用 <link rel="preload"> 优先加载关键 JS/CSS

ini 复制代码
<link rel="preload" href="/src/main.js" as="script">

9. 骨架屏优化感知性能

使用骨架屏在加载时替代内容,提升"感知速度"

ini 复制代码
<Skeleton v-if="loading" />
<RealContent v-else />

10. 分析构建包体积

sql 复制代码
npm install rollup-plugin-visualizer -D
javascript 复制代码
// vite.config.ts
import { visualizer } from 'rollup-plugin-visualizer'

export default {
  plugins: [visualizer()]
}

然后运行 vite build → 查看打包中哪些包太大可优化

相关推荐
benbenAItalk5 小时前
数字人口播视频的批量生产实践:素材规范、任务编排与质量验收
java·前端·音视频
2601_962885725 小时前
如何用 Python 扫描 A 股跳空缺口并统计缺口回补概率?
java·前端·python
西瓜太郎12346 小时前
Claude Code、Codex CLI、Gemini CLI 能否共用一枚 Key?先看协议选择矩阵
前端·api 网关·claude code·gemini cli·codex cli
陈随易8 小时前
在Finch用了62亿词元,我认为这是新一代Agent工具之神
前端·人工智能·后端
水域安全老周8 小时前
水趣钓鱼救生衣专利拆解:两级锁紧如何解决落水人衣分离
java·前端·网络
计算机魔术师8 小时前
Anthropic CEO突然喊踩刹车,OpenAI罕见力挺:AI这辆车不能只踩油门了
前端
wing989 小时前
从codex转战workbuddy使用一周的感受
前端·人工智能·后端
EatFan9 小时前
Java接入支付宝 JSAPI 支付保姆教程(二):流程讲解与前后端代码讲解
前端·spring boot·后端·微信小程序·小程序·uni-app
梦想平凡9 小时前
百游棋牌源代码开发搭建教程(五):房间创建、座位分配与请求幂等实现
前端·javascript·数据库·源代码管理
IT_陈寒10 小时前
Redis的Set操作居然能把我的服务整挂了?
前端·人工智能·后端