作者:禅与计算机程序设计艺术
1.背景介绍
什么是组件?组件在前端领域一般用于实现页面各个元素、功能的封装,其本质就是一个JS对象,具有自我描述性、可复用性、可测试性等特点,可以被其他组件引用或者嵌套。但是,组件还可以分为两类:第一类是基础组件(基本组件),即react提供的组件;第二类是业务组件(自定义组件),即自己开发的组件,这些组件一般都是以Class的方式定义,通过组合各种React提供的基础组件来实现自己的功能。但是有时候业务组件也需要依赖于基础组件才能完成工作,比如说表单输入组件就需要用到标签和一些样式相关的基础组件。那应该如何实现业务组件之间的依赖关系呢?
由于历史原因,JavaScript语言诞生时没有面向对象的编程思想,只能通过函数和原型链进行对象间的依赖关系。随着ES6中类的出现,我们能够更加方便地编写面向对象的程序,并且引入一些更高级的特性。例如,可以在类中定义构造器方法、实例变量、静态属性及方法等。基于此,Facebook推出了React框架,它是一个声明式的、高效的、可扩展的JS库,用于构建用户界面。React在2013年底开源,目前已经成为最热门的前端UI框架之一。很多公司和组织已经把React作为项目前端技术栈的一部分,包括国内的阿里巴巴、腾讯、美团、京东、百度等。在React框架中,组件之间是采用组合而不是继承的方式,这便有了“组合”与“继承”两个概念的区别,本文将详细讨论它们的区别及优缺点。
2.核心概念与联系
组件及其类型
首先,我们先明确一下组件的概念。组件是由一些html元素组成的页面逻辑单元,具有自我描述性、可复用性、可测试性等特点,可以被其他组