前端领域模型,重构前端研发模式

简介: 阿里巴巴-大钉钉-前端团队-烛象 原创文章 进行本文分享,希望对在路上的同学们有所帮助

无论是小程序还是H5,前端(GUI编程)的展现形态的变化性一直是前端开发效率变革上最大的拦路虎,本文拟抽象一个新的概念「前端领域模型」,对研发模式进行重新思考,以探讨如何降低前端研发人力、提升开发体验为目标。

Part I 对规范/规则的论述

"无规范不成方圆",规范的一致遵守能收敛噪音,达到一致性。在软件工程的领域,当规范演变成规则后,软件开发的持续交付会因为规则的遵守而得以保持垂直、正交,熵的变化也能有可见的收敛。

在前端开发的过程中,我把开发过程抽象成如下的公式:

1. 前端项目 = PageCompose(前端页面)

2. 前端页面 = ComponentCompose(Data(数据) + UI(展现) + Interaction(交互))

3. PageCompose ≈ Router(路由) Or Navigation(导航)

4. ComponentCompose ≈ Layout(布局编排)

目前市面上大部分的解决方案很多都是专注在其中某一个维度的方案解决,大致有以下几类:

UI 解决方案:

  • Ant-Design: 面向React的前端设计语言,UI规范的集大成者,用户遍布全球,Github近 60K star。
  • iView: 面向Vue的前端UI库,Github star近24K

Data 解决方案

  • Lodash: 老牌js工具库,用户遍布全球,Github近 45K star。
  • Rxjs: 异步流解决方案,Github近 22K star。
  • immer: immutable数据处理方案的后起之秀,Github近 17K star。

PageCompose 解决方案

  • React-Router: 面向React的路由方案,Github近 41K star。

整体的解决方案:

  • Umi:基于插件化的React应用解决方案。
  • Angular:大而全的H5应用解决方案。

以上列举的有名的框架或者库,是全球开发者用脑袋进行的投票,是值得研究和学习的典范。

作为以上解决方案的重度使用者,我非常强烈的感知到了规范和规则在软件开发过程中的巨大指引作用,这些规范和规则主要体现在如下几个点:

  1. 体验极佳的api设计: 明确的IO(入参和返回)。
  2. 明确的objective目标: 自律性极强,在某个解决方案领域做深做强。
  3. 单一的使用及设计规范: 单一的强规范约束让使用者"一处学会,遍地会用",这是一款技术产品传播非常重要的点。

Part II 前端领域研发模式的探讨

"工欲善其事,必先利其器",良好的研发模式是软件持续交付的重要保障。 前端是软件开发中交付密度最高的场景,高频的变更和发布严重威胁着前端稳定性,因此"优秀"的研发模式对前端开发而言极其重要,在 John Ousterhout 的著作《A Philosophy of Software Design》提到 软件设计的核心在于降低复杂性,这里面的我想说的"优秀"更多的也将专注在 降低前端复杂性。

大部分前端的研发流程有着相似的分层结构:

image.png

现代前端开发已经有非常成熟的数据驱动(Data Driven Development)开发框架React/Vue、在UI组件库、函数库、网络库、异步处理、数据处理等领域也有非常多的优秀沉淀。 然而,在生态如此繁盛的今天,前端开发在很多业务、很多公司依旧是最大的人力瓶颈,前端人效提升一直是令人头大的命题。

究其原因,笔者认为有以下几个急需攻克的难题:

  1. UI层(前端界面)复用性极差: 前端UI代码大量采用VM(view + model)的方案,面向多样化的设计稿进行开发,代码差异化无法收敛。
  2. Data层(数据处理)复用性极差: 服务端通信给前端的数据虽然已经是视图对象(view object),但是仍旧带有鲜明的领域(Domain)属性,数据结构的差异化直接导致数据处理逻辑的复用性无法收敛。

image.png

举个例子。 上图是非常经典的产品展示页面,然而这2个页面分属于不同的产品线,开发人员的物理隔离和UI上的些微差异性,直接导致彼此可复用的前端代码是0%,需要2个前端人员才能完成需求。

