Vue.js 学习总结(10)—— Vue 前端项目性能优化常用技巧

1. 使用路由懒加载

在 Vue.js 应用中,路由懒加载可以延迟加载路由组件直到它们被需要时才加载,从而减少应用的初始加载时间。示例代码:

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

const Home = () => import('../views/Home.vue');
const About = () => import('../views/About.vue');

const routes = [
  { path: '/', component: Home },
  { path: '/about', component: About }
];

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

export default router;

2. 利用 Vite 或 Webpack 的代码分割

使用构建工具如 Vite 或 Webpack 的代码分割功能,可以将代码拆分成多个块,按需加载。Vite 示例配置:

javascript 复制代码
// vite.config.js
export default {
  build: {
    chunkSizeWarningLimit: 500,
    rollupOptions: {
      output: {
        chunkFileNames: 'assets/[name]-[hash].js'
      }
    }
  }
};

3. 使用 v-show 替代 v-if

v-if 会导致元素的创建或销毁,而 v-show 只是切换元素的显示状态。对于频繁切换的情况,v-show 更高效。示例代码:

javascript 复制代码
<template>
  <div v-show="isVisible">这是一段文本</div>
</template>

<script setup>
import { ref } from 'vue';

const isVisible = ref(true);
</script>

4. 避免不必要的响应式数据

减少组件的响应式数据,可以减少 Vue 的响应式系统需要追踪的变化,从而提升性能。示例代码:

javascript 复制代码
<script setup>
import { ref } from 'vue';

// 只有需要响应的数据才定义为响应式
const necessaryData = ref(0);
</script>

5. 使用计算属性和 watchEffect 代替频繁的手动数据更新

计算属性和 watchEffect 可以自动追踪依赖并缓存结果,避免不必要的计算。示例代码:

javascript 复制代码
<template>
  <div>{{ fullName }}</div>
</template>

<script setup>
import { computed } from 'vue';

const firstName = ref('John');
const lastName = ref('Doe');

const fullName = computed(() => `${firstName.value} ${lastName.value}`);
</script>

6. 优化列表渲染

使用 v-memo 或 track-by 来优化列表渲染,避免不必要的 DOM 更新。示例代码:

javascript 复制代码
<template>
  <ul>
    <li v-for="item in list" :key="item.id" v-memo="item">
      {{ item.text }}
    </li>
  </ul>
</template>

<script setup>
import { ref } from 'vue';

const list = ref([{ id: 1, text: 'Item 1' }, { id: 2, text: 'Item 2' }]);
</script>

7. 使用生产环境的构建配置

确保在生产环境中使用合适的构建配置,如压缩 JavaScript、CSS 和 HTML。Vite 示例配置:

javascript 复制代码
// vite.config.js
export default {
  build: {
    target: 'es2015',
    minify: 'terser',
    cssCodeSplit: true,
    sourcemap: false
  }
};

8. 利用浏览器缓存

合理配置 HTTP 缓存策略,可以减少服务器的负载和用户的等待时间。示例代码:

javascript 复制代码
// server/middleware/cache.js
app.use((req, res, next) => {
  res.setHeader('Cache-Control', 'public, max-age=31536000');
  next();
});
相关推荐
仿生狮子4 小时前
OpenAI 攻下千禧年难题之后,开发者似乎无动于衷
前端·数学·vibecoding
夏幻灵7 小时前
JavaScript this 面试:五种绑定规则、优先级与常见面试陷阱
开发语言·javascript·面试
Lvan的前端笔记7 小时前
docker:每个前端项目一个 Nginx 容器还是只有一个Nginx容器
前端·nginx·docker
三天不学习7 小时前
Egg.js 4 突然爆火,原因是否归结于AI 原生落地需求爆发?
前端·javascript·全栈·egg.js
xcs194058 小时前
前端 vue 的前端页面debugger 进不去
前端·javascript·vue.js
明月_清风9 小时前
Deno 终局来了:从挑战 Node 到被 Cloudflare 收编
前端·后端·node.js
Csvn10 小时前
框架性能优化
前端
雪芽蓝域zzs12 小时前
第 5 节:Marker 点击弹出 InfoWindow 信息窗口
vue.js
回眸&啤酒鸭12 小时前
【回眸】OpenSwarm 多智能体协作系统实战指南
大数据·前端·人工智能
用户693717500138412 小时前
2026,程序员的时代拐点到了
android·前端·后端