对Vue组件化开发思想的一些理解

目录

组件的分类

为什么需要组件化开发

如何设计组件

组件间通信


组件系统是 Vue的一个重要概念,让我们可以用独立可复用的小组件来构建大型应用。几乎任意类型的应用的界面都可以抽象为一个组件树:

写一个 Vue 项目,其实就是在写一个个的组件。

组件的分类

从组件类型来说,Vue中的组件主要分为三种:页面组件、业务组件、基础组件。

1、页面组件

每一个页面(.vue)其实都可以看成是一个Vue的组件。它可以由多个业务组件或基础组件搭建而成,像搭积木一样。

特点是:

1)通过vue-router进行定义和映射;

2)没有props 选项和自定义事件,不会对外提供接口;

3)不会被复用;

在项目开发中,我们大部分写的都是这类组件(页面),主要是还原设计稿,完成需求。在协同开发时,每个人都是开发和维护自己的页面,很少有交集,也不需要有太多的组件复用设计上的考虑。

2、业务组件

业务组件,顾名思义,它是和业务逻辑强耦合,会包含数据获取、处理、渲染等数据交互的业务逻辑。在一定程度上和页面组件类似。

特点是:

1)通过Vue.component来创建(全局注册)或components 选项中定义(局部注册);

2)有props 选项和自定义事件,可以对外提供接口;

3)可以被复用;

在项目开发中,我们也会经常写这类组件,但需要考虑组件的可维护性和复用性。

3、基础组件

基础组件则不包含业务逻辑的组件,其功能更加独立具体,粒度更细,比如按钮、输入框、选择器等。

其特点包含业务组件的特点,不同之处是:

1)不包含业务逻辑;

2)功能更加单一;

3)通用性更强;

通常,业务组件只在当前项目中使用,基础组件可以在任何项目中使用。比如Vant、Element等开源的UI组件库,这些组件的 API 进行过高强度的抽象,可以通过不同配置实现不同的功能。

所以,基础组件的开发要考虑API 的设计、兼容性、以及组件间的通信等问题。不依赖 Vuex 和 Bus等其它库的情况下,进行各组件间的通信。

为什么需要组件化开发

通过组件化开发,可以提高代码的重用性、可维护性和可读性,降低项目的复杂度,提升开发效率和团队协作能力。

组件化的优势:

1、代码重用和可维护性

组件化开发可以使代码更加模块化和可复用。将页面划分为独立的组件可以使开发者在不同的页面中重复使用这些组件,减少代码冗余并提高代码的可维护性。

2、提高开发效率

组件化开发使得团队成员可以独立开发不同的组件,各自关注组件的实现细节,不需要关心整个页面的实现。这样可以并行开发不同的组件,提高开发效率。

3、降低项目复杂度

随着项目规模的增大,页面的复杂度也会增加。使用组件化开发可以将复杂的页面拆分为多个独立的组件,每个组件关注自己的功能,降低了整个项目的复杂度,使得代码更加清晰和可维护。

4、提升代码可读性

使用组件化开发可以使代码更加结构化和可读,每个组件都是一个独立的模块,有自己的模板、样式和逻辑。这样开发者可以更容易理解和维护代码,也方便其他人理解和使用组件。

5、实现更好的团队协作

组件化开发使得团队成员可以按照各自的专长和责任进行开发,每个人负责一部分组件。这样可以更好地分工合作,提升团队的协作效率。

如何设计组件

在Vue组件设计中,应关注其可读性、可维护性和可复用性。Vue组件设计的一般原则,或者说Vue组件设计需要注意下面几个方面:

1、单一职责原则

每个Vue组件应有单一职责,只负责一个明确的功能模块。

2、数据驱动视图

每个Vue组件的视图应该是基于一个数据模型的,这个数据模型可以是组件内部自身的数据,也可以是组件的父组件传递的props。

3、组件划分

Vue组件应该根据功能、状态等设计原则进行划分,避免组件过度复杂。

4、组件可复用

组件应该易于复用和组合,避免重复造轮子。

5、组件通信

Vue组件之间的通信应该合理并避免出现不必要的性能瓶颈。

组件间通信

在Vue组件间进行通信有以下几种方式:

1、Props / 父子组件通信

父组件可以通过props向子组件传递数据,子组件通过props接收数据。这是最常见和简单的组件通信方式。

2、自定义事件 / 子组件向父组件通信

子组件可以通过$emit方法触发自定义事件,并传递数据给父组件。父组件可以使用v-on指令监听子组件触发的事件,然后处理相应逻辑。

3、$ref / 直接访问子组件实例

可以使用$ref来引用子组件实例,然后直接访问子组件的属性和方法。这种方式一般用于父组件直接操作子组件的场景。

4、$parent / $children

访问父 / 子实例。 这两种都是直接得到组件实例,使用后可以直接调用组件的方法或访问数据。

5、Vuex / 集中式状态管理

Vuex是Vue的官方状态管理库,用于管理应用的各种状态。可以在任意组件中通过commit提交mutations或dispatch触发actions修改状态,并在需要的组件中通过计算属性或getter获取状态。

