【Vue3】4个比较重要的设计模式!!

简介: 【Vue3】4个比较重要的设计模式!!

在我投身于前端开发的职业生涯期间,曾有一次承接了一个大型项目的维护工作。此项目运用的是 Vue 框架,然而其代码结构紊乱不堪,可维护性极度糟糕😫。

这使我深刻领会到,理解并运用 Vue 中的重要设计模式是何等关键!

由此,我开启了对 Vue 设计模式的深度研究之旅,期望能够提升自身的开发水准,让代码更具优雅性、高效性以及良好的可维护性💪。

所以,今天给大佬们分享我认为4个vue中比较重要的设计模式!

一、组件化设计模式

组件化是 Vue 框架的核心思想之一。在 Vue 中,我们将页面拆分成一个个独立的组件,每个组件都有自己的模板、逻辑和样式。这种设计模式使得代码的复用性大大提高,同时也方便了团队协作和代码维护📦。

<template>
  <div>
    <h2>{{ title }}</h2>
    <p>{{ content }}</p>
  </div>
</template>
<script setup>
import { ref } from 'vue';
// 定义组件的数据
const title = ref('这是组件的标题');
const content = ref('这是组件的内容');
console.log('组件数据初始化完成');
</script>
<style scoped>
h2 {
  color: blue;
}
p {
  font-size: 16px;
}
</style>

组件化的优点

  1. 1. 提高代码的复用性,减少重复代码的编写。
  2. 2. 增强代码的可维护性,每个组件的逻辑相对独立,便于修改和调试。
  3. 3. 提升开发效率,能够快速搭建复杂的页面结构。

二、单向数据流设计模式

在 Vue 中,数据的流动通常是单向的,即从父组件流向子组件。父组件通过属性将数据传递给子组件,子组件不能直接修改父组件传递的数据,而是通过触发事件通知父组件进行修改📣。

<template>
  <child-component :data="parentData" @updateData="updateParentData" />
</template>
<script setup>
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';
// 父组件的数据
const parentData = ref({ name: '张三', age: 20 });
// 处理子组件触发的更新数据事件
function updateParentData(newData) {
  parentData.value = newData;
  console.log('父组件数据更新完成');
}
</script>

单向数据流的优点

  1. 1. 保证数据的一致性和可预测性,避免数据的混乱修改。
  2. 2. 使得组件之间的关系更加清晰,易于理解和维护。

三、观察者模式

Vue 中的响应式系统就是基于观察者模式实现的。当数据发生变化时,Vue 会自动通知依赖该数据的组件进行更新👀。

const data = reactive({ count: 0 });
// 依赖数据的计算属性
const doubleCount = computed(() => data.count * 2);
watchEffect(() => {
  console.log(`当前计数: ${data.count}, 双倍计数: ${doubleCount.value}`);
});
data.count++;

观察者模式的优点

  1. 1. 实现了数据和视图的自动同步,减少了手动操作的繁琐。
  2. 2. 提高了应用的性能,只更新需要更新的部分。

四、发布-订阅模式

在 Vue 中,我们可以使用事件总线来实现发布-订阅模式,用于组件之间的非父子通信📨。

// 创建事件总线
const eventBus = new Vue();
// 组件 A 发布事件
function componentAPublish() {
  eventBus.$emit('customEvent', { message: '来自组件 A 的消息' });
  console.log('组件 A 发布事件');
}
// 组件 B 订阅事件
eventBus.$on('customEvent', (data) => {
  console.log(`组件 B 接收到事件: ${data.message}`);
});

发布-订阅模式的优点

  1. 1. 解耦了组件之间的直接依赖,增强了系统的灵活性。
  2. 2. 方便实现跨组件的通信,不受组件层级关系的限制。

结论

通过对这些设计模式的深入理解和运用,我在 Vue 开发中能够更加得心应手,写出高质量、可维护性强的代码🎉。

希望大家也能够在实际开发中充分利用这些设计模式,提升自己的开发水平,打造出更加优秀的 Vue 应用!💖

相关文章
|
缓存 JavaScript 前端开发
看完这篇文章,不再害怕Vue3的源码(二)
看完这篇文章,不再害怕Vue3的源码
|
存储 网络安全 网络架构
网络技术基础(5)——VRP和telnet
VRP(Versatile Routing Platform)是其数据通信产品的操作系统,支持路由器和交换机的高效运行,提供统一用户界面和控制平面功能。VRP通过组件化结构实现功能裁剪和扩展。设备初始化时,BootROM先启动,然后运行系统软件,从默认路径读取配置文件。管理设备可通过命令行或Web网管,命令行包括用户界面和级别控制,提供权限管理。文件系统管理涉及存储设备如SDRAM、Flash、NVRAM等。用户可使用 PuTTY 工具通过Console口本地登录,或通过SSH远程登录。VRP命令行具有编辑和在线帮助功能,提供undo命令恢复默认设置。
|
资源调度
#发布npm包遇到错误,因为用了淘宝镜像地址的原因的解决方法-403 403 Forbidden - PUT https://registry.npmmirror.com/-/user/org.cou
#发布npm包遇到错误,因为用了淘宝镜像地址的原因的解决方法-403 403 Forbidden - PUT https://registry.npmmirror.com/-/user/org.cou
1193 0
|
JavaScript
Vue中 使用 iframe 嵌入本地 HTML 页面 并 相互通信
Vue中 使用 iframe 嵌入本地 HTML 页面 并 相互通信
2788 0
Vue中 使用 iframe 嵌入本地 HTML 页面 并 相互通信
|
Web App开发 监控 JavaScript
chrome安装vue插件 vue-devtools
chrome安装vue插件 vue-devtools
4284 0
|
Web App开发 测试技术 API
WebPageTest
WebPageTest
426 1
|
存储 消息中间件 前端开发
工厂人员定位管理系统架构设计:构建一个高效、可扩展的人员精确定位
本文将深入探讨工厂人员定位管理系统的架构设计,详细解析前端展示层、后端服务层、数据库设计、通信协议选择等关键环节,并探讨如何通过微服务架构实现系统的可扩展性和稳定性。
424 10
echarts如何设置滚动条(dataZoom),实现横向或纵向滚动
echarts如何设置滚动条(dataZoom),实现横向或纵向滚动
echarts如何设置滚动条(dataZoom),实现横向或纵向滚动
|
SQL 存储 分布式计算
【Hive】请谈一下Hive的特点,Hive和RDBMS有什么异同?
【4月更文挑战第17天】【Hive】请谈一下Hive的特点,Hive和RDBMS有什么异同?
|
前端开发 JavaScript 网络协议
【专栏】探讨了前端性能优化中的 Performance 工具,它能帮助开发者分析页面加载速度和交互体验
【4月更文挑战第29天】本文探讨了前端性能优化中的 Performance 工具,它能帮助开发者分析页面加载速度和交互体验。通过 Performance,可检测资源加载时间、JavaScript 执行时间、重绘与回流等关键指标,找到性能瓶颈。文中列举了三个实践案例,如优化图片加载、减少 JavaScript 执行时间和避免重绘回流,展示如何利用 Performance 改进页面性能,提升用户体验。开发者应定期使用 Performance 分析并学习新优化技术,以适应Web开发的快速发展。
515 1