
react 构建可维护可扩展的前端应用
发布日期:2021-05-08 01:27:11
浏览次数:27
分类:精选文章
本文共 1401 字,大约阅读时间需要 4 分钟。
一、前端项目的理想架构
-
前端项目的理想架构,可维护、可扩展、可测试、易开发、易构建
-
对于易于开发,如下所示:
- 开发工具是否完善
- 生态圈是否繁荣
- 社区是否活跃
- 对于易于扩展,如下所示:
- 增加新功能是否容易
- 新功能是否会显著增加系统复杂度
- 对于易于维护,如下所示:
- 代码是否容易理解
- 文档是否健全
- 对于易于测试,如下所示:
- 功能的分层是否清晰
- 副作用少
- 尽量使用纯函数
- 对于易于构建,如下所示:
- 使用通用技术和架构
- 构建工具的选择
二、拆分复杂度,按领域模型组织代码,降低耦合度
- 项目的演变,如下所示:
- 项目初期,规模小,模块关系清晰
- 项目逐渐复杂,添加了更多组件和其它元素
- 项目收尾,文件结构,模块依赖错综复杂
- 将业务逻辑拆分成高内聚松耦合的模块,可以通过
React
技术栈实现
三、拆分复杂度,如何组织 component、action 和 reducer
- 文件夹结构,如下所示:
- 按
feature
组织源文件 - 组件和样式文件同一级
Redux
单独文件夹- 单元测试保持同样目录结构放在
tests
文件夹
-
组件和样式、组织
Action
和Reducer
-
对于组织
component、action 和 reducer
,如下所示:
- 按
feature
组织组件,action
和reducer
- 使用
root loader
加载feature
下的各个资源 - 做到高内聚松耦合
四、拆分复杂度,如何组织 React Router 的路由配置
-
在每个
feature
中单独定义自己的路由 -
使用
JSON
定义顶层路由,解析JSON
路由到React Router
语法 -
对于组织
React Router
的路由配置,如下所示:
- 每个
feature
都有自己的专属路由配置 - 顶层路由使用
JSON
配置更易维护和理解 - 如何解析
JSON
配置到React Router
语法
五、使用 Rekit,创建项目,代码生成和重构
Rekit
背景,如下所示:
- 前端技术功能越来越强大,开发变得越来越复杂
- 一个独立功能通常需要多个文件组成
- 代码模版很复杂
- 重构极为困难
- 项目复杂后很难理解和维护
Rekit
,更好的代码导航,如下所示:
- 语义化的组织源代码文件
- 使用子
Tab
来展示项目元素的各个部分 - 直观的显示和导航某个功能的所有依赖
Rekit
,一键生成项目元素,如下所示:
- 直观的
UI
用于生成组件,action,reducer
等 - 模版代码遵循最佳实践
- 支持命令行方式创建项目元素
Rekit
,重构非常容易,如下所示:
- 右键菜单重命名或者删除某个项目元素
- 所有相关代码都会一次性重构从而保证一致性
- 详细的
log
信息显示重构的完整修改
Rekit
,可视化的项目架构,如下所示:
- 项目总体架构的可视化图表
- 项目依赖关系的图表
Rekit
是如何工作的,如下所示:
- 定义了基于
feature
的可扩展文件夹结构 - 基于最佳实践生成代码和管理项目元素
- 提供工具和
IDE
确保代码和文件夹结构遵循最佳实践
六、使用 Rekit,遵循最佳实践,保持代码一致性
- 对于遵循最佳实践,如下所示:
- 以
feature
方式组织代码 - 拆分组件,
action
和reducer
- 拆分路由配置
- 对于通过代码自动生成保持一致性,如下所示:
- 文件夹结构一致性
- 文件名一致性
- 变量名一致性
- 代码逻辑的一致性
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月16日 15时21分29秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Django认证系统并不鸡肋反而很重要
2021-05-09
快用Django REST framework写写API吧
2021-05-09
tep用户手册帮你从unittest过渡到pytest
2021-05-09
12张图打开JMeter体系结构全局视角
2021-05-09
Spring Boot 2.x基础教程:构建RESTful API与单元测试
2021-05-09
[UWP 自定义控件]了解模板化控件(1):基础知识
2021-05-09
UWP 自定义控件:了解模板化控件 系列文章
2021-05-09
[UWP]从头开始创建并发布一个番茄钟
2021-05-09
在 Azure 上执行一些简单的 python 工作
2021-05-09
WinUI 3 Preview 3 发布了,再一次试试它的性能
2021-05-09
使用命令把SpringBoot项目打包成可运行的jar包(简洁,操作性强)
2021-05-09
List数组排序
2021-05-09
VMware vSphere 离线虚拟机安装 BIND 9
2021-05-09
说说第一份工作
2021-05-09
dojo/request模块整体架构解析
2021-05-09
dojo/aspect源码解析
2021-05-09
Web性能优化:What? Why? How?
2021-05-09
Javascript定时器学习笔记
2021-05-09
dojo的发展历史
2021-05-09
Liunx百宝箱(Centos补充)
2021-05-09