【AI赋能前端研发】整洁的业务组件架构

发布于:2024-04-30 ⋅ 阅读:(24) ⋅ 点赞:(0)

大家好,我是LV。

AI赋能前端研发 是一系列的篇章,持续更新,总结了笔者在前端研发领域的AI赋能的全流程。

上一篇章,笔者针对AI赋能前端研发,进行了全流程的分析,建议还没看过的同学先看上一章,详见:

上次提到,AI赋能的重点会围绕:从 0 ~ 1 开发业务组件这个步骤。

这个步骤的内容有点多,为了让内容更具有结构性,便于读者理解,也将会拆成一些个小节来说。

本篇咱们讨论:如何写出干净整洁的业务组件,以及AI赋能业务组件生成的早期探索经验。

建议收藏关注防失联,不多说,开始。

Clean Components

Clean Code —— 干净的代码。

不同的公司可能存在不同的 codding 规范,但是万变不离其宗。

简而言之:编写容易理解、修改、可维护的代码。

笔者在公司提出了 clean component ,目前已经在前端项目中落地,同时老项目的技术重构也也在推行新的 clean component 规范。

何为 clean component?

其中最重要的一个原则就是:服务端状态和前端状态 分离。

服务端状态和前端状态

先来看一段代码,这种类型的代码大部分的前端同学可能都不陌生。

  • 使用mobx或者redux来管理所有的数据状态,包括服务端状态(请求api拿到的数据状态)和前端状态(组件的loading、visible等)。

  • 在任意组件中请求api、对接联调数据,然后再将这些状态通过 inject 等方式注入到任意层级的组件中。

存在的问题:

1、前后端状态数据混合在一起,随着项目的扩大,状态将会越来越多,同时这些状态会在各种组件中被赋值及消费,导致数据的维护越来越复杂。

2、在任意的业务组件中请求接口,对接服务端数据,功能职责耦合严重,导致业务组件强依赖于服务端的接口数据、接口的任何变更会直接影响到大范围的业务组件。

优化后的方案:

规范前端页面开发的工作流:业务组件开发 -> 数据对接联调。

其中包含一个最基本的原则:服务端状态和前端状态分离

  • 所有业务组件均可独立运行

  • 业务组件中不能直接请求api数据,需要触发接口请求的地方通过props回调给到外部对接层。

这样做的好处:

  • 功能职责单一,整体的数据流向十分清晰:对接层请求数据给到业务组件层,业务组件通过props回调触发对接层的数据变更。

  • 技术迭代维护很简单,以我公司的一个场景举例:

由于后端将所有的 restful api 迁移到了 graphql,因此前端也需要配合修改所有的api对接。

如果是在以前:由于服务端状态数据和前端状态数据混合在了一起 ,同时在很多业务组件中都直接对接了api,因此我们需要找到每一个直接对接了 api 组件,然后逐个替换为 graphql,还得要保证服务端数据的变化不会影响到耦合在一起的前端状态数据

现在:由于服务端状态数据和前端状态数据分隔开来了 ,所以我们不需要关心业务组件,只需要在对接层将 restful api 换成 graphql 即可。

那么,基于这个原则,如何从 0 ~ 1 开发一个整洁的业务组件呢?

业务组件从 0 ~ 1 的开发步骤

1、明确业务组件的代码规范

千人千面,不同的公司有不同的代码规范,甚至同一个公司的不同项目可能也有不同的规范。

但是要想一个项目具有长期的可维护性,代码规范至关重要。

如下为我司业务组件的规范示例:

  • 代码结构
StorybookExample // 业务组件名称
├─ index.ts // 仅仅将组件内容暴露给外部
├─ interface.ts // 定义组件内部用到的所有类型,包括 interface、type、enum等
├─ StorybookExample.stories.tsx // 组件的storybook文档,包含组件的使用示例
├─ StorybookExample.tsx // 组件的主体逻辑,如果组件太大可以拆分为其它的文件
├─ styles.ts // 组件所有的样式资源存放在此,使用styled-components来编写
├─ helpers.ts // 如果存在一些工具函数,那放在此处
├─ StorybookExample.test.tsx // 存放业务组件的单元测试
  • 通过 storybook 管理所有业务组件。

好处:1、基于storybook运行环境,能快速进行业务组件的开发;2、便于业务组件的统一管理维护,基于 storybook 示例文档,新人可以快速熟悉业务组件;

2、拆分业务组件

基于整个设计稿页面,按照模块的 独立性可复用性 来拆分业务组件。

3、定义 业务组件的 props

业务组件的props决定了这个组件的功能,这也是正式开发代码前的第一步。

如何设计呢:一进一出

一进:组件的运行和渲染依赖什么样的外部数据

一出:组件能够给外部提供什么数据

4、根据定义好的props和代码规范编写代码

在开发业务组件的步骤中,这一步开发人员花的时间最多,同样也是我们AI赋能的重点。

AI如何赋能

根据以上业务组件的开发流程,笔者早在去年中旬的时候,就探索了AI如何生成前端业务组件,详见: 、

总结起来4步走:

1、定义角色

2、投喂基础UI组件数据

3、描述业务组件的基本信息,开始生成代码

4、迭代优化

ps:如上提示词原文件如有需要,可以链接笔者获取。

当然,上面是笔者在AI赋能前端早些时候的探索经历,现在已经有了更多新的洞察和落地方案。

不过这也我是探索AI赋能前端从 0 ~ 1 路上的历程,希望给大家一些帮助~

后续我们继续讨论如下内容:

基于基础组件库打造AI小助手、「循序渐进式」业务组件代码生成、「一劳永逸式」业务组件代码生成