前端项目组件化开发见解

如今前端项目组件化开发已经是很普及的了,但是想将一个较为复杂的项目完全拆分也不是一件容易事。
以下是我在项目开发中和平时视频学习中总结出的一些个人经验,对于项目把握的最小粒度发表个人的见解,若有分歧,欢迎探讨指正。

组件化开发的优点

  • 降低项目的耦合性
  • 降低项目复杂度
  • 降低项目开发成本
  • 提高开发工作效率
  • 提高项目扩展性
  • 提高项目的可维护性

怎么设计一个组件

在很多时候我们在考虑开始一个项目时会将整体范围内的设计稿过完,会在自己的脑中有个大概的设计思路。但是我们最多考虑的是组件的复用性,因为组件的复用会大大节约开发时间,但这往往会让我们陷入一个纠结的状态。

通用型组件

通用型组件最大的特点就是满足大多数的业务情况,特点如下:

  • 复用性:例如 button、input、icon 之类。
  • 可配置性:例如 组件内字体的颜色、图片的规则、按钮的位置、按钮点击事件的处理逻辑等,都是可以做成可配置的。可配置性很强的组件的复用性一定不会太差。

如 Ant Design、Element UI、iView 等等这些优秀的前端组件库将前端组件化的特性发挥到了极致,这些都是通用型组件。

非通用型组件(特定业务组件)

对于非通用型组件,大多数情况是在某个具体项目中,按照项目的特定业务而设计的,特点如下:

  • 无复用性:在整个项目中可能只某个页面使用。
  • 专一性:专一性可能是所有组件的共性,在这里说是想表明组件对页面结构进行拆分是为了让业务模块独立,让页面结构一目了然。

专一性就是一个组件只干一件事,并且要把这件事闭环走通

有些情况是引入一些通用型组件,但是通用型组件不能完全满足项目的需求,可能需要对组件进行相应的改造,来达到满足项目需求。例如:

  • 通用型组件的样式无法满足的时候,要对组件样式进行修改。
  • 通用型组件的逻辑无法满足的时候, 要对组件逻辑进行修改,这比修改样式的成本高很多,所以这时候就需要开发者自己去衡量自己写和修改这个组件对于自己哪个成本更高。
组件内部特性

不管是什么组件,为了让组件逻辑更加健壮,需要注意以下几点:

1、参数传入及校验
  • 参数类型
  • 参数是否必填
  • 参数默认值:可选,个人一般会给
2、生命周期

一般要注意的是组件初始化、组件渲染、组件数据变化及组件销毁

3、函数参数校验

这一步用传统的数据类型判断即可。

4、发送事件

用 this.$emit('事件名'),父级组件接收并处理相关逻辑

如何把握项目组件的粒度

最小粒度:不能继续往下拆分的单元(组件)

首先我们要清楚一点,通用型组件的开发的成本要远远高于特定业务型组件,因为通用型组件所要考虑和兼容的是很多不同需求的业务,势必要事无巨细的考虑到不同情况下的方方面面,而通用型组件往往是发布出来开源,供其它人使用的。如果有 bug,别人自然不会用你的了。

对于正在开发的项目,项目周期往往比较紧张,开发时不可能在封装组件的时候面面俱到,所以大部分时候在开发特定业务型组件。

那么,组件的粒度的把控就在于你在开发中封装业务组件时,业务组件下的页面结构要细分到什么程度。举个例子:
页面 PageA 存在 A(search)、B(banner)、C(recommend)、D(classify)等功能点,所以组件是按照A、B、C、D去封装,A、B、C、D下的页面结构往下细化进行页面结构的封装,最后组件的结构为:

  • PageA
    • A
      • A1
      • A2
    • B
    • C
      • C1
        • C11
    • D
      • D1

以上最小粒度为 C11,但对于不同的开发者来说 C11 不一定是最小粒度,他可能会细化出 C111 和 C112,并没有说继续细化会错,也没有说粒度为 C11 就是最佳方案。

所以,如何把握项目组件的粒度,没有标准答案,但是一定不推荐的是一个页面没有细化组件或者组件的深度达到第五阶第六阶,通常情况下第二三阶是在项目中比较合理的粒度,因为在移动端项目里第二三阶组件都没法将页面结构表达清楚,那更高阶的也不一定能表达清楚。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文章是我最近在公司的一场内部分享的内容。我有个习惯就是每次分享都会先将要分享的内容写成文章。所以这个文集也是用来...
    Awey阅读 9,599评论 4 67
  • 一、基础理论 1.什么是组件? 1.1组件化的定义 将实现页面某一部分功能的结构、样式和逻辑封装成为一个整体,使其...
    MelodyJie阅读 1,661评论 0 1
  • 今天阴阴阳阳的天气...抬头看天空的时候,心都是空旷的。x,在你的天空里,是否还有明朗的笑脸呢?是否还一样爱憎得无...
    初鹚阅读 238评论 0 0
  • 两天没写总结了,每天都是凌晨才睡,起的老早,都是工作的事情,今天忙好些,就跟代理沟通,看看有没有什么要补货的,挺好...
    刀娅阅读 187评论 0 0

友情链接更多精彩内容