读《腾讯文档前端架构思考和时间》有感

技术 · 2023-06-08

本文是读了腾讯文档前端TechLead, T12大佬曾探哥。 他经历了腾讯文档前端从0.1到现在的建设过程,和团队同学一起持续对腾讯文档前端进行架构优化,对前端架构设计有一些经验和兴趣 。 《JavaScript设计模式与开发实践》作者。这6-7万字文章中蕴含很多大型项目设计的经验和感悟,值得学习和借鉴。

1、模块依赖优化

a) 理清模块结构依赖,分类管理。

当小团队3-5个人的时候项目架构依赖还很好管理,尤其到项目规模变大了,以及团队规模也变大了,整个架构、模块、类、函数、工具、相关的复杂的和层级变深了,整个项目的管理难度会指数级上升,到后续一定要分工明确,边界与规范也需要明确。尽量减少不必要的依赖。

b) 合理抽象模块,降低耦合复杂度

在开发的过程中,一定要随着系统的升级迭代、新人加入一定要做好培训讲明规则,保持好各个模块之间的功能单一性、独立性、复用性。 模块功能职责单一之后,对模块的迭代修改就会相对简单,不至于牵一发而动全身。针对业务逻辑一定要有核心人物多来思考抽象业务逻辑。让模块具有普适性。

c) 代码架构分层,提升稳定性

数据、逻辑、UI分层管理,梳理出核心业务层封装,对核心逻辑的质量提供高优先级的的质量保证错误、监控措施。中大型项目要有清晰的生命周期,对新人培训需要多次培训讲解和引导他们理解架构。对于状态管理上,数据状态、事件监听,状态分发、UI渲染需要有保证数据流方向的一致性,越随意未来与不可控。保证触发事件的状态的转换能够清晰的进行处理才能项目结构的一致性管理。
项目实操过程中,数据模型尽量需要独立减少耦合方便扩展,与外部同学尽量用户数据状态来交换,这样靠近用户操作的逻辑和UI可以更灵活。

d) 调试与debug.

合理封装链路清晰,日志上报完善,方便本地调试、远程日志定位调试。

针对前三点如果没有更好的处理办法,可以通过增加中间层(中间件)的方式来处理。

进行架构设计的唯一目的是: 当需求变化来临时,我们希望付出尽可能小的代价就能满足这些需求的变化。

2、单向依赖架构

  • 核心是:
    让逻辑的分层的合理,逐层之间的分工和依赖是更明确,形成稳定的核心架构和逻辑,边缘/ui部分的逻辑可以优雅降级处理。
  • 单向依赖的优点:
    单向原则的风险是为了减少依赖而减少依赖,这样层级嵌套会很多,维护实体间关系的复杂度上升,粒度管理很有挑战,容易发生过度设计。
  • 单项依赖的缺点:
    依赖链路可能会太长
    模块拆分的太细、功能太散
    变更的风险和成本会增高

原文地址

腾讯文档前端架构思考和实践(一)- 模块依赖关系梳理
腾讯⽂档前端架构思考和实践(⼆) - 单向依赖架构
腾讯文档前端架构思考和实践(三)-依赖注入实践和改造
腾讯文档前端架构思考和实践(四) - ARK框架(解决品 类一致性问题)
[腾讯文档前端架构思考和实践(五) - 插件架构和腾讯文档UI组件设计]【欠费中】
腾讯文档前端架构思考和实践(六) - 架构与性能
腾讯文档前端架构思考和实践(七) - 一些代码设计经验
腾讯文档前端架构思考和实践(八) - 总结

本文作者:首乌

本文链接:https://www.wesee.club/archives/32/

版权声明:自由转载-非商用-非衍生-保持署名(cc 创意共享 3.0 许可证

架构
Theme Jasmine by Kent Liao

粤ICP备2023052298号-1