专栏名称: 秃头的逆向痴想
随便逆逆。
目录
相关文章推荐
三峡小微  ·  江边烟火抚人心 ·  6 天前  
51好读  ›  专栏  ›  秃头的逆向痴想

全栈开发修仙传——AI 飞升

秃头的逆向痴想  · 公众号  ·  · 2024-07-14 16:07

正文

写在前面:家人们谁懂啊,时代变了,现在的 LLM 对于我们 CCV(Ctrl & C/V) 工程师来说简直就是仙丹,只要服一颗就可以让我等普通码农羽化飞升踏足全栈之境。都说 AI 是炼丹,那我就是来嗑药的练气士~

速览

这篇文章介绍了非前端码农如何利用 AI 写前端代码,并通过实例展示了生成 React 和 Vue 代码的过程。AI 在编程中的应用改变了开发者的角色和能力,即使不是专业的前端开发人员,也能轻松创建前端界面。通过与 AI 对话,作者成功创建了满足需求的 React 和 Vue 项目,并分享了经验。文章总结了几点经验:

  • AI 能够帮助选择技术栈和工具,提高开发效率;

  • AI 可以生成可运行的代码,减少编写工作量;

  • 明确需求和提供详细信息对 AI 理解和生成符合要求的代码很重要;

  • 理解生成的代码仍然必要,以进行后续维护和优化。

总之,本文展示了AI在跨界开发中的潜力,鼓励读者积极拥抱AI技术,发挥更大作用。

—— 来自 AI 总结

背景

可能每一个程序猿/媛都有一个当全栈的梦,比如当前端痛骂后端给的 API 烂成 shit 的时候;当工具仔(我)痛恨自己怎么写不了半点 UI 的时候;又或者是产品和开发相互认为对方脑子瓦特了的时候。是不是会想 “这么简单的事儿都干不了,还不如我自己来”,但实际情况往往是 “no can no BB” ~

最近萌生了做一个 Apk 存储和管理的系统的想法,用于记录 App 和它的安装包们,系统的后端和周边我自己就可以完成,但作为一个 HTML 标签只认识 的人来说前端实在是画不出来。于是我向 ChatGPT 发起了求助,通过层层”压迫”最终让它在一天时间内分别用 React 和 Vue 帮我写了两版前端。

效果展示

第一版:基于 React

最终版:基于 Vue

技术选型

对于一名外行来说,我可能只是听说过前端有几个比较流行的框架,但是我并不知道他们之间的优劣、也不知道有什么宝藏库比较适合使用,所以这个时候就可以让 AI 来帮我们选择合适的技术栈。

在一切开始之前,我们按照惯例给一个 Prompt 来 PUA 它:

这里我提到了 Docker 和 DevContainer,主要是我比较习惯用他们来制作我的运行和调试环境,所以后期可以顺便让它帮我写 DockerFile。

然后告诉它,我们要开发的是一个什么东西,大概的需求,让他帮我们推荐合适的技术栈:

这里 AI 给出了一些我关注的信息:

  1. React + Material-UI

  2. Vue + Vuetify

  3. 请求库:Axios

在这里我忽略了状态管理和测试库,因为对于这个简单的个人项目,最初我对质量保障几乎是没有期望的;至于状态管理,这个时候其实我还不是很理解这是什么意思,所以我 Google 了一下,在 Vuex 的官方文档得到了以下信息。

跟着 AI 从 0 修炼 React

入门 React

既然 AI 首先推荐了 React,那就从他入手,先让 AI 教我怎么配置环境,这里我让他写了 DockerFile 和 devcontainer.json,因为他能让我知道如何创建一个最小化的开发和运行环境,而不至于让自己的系统环境被各种依赖安装得一团糟。并且要求它尽可能的固定版本,因为模型的数据跟最新版本不一定一致,为了保持后续代码的顺畅运行,固定版本是非常有必要的。

(技术选型以及这部分的原始记录非常乱,为了阅读体验这些部分截图的对话是我编写文章时重新生成的)


