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

devtools/2024/10/20 15:34:46/

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();
});

http://www.ppmy.cn/devtools/127318.html

相关文章

AIGC技术的学习 系列二

文章目录 前言一、AIGC是什么?1.1. 基本概念1.2机器学习分类二、 语言模型2.1. 基于统计的语言模型。2.2. 基于神经网络的语言模型。2.3. 基于预训练机制的的语言模型/大语言模型三、读入数据3.1. 不得不说的Transformer3.2. 影响力3.3. 根据人类反馈的强化学习3.4. 生成式AI3…

flex布局

1、在 flex 容器上&#xff0c;设置align-items , 子项就会保持其自身的高度了 &#xff0c;不会自动高度对齐。 2、 <div class"flexboxborder"><div class"flexbox3"><div class"flexitem flexbox1"><div class"f…

探索社交网络中的情感脉动 | 微博评论舆情分析系统

在大数据时代&#xff0c;信息量爆炸&#xff0c;我们该如何快速理解那些海量的舆情&#xff1f;尤其是在像微博这样的平台上&#xff0c;评论区更是舆论风向的“前哨站”。今天给大家带来的这个微博评论舆情分析系统&#xff0c;就是一款为大家解决这一痛点的工具&#x1f50d…

docker 基础镜像里 scratch 和alpine,ubuntu centos详细对比(镜像优化)

1. scratch 特点 极简&#xff1a;scratch 是一个空的镜像&#xff0c;没有任何操作系统或文件系统。 体积&#xff1a;scratch 镜像的大小几乎为零&#xff0c;是最小的镜像。 灵活性&#xff1a;完全由用户自定义&#xff0c;没有任何预装的工具或库。 依赖管理&#xff1…

Flink时间窗口程序骨架结构

前言 Flink 作业的基本骨架结构包含三部分&#xff1a;创建执行环境、定义数据处理逻辑、提交并执行Flink作业。 日常大部分 Flink 作业是基于时间窗口计算模型的&#xff0c;同样的&#xff0c;开发一个Flink时间窗口作业也有一套基本的骨架结构&#xff0c;了解这套结构有助…

车载软件架构---软件定义汽车的复杂性

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

构建后端为etcd的CoreDNS的容器集群(二)、下载最新的etcd容器镜像

在尝试获取etcd的容器的最新版本镜像时&#xff0c;使用latest作为tag取到的并非最新版本&#xff0c;本文尝试用实际最新版本的版本号进行pull&#xff0c;从而取到想的最新版etcd容器镜像。 一、用latest作为tag尝试下载最新etcd的镜像 1、下载镜像 [rootlocalhost opt]# …

28——循环结构之累加应用(配套练习后续更新~~~~~)

例28.1 统计奖牌 (Standard IO 3167) 时间限制: 1000 ms 空间限制: 262144 KB 具体限制题目&#xff1a;2008年北京奥运会&#xff0c;Y国的运动员参与了n天的决赛项目(1≤n≤20)。现在要统计一下Y国所获得的金、银、铜牌数目及总奖牌数。 输入 输入n&#xff0b;1行&#xf…