前端开发的领域驱动设计
https://www.yuque.com/mayiprototeam/gfyt69/oq14ia
https://juejin.cn/post/6844903618680881165

  • 建立前端领域模型
  • 分离出领域层
  • 理解后端领域模型

image.png

隔离复杂度的思路

软件复杂度产生的根源,来自复杂的依赖关系

  • 随着功能的增加,系统复杂度也在不断增加,那么整个项目就会到达一个不可维护的状态
  • 首先需要从项目结构层面,去对复杂度做物理上的隔离,确保业务模块相关的代码都能在独立的文件夹中
  • 要妥善地处理业务模块之间的依赖关系。不仅需要在业务上区分硬依赖和软依赖。同时呢,在技术的实现层面也要能做到模块的松耦合

大型项目的架构设计时,一定要时刻有管理系统复杂度的意识

  • 不能只考虑功能是否实现,而不管复杂度
  • 这样做,终究会导致系统越来越复杂,不断降低开发和维护的效率,甚至导致项目失败

按领域组织文件夹结构

源代码要按照业务功能组织在一起,不要从技术角度进行了拆分代码

  • 对于文件夹的组织,我们一定要按领域去组织源代码
  • 一个与领域相关的文件夹,自身包含了自己需要的所有技术模块,这样无论是理解代码实现,还是开发时切换导航,都会非常方便
  • 要达到的目标其实是:删除一个功能,就像删除一个文件夹那么简单。这才是真正松耦合的系统
  • 尽量扁平化地组织所有代码,而不是再去按小的功能去增加嵌套的文件夹;否则,如果你再回头去看代码,或者新加入的成员去看,会增加理解成本。

博客的领域组织

每一个文件夹就相当于一个小型的项目,包含了与自己相关的所有源代码,就便于理解和开发
每个领域文件夹都有自己的 compoents、routing、actions、store 等

  • 把业务模块的文件夹都放在了一个名为 features 的文件夹下
  • 和其它一些全局配置的代码区分开来

image.png

插件机制

模块点 https://github.com/rekit/js-plugin