我们以成功的方式遵循原子设计在我们的库中组织我们的 ReactJS 组件。在构建了几十个组件之后,我们开始对如何组织有机体产生根本性的疑问。
我们的目标是建立一个经验法则,以便我们可以构建代码管理工具来正确处理组件,并为我们的团队提供一个标准来选择将新创建的组件放在哪里。
以下是我们采用的规则:
Atoms:是在库中不包含任何其他组件的组件。因此,它不应有任何import
来自其他原子组件。
分子:是只能导入原子的组件。因此,如果该组件具有一个import NNN from '../atoms/...'
,它将被视为一个分子。分子不能从自身(分子库)导入成分,只能从原子导入。
在有机体中,我们有第一个基本疑问。我将其描述为 3 个选项:
选项 A:
有机体:这些是只能导入分子的成分。所以只import NNN from '../molecules/...'
允许在有机体上。如果您必须在同一组件中导入一个分子和一个原子,它将被视为一个有机体。
选项 B:
有机体:这些是只能导入分子或分子和原子的组件。因此,仅允许import NNN from '../molecules/...'
或与生物import NNN from '../molecules/...'
一起使用。import NNN from '../../atoms/...'
选项 C:
有机体:这些组件只能导入分子或分子和原子或分子和原子和有机体。因此,仅允许生物体上或与一起或一起import NNN from '../molecules/...'
与一起。import NNN from '../molecules/...'
import NNN from '../../atoms/...'
import NNN from '../molecules/...'
import NNN from '../../atoms/...'
import NNN from '../../molecules/...'
模板:这些组件可以将较低层次结构中的所有组件(原子、分子和有机体)一起导入。如果它导入一个单一的有机体,它就是一个模板。当然,这里可以导入的内容取决于上面的生物选择决定。
Pages:可以导入所有内容,因为它的目标是将内容放在较低层次结构的元素上。
有机体决策将影响层次结构的深度以及库的使用。
似乎原子设计方法将其概念转移到有机体(带有模板和页面)之上,因此有机体应该是较低级别组件的更高聚合器(选项 C),但我们可以创建一个新级别,将所有聚合保持在模板级别,因此模板将不仅仅是页面结构,实际上是组件结构。
这在 ReactJS 库开发方面是否有意义,什么选项最适合开发策略?