luoxue-victor / my-blog

公众号【前端技匠】作者

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

专题2: 谈谈你对组件的看法

luoxue-victor opened this issue · comments

一个组件应该有以下特征:

  1. 可组合(Composeable):一个组件易于和其它组件一起使用,或者嵌套在另一个组件内部。如果一个组件内部创建了另一个组件,那么说父组件拥有(own)它创建的子组件,通过这个特性,一个复杂的 UI 可以拆分成多个简单的 UI 组件;
  2. 可重用(Reusable):每个组件都是具有独立功能的,它可以被使用在多个 UI 场景;
  3. 可维护(Maintainable):每个小的组件仅仅包含自身的逻辑,更容易被理解和维护;
  4. 可测试(Testable):因为每个组件都是独立的,那么对于各个组件分别测试显然要比对于整个 UI 进行测试容易的多。

开发一个组件需要的考虑

  1. 规范性:是否符合一个常规组件的使用方法,目录、命名、格式是否规范
  2. 质量可靠性:是否经得住长时间考验
  3. 可扩展性:是否可以容易快速扩展新的功能
  4. 兼容性:是否兼容了各个平台
  5. 易用性:是否简单易用,将学习成本降到最低

前端与其他程序开发的共性 高内聚,低耦合,易读写,可复用

  1. 高内聚 是指将在逻辑上可以归类为一个单元的代码封装在一起,尽量保障一块代码集合主要解决一个需求,在前端开发中,最常见的便是将一个逻辑单元的代码使用IIFE函数进行封装。

  2. 低耦合 可以说,保障代码高内聚即在一定程度上满足了代码“低耦合”的要求,因为低耦合即是要求一个逻辑单元的代码块在改动时,不会造成其他逻辑单元代码块的变动,在前端开发中,即是要求各代码块不要过多共享某变量或对象,在不得以的情况下,一定要清晰注释。

  3. 易读写 是指保持代码的可读,可修改性,即在一定时期后,后来的开发者依然可以凭借阅读代码的方式,了解你的编程思路,并根据新的需求,修改你留下的代码。这里牵扯到良好的代码缩进,命名规范,注释等。

  4. 可复用 是指处于节省程序员生命的目的,遵从DRY原则,在一个项目中,抽象出功能类似的业务需求,通过组件化的方式编写代码,实现只写一次,到处使用的令人愉快的目的。

你是如何看待组件的?如果让你写一个组件你会考虑哪些?

非常赞同
单个组件功能一定要独立,拆分要清晰,不可依据某一或某几个功能需求,封装过于复杂的功能性拼凑组件,这将非常不利于后期维护和扩展,功能模块有需求,可以利用组件单元自行组装

个人认为组件大体应该分成两类,一种是业务组件,一种是基础样式组件。样式组件肯定是要细粒度划分,最好拆分到不能再分,方便组合复用。而业务组件,肯定是方便业务上的修改,维护的,应该是包含一些基础样式组件,和一些业务逻辑代码在其中的。通俗的讲,业务组件就是一个完成品,而基础样式组件就是一个零件。