Cursor 101

CSR:基于 React 的后台管理平台

详细介绍如何使用 Trae AI 从零开始构建一个基于 React 的客户端渲染后台管理平台,优化 AI 辅助开发流程。

Trae 下载地址:https://www.trae.ai

前文我们使用 Trae 从零搭建了一个用户文档站点,支持了基本的用户注册登录 + 文档的增删改查,最主要的是整个过程只用了 2 个小时不到的时间,同时我们自己并没有写任何一行代码,这是一个很大的突破。

但是惊艳的同时,其实我们也可以反思得到几个可以进一步加速的行为:

  • 由人为控制一定架构,而非完全放权给 AI;
  • 降低每次 Builder 的粒度,将大问题拆成 n 个小问题;
  • 当一个类型的问题,Builder 多次生成异常的时候,需要考虑换个思路或者提供更多具体方向或者信息进行强化;

这一节我们来进一步强化上面学到的基础概念,在上文 Next.js 的站点基础上我们为它搭建一个 CMS 系统作为后台管理。数据库我们与前文的 SSR 官网复用一套 mongodb,这个 CMS 系统提供两个功能:

  • 用户管理
  • 文档管理

项目初始化(耗时 10 分钟)

我们在当前的工作空间下,提出 CMS 系统的技术诉求。因为需要与 SSR 官网复用一套 mongodb,所以工作空间我们要在之前的 SSR 项目下,以确保 Builder 功能获取到前者的 mongodb 上下文。

Tutorial image

生成完项目后我们正常运行,看到终端执行有一些问题,我们参考语境章节的做法,选取终端中的错误,添加到 Builder 上下文中,完成对应的修复。

Tutorial image

然后我们让 Builder 帮我们运行这个项目就可以看到前文 Trae Document 的 CMS 系统雏形就已经搭建好了。

Tutorial image

这里技术栈为了呈现简单,所以使用的是 React + webpack 搭建,如果项目复杂,大家也可以考虑使用 qiankun 等框架设计成微前端架构,每个导航模块独立成微前端子模块,非常适合用于复杂维度的 CMS 系统。

用户管理(耗时 30 分钟)

首先还是使用 Builder 完成需求的生成,要求与 ai-ssr 空间的 mongodb 复用。

Tutorial image

初版效果创建完成后,打开发现终端存在 ts-loader 的报错,无法运行,让 Builder 修复一下。

Tutorial image

修复完成后,虽然可以运行了,但是 user 的路由并没有变化,还是初始化的呈现,排查后发现是 route没有更新,让Builder 进一步修复一下。

Tutorial image

Tutorial image

修复后终于可以打开了,不过报错获取用户失效,我们在 network 里看看具体原因,发现 404 了。

Tutorial image

Tutorial image

进一步检查发现,是请求的服务端口号不对,因为 mongodb 的服务 api 是挂在 SSR 项目上的,所以需要配置代理请求 SSR 项目的服务。确认原因以后,让 Builder 进一步修复。

Tutorial image

到这里用户管理的功能就可以正常使用了,效果如下图

Tutorial image

文档管理(耗时 20 分钟)

有了用户管理的成功案例,文档管理我们照猫画虎就好了,因为有可参考模块,模型的答复也会更加精准。同样地,我们先用 Builder 生成初稿。

Tutorial image

不过这次的初稿打开就报错了,看错误栈报错的地方是 antd 的 table 组件。

Tutorial image

看错误栈大概率应该是初始化的时候还没读到数据,导致 rawData 不是数组,组件源码中又没兼容异常数据类型导致的,我们尝试让 Builder 完成修复,这里提供了错误栈信息和复现渠道来帮助 Builder 更好地判断。

Tutorial image

可以看到 Builder 的判断非常正确!通过添加了兜底的方式规避了这个问题,现在文档管理的功能也实现完成了,效果如下。

Tutorial image

经过两个实践课程的学习,我们不难发现 Builder 的使用其实就是几个步骤:

  • 拆解需求,将大需求拆成多个小需求,如果能自己完成一定的架构设计,Builder 实现会更精准;
  • 使用 Builder 生成需求初稿,这个过程可以提供交互图进行增强;
  • 改 bug,生成的初稿会有大大小小的问题,需要针对性修复;如果修复的不顺利,可以考虑提供更多的信息,比如错误栈截图、语境又或是人工的初步错误归因来缩小修复范围。

本节的功能我们就实现到这,进一步扩展我们还可以考虑联表等复用型的功能,感兴趣的同学可以课后进一步尝试。