6、Provide / Inject

父组件可以使用provide选项提供数据,然后子组件可以使用inject选项注入这些数据。这样就可以在父组件中传递数据给子孙组件,而不需要显式地通过props传递。

7、事件总线 / 非父子组件通信

可以使用Vue实例作为事件总线,在其中定义事件和触发事件的方法,然后在任意组件中通过$on和$emit来进行事件的监听和触发。这样就可以实现非父子组件之间的通信。

8、插槽 slot

插槽 slot,它可以分发组件的内容。当需要多个插槽时,会用到具名 slot。没有写名字的,就是默认的 slot。作用域插槽在父组件传递内容时还可以在插槽内部使用子组件的数据。

以上是常用的Vue组件间通信方式。而组件间通信场景主要归纳为三种:父子通信、兄弟通信、跨级通信。选择适合场景的通信方式可以使代码更加清晰、可维护和可扩展。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/20790.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

达梦sql执行计划、HINT、索引简单应用

目录 收集统计信息. 3 1. 通过DBMS_STATS包中的方法. 3 2、删除指定表的统计信息. 3 执行计划. 3 常用执行计划操作符. 4 统计指定sql执行号的所有操作符的执行时间. 5 HINT 5 并行操作:. 6 查询计划重用、结果集重用. 7 示例. 8 1、收集统计信息&#x…

(中等)LeetCode 剑指OfferII 074. 合并区间

排序: 用数组merged存储最终的答案 首先,将列表中的区间按照左端点升序排序,将第一个区间加入merged数组中,并按顺序依次考虑之后的每个区间: 如果当前区间的左端点在数组merged中最后一个区间的右端点之后&#xf…

unity计时,1秒执行一次

1.核心代码示例 2.代码 using System.Collections; using System.Collections.Generic; using UnityEngine;public class AddRandomChilden : MonoBehaviour {// Debug.Log("开始进入update");float i 0;// Start is called before the first frame updatevoid Sta…

【问题分析解决】git添加.gitignore后不生效问题

一,问题现象 在已经提交过的git管理的项目中,新增加一个.gitignore文件,或者修改.gitignore文件之后,新增的内容不生效。 二,问题原因 因为我们误解了.gitignore文件的用途,该文件只能作用于Untracked F…

DSP(css)开发代码掉电保存下载到flash

DSP(css)开发代码掉电保存下载到flash 文章目录 DSP(css)开发代码掉电保存下载到flash source目录下删除28335_RAM_lnk.cmd,添加F28335.cmd和DSP2833x_MemCopy.c文件 main函数添加下列内容(一般添加在 Ini…

10.1.5 查询指令是否为 Bash shell 的内置命令: type

通过 type 这个指令我们可以知道每个指令是否为 bash 的内置指令。 此外,由于利用 type 搜寻后面的名称时,如果后面接的名称并不能以可执行文件的状态被找到, 那么该名称是不会被显示出来的。也就是说, type 主要在找出“可执行文…

【PHP面试题35】什么是MVC,为什么要使用它

文章目录 一、前言二、MVC介绍2.1 模型(Model)2.2 视图(View)2.3 控制器(Controller) 三、MVC模式的优点四、总结 一、前言 本文已收录于PHP全栈系列专栏:PHP面试专区。 计划将全覆盖PHP开发领域…

赋能智能智造-RK3568智能主板助力机器人产业高速发展

机器人作为现代制造业的重要一环,正在以惊人的速度推动着生产效率和智能化水平的提升,它们在生产线上的准确操作和高效工作,为企业带来了巨大的竞争优势。关于工业机器人的编程和控制技术,在过去几年中已经有了很多发展和新的应用…

【每日算法】【226. 翻转二叉树】

☀️博客主页:CSDN博客主页 💨本文由 我是小狼君 原创,首发于 CSDN💢 🔥学习专栏推荐:面试汇总 ❗️游戏框架专栏推荐:游戏实用框架专栏 ⛅️点赞 👍 收藏 ⭐留言 📝&…

十五分钟逐步掌握关键路径问题(时间余量、关键活动以及关键路径的求解)

关键路径问题 名人说:莫听穿林打叶声,何妨吟啸且徐行。—— 苏轼《定风波莫听穿林打叶声》 本篇笔记整理:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 关键路径问题〇、概念说明1、AOE网2、关键路…

【多线程初阶】Thread类常见方法以及线程的状态

多线程初阶系列目录 持续更新中 1.第一次认识线程 2.Thread类常见方法以及线程的状态 … 文章目录 多线程初阶系列目录前言1. Thread 类及常见方法1.1 常见构造方法1.2 常见属性1.3 重要方法1.3.1 启动一个线程 ---- start()1.3.2 中断一个线程 ---- interrupt()1.3.3 等待一…

oled拼接屏优势详解

湖北省是中国中部地区的一个省份,拥有着丰富的资源和广阔的市场。在这个省份中,随着科技的不断发展,越来越多的企业开始使用oled拼接屏来展示自己的产品和服务。那么,什么是oled拼接屏呢?它有哪些优势和应用场景呢&…