从 AI 给出的信息中,再次得到了关键信息:create-react-app,使用这个 cli 库就可以快速创建一个 React 工程,它大概率是一个非常正统的用法,而且 AI 给出的 Dockerfile 都是原封不动复制粘贴就能用,真 Ctrl C/V 工程师。

用 Docker 直接创建 React 工程:

docker run --rm  -v $(pwd)/my-app:/my-app node:14 npx create-react-app my-app
npx: installed 67 in 9.432s

Creating a new React app in /my-app.

Installing packages. This might take a couple of minutes.
Installing react, react-dom, and react-scripts with cra-template...

......

We suggest that you begin by typing:

cd my-app
npm start

Happy hacking!

初探 AI 代码生成

项目创建好了之后,尝试让 AI 帮我写页面,我输入了一个简单的页面需求:

这个时候 AI 其实已经可以帮我写出一个完整的组件了,但是由于我给的信息太少了,比如他不知道 API 的数据格式所以只能随意编造一些字段,也不知道应该展示一些什么数据,但简单改改之后已经可以跑起来看到效果了:

具化背景资料

其实跟我们日常开发一样,如果没有约定好具体的数据格式,那也只能先瞎写留着后面再改。但如果我们告诉他具体的数据格式,交代好产品需求,这样才能交付出能用的代码。我重新开始了一个会话,这一次详细的交代了我已有的 API 和数据样例,并且给出了我所需要的功能需求:

可以看到这一次 AI 给出了更加具体的代码,并且这一次代码是完全可以复制粘贴然后直接运行的,功能也都一切正常:

具化需求,返工微调

能是正常了,但唯一的问题就是样式非常简陋,虽然我没有一点点的艺术细胞,但是没关系这些可以交给前端开发专家 GPT 先生:

依然是复制粘贴就能跑的代码,是不是有点感觉了:

对哪些地方不满意,可以直接提需求让他改:

基本上代码都可以直接复制粘贴,不满意的话还可以让他重写,我最终定版的效果是这样:

到此为止,已经利用 AI 从 0 开始写出了一个可以满足自己需求的 React 项目了。

跟着 AI 从 0 修炼 Vue

代码生成

从上面的过程中,我得到了一些经验,比如可能是因为 AI 的上下文长度有限,如果提需求的次数过多它可能就会忘掉以前的信息,所以最好一次性就把具体的需求都明确好,比如想要功能、布局、交互、过渡。

现在我们已经通过 React 实现了第一版,我们可以参考上面的功能和布局,写出具体的需求,让 AI 帮我们重新开发一个,这一次我选择尝试一下 Vue。


我发现生成的 Vue 代码比 React 更加简洁和清晰,这让我立刻体验到了 AI 最初所说的“代码更易读”的感觉;

这份代码只需要改一下 API 的域名就直接能运行:

交互优化

由于 App 数据比较多,全部加载到一页的话页面会变得非常卡顿,所以我提了一个需求是让他在前端帮我实现分页

也是复制粘贴就行,非常好用:

风格优化

功能都实现了之后,继续调教 AI 让它做样式:

如果生成的样式不是自己想要的样子,那就重新生成换一个就可以了,直到生成了自己喜欢的为止:

然后挨个让他设计其他组件,比如:

最终得到自己想要的效果:

另外提一嘴,其实如果你想要更简单一点,也可以体验一下类似 v0.dev 这类代码生成应用。(这不是广告)

总结

一趟体验下来,虽然我不会 Vue,但我用它画了职业生涯以来为数不多并且还算能用的一个 UI,即使功能非常简单,但正是因为这些看得到的正面反馈,才使我一直能在计算机行业坚持下来。

目前的 AI 虽可以让我们快速踏足一片未曾涉及的领域,但打铁还需自身硬,从后期微调的过程中来看,如果无法理解 AI 生成的代码,想指望它来后期维护几乎每步都是坑,当然现在也有了专门用于代码生成的模型,一切都未来可期。

也许随着技术的发展,许多传统艺能都会成为时代的眼泪,就像缝纫机一样退出人们的视野,取而代之的是各种数控机械、自动化车间、智慧工厂,而我们会去做一些更加创新、更加有价值的事情;