再深究下。 以上前端代码复用度极差的后果,我们能归咎于产品、设计、运营等同学吗?或者说,产品、设计、运营同学,他们难道没有碰到类似的困扰?多次的重复工作,带来的效率问题始终是难以回避的问题。

对于前端开发来说,我想提出一个研发流程上的新概念: 前端领域模型 来解决以上的问题。

Part III 前端领域模型的探讨

前端领域模型(FrontEnd Domain Model): 面向 业务领域 抽象的 UI 模型。

前端领域模型抽象出来后将会对整个研发流程进行一个重构,流程节点将会增加如下蓝色区域。

image.png

如上图,研发流程重构后,前端开发中的 「业务UI」 是面向 「FDO」 进行编程,把业务的个性化转嫁给了Adapter,从而达到「业务UI」复用(Low Code)的目的。

在实际开发中,前端同学需要做的就是「选择合适的业务UI模板」 -> 「实现(implement)对应的FDO」即可快速上线一个业务模块。

image.png

这种开发模式解决的最大的问题是 **软件开发的持续交付,**通过将前端复杂度进行颗粒度的合理拆分,让每个需求迭代产生的复杂度,从指数级变成了线性。

Before: 业务迭代的复杂度 ≈ ViewModel的复杂度 = view复杂度 * Model复杂度

After: 业务迭代的复杂度 ≈ Model的复杂度 + View的复杂度

复杂度的降低带来的收益,不仅仅是前端效率的提升,更是前端稳定性的提升。

Part IV 进一步开放,甚至商业化?

对于大公司如腾讯、阿里、字节,开放平台在整个业务体系有着极高的战略意义。 大量的生态ISV,如何开发出符合要求的应用,最直接的体现就是 前端UI的一致性。

借助如上的研发流程创新,通过制定高质量的前端领域模型(FDO)规范,生态ISV可以较轻松的复用和遵守对应的UI开发规范,进行适当的改造即可快速开发出符合要求的应用,不仅仅是成本降低,更是效率的提升。

这里面的空间,可以想象下,对人力成本的解放有着重要的意义。

Part V 结语

本文是我在实际前端研发流程中,结合团队的实践进行的一些思考,算是一个抛砖引玉。

业内关于研发效率中的物料(Low Code)已经有非常多的讨论和实践。我尝试从另一个角度 「前端领域模型」来看待研发流程的调优和标准化。通过 规范化的研发分层 将复杂度进行拆解,已达到 高质量的持续交付。

关于引入的这个新概念 FDO 以及如何在团队落地,我们已经有一些实践,证明确实在研发效率上带来了较好的提升。 当然,我觉得还可以有很明确的路径做得更好。

本文更多的偏一些概念的讨论,没有讲具体的实现,欢迎探讨。


作者:钉钉前端团队

相关文章
|
11天前
|
人工智能 自然语言处理 前端开发
巧用通义灵码,提升前端研发效率
本次分享,主题是利用通义灵码提升前端研发效率。分享内容主要包括以下几部分:首先,我将从前端开发的角度介绍对通义灵码的基本认识;其次,我将展示通义灵码在日常研发中的应用案例;然后,我将通过实例说明,良好的设计能够显著提升通义灵码的效果。在第四个部分,我将介绍通义灵码的企业知识库以及如何利用 RAG 构建团队智能研发助手。最后,我将总结本次分享并展望未来方向。
|
12天前
|
人工智能 前端开发 JavaScript
详解智能编码在前端研发的创新应用
接下来,人与智能体的交互将变得更为紧密,比如 N 年以后是否可以逐渐过渡。这个逐渐过渡的过程实际上是温和的,从依赖人类到依赖超大规模算力的转变,可能会取代我们的一些职责。这不仅仅是简单的叠加关系。对于AI和超大规模算力,这是否意味着我们可以大幅度提升软件质量,是否可以缩短研发周期并提高效率,还有创造出更优质的软件并持续发展,这无疑是肯定的。
|
13天前
|
人工智能 前端开发 JavaScript
智能编码在前端研发的创新应用
在前端开发领域,智能编码技术正引领一场变革,通过大模型的强大能力将自然语言需求直接转化为高效、可靠的代码实现。
|
2月前
|
设计模式 前端开发 搜索推荐
前端必须掌握的设计模式——模板模式
模板模式(Template Pattern)是一种行为型设计模式,父类定义固定流程和步骤顺序,子类通过继承并重写特定方法实现具体步骤。适用于具有固定结构或流程的场景,如组装汽车、包装礼物等。举例来说,公司年会节目征集时,蜘蛛侠定义了歌曲的四个步骤:前奏、主歌、副歌、结尾。金刚狼和绿巨人根据此模板设计各自的表演内容。通过抽象类定义通用逻辑,子类实现个性化行为,从而减少重复代码。模板模式还支持钩子方法,允许跳过某些步骤,增加灵活性。
142 11
|
2月前
|
前端开发 JavaScript API
(前端3D模型开发)网页三维CAD中加载和保存STEP模型
本文介绍了如何使用`mxcad3d`库在网页上实现STEP格式三维模型的导入与导出。首先,通过官方教程搭建基本项目环境,了解核心对象如MxCAD3DObject、Mx3dDbDocument等的使用方法。接着,编写了加载和保存STEP模型的具体代码,包括HTML界面设计和TypeScript逻辑实现。最后,通过运行项目验证功能,展示了从模型加载到保存的全过程。此外,`mxcad3d`还支持多种其他格式的三维模型文件操作。
|
4月前
|
JavaScript 前端开发 应用服务中间件
Vue开发中,在实现单页面应用(SPA)前端路由时的hash模式和history模式的区别及详细介绍
Vue开发中,在实现单页面应用(SPA)前端路由时的hash模式和history模式的区别及详细介绍
90 0
|
4月前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
316 14
|
4月前
|
敏捷开发 前端开发 Devops
前端研发链路之 CI/CD
本文首发于微信公众号“前端徐徐”,作者徐徐介绍了前端研发链路中的CI/CD。文章从CI/CD的背景、意义、运作方式及常用工具等方面进行了详细探讨,帮助读者理解如何在前端开发中有效应用CI/CD,提升开发效率和产品质量。
132 1
前端研发链路之 CI/CD
|
4月前
|
前端开发 JavaScript 编译器
前端研发链路之构建
本文首发于微信公众号“前端徐徐”,作者徐徐探讨了前端研发链路中的构建过程。文章介绍了构建器、JavaScript编译器和CSS编译器的作用及常见工具,详细解析了它们如何协同工作,提高开发效率和项目可维护性。适合前端开发者阅读,帮助理解现代前端构建体系。
33 1
前端研发链路之构建
|
4月前
|
Web App开发 前端开发 安全
前端研发链路之测试
本文由前端徐徐撰写,介绍了前端测试的重要性及其主要类型,包括单元测试、E2E测试、覆盖率测试、安全扫描和自动化测试。文章详细讲解了每种测试的工具和应用场景,并提供了选择合适测试策略的建议,帮助开发者提高代码质量和用户体验。
71 3
前端研发链路之测试

热门文章

最新文章

  • 1
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 2
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 4
    详解智能编码在前端研发的创新应用
  • 5
    巧用通义灵码,提升前端研发效率
  • 6
    智能编码在前端研发的创新应用
  • 7
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 8
    【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 9
    抛弃node和vscode,如何用记事本开发出一个完整的vue前端项目
  • 10
    大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
  • 1
    以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
    29
  • 2
    大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
    51
  • 3
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    26
  • 4
    巧用通义灵码,提升前端研发效率
    93
  • 5
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    141
  • 6
    详解智能编码在前端研发的创新应用
    96
  • 7
    智能编码在前端研发的创新应用
    83
  • 8
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    37
  • 9
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    121
  • 10
    【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
    75