文章目录
- 一、同样AI写代码,有人顺畅有人崩溃,差距到底在哪
-
- [1.1 别误解Vibe Coding,不是躺平让AI全权包办](#1.1 别误解Vibe Coding,不是躺平让AI全权包办)
- 二、第一步:规划先行,五分钟梳理,省下两小时调bug
-
- [2.1 直接复制就能用的规划提示词模板](#2.1 直接复制就能用的规划提示词模板)
- [2.2 待办清单项目实操规划演示](#2.2 待办清单项目实操规划演示)
- 三、第二步:胶水编程,代码是拼接粘合出来,不是从零硬造
-
- [3.1 第一步搭建骨架:类型定义 + App顶层入口](#3.1 第一步搭建骨架:类型定义 + App顶层入口)
- [3.2 拆分独立组件,单一职责原则贯彻到底](#3.2 拆分独立组件,单一职责原则贯彻到底)
- [3.3 拖拽功能:胶水编程最能体现优势的场景](#3.3 拖拽功能:胶水编程最能体现优势的场景)
- [3.4 拖拽回调统一放在顶层处理](#3.4 拖拽回调统一放在顶层处理)
- 四、第三步:AI自我迭代,持续优化提示词(进阶玩法)
- 五、实操避坑清单,每次用AI写代码对照检查
-
- [✅ 必做规范](#✅ 必做规范)
- [❌ 绝对禁止](#❌ 绝对禁止)
- 六、收尾总结
P.S. 推荐一个大神的教程给想要了解或者学习人工智能知识的读者,这个教程里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏教程,请点击下方链接查看,传送门https://blog.csdn.net/qq_74013365
一、同样AI写代码,有人顺畅有人崩溃,差距到底在哪
咱先唠唠绝大多数人用AI写代码的真实翻车现场,说出来在座写前端的没人能逃过。
我身边好多同事,敲一句大白话直接甩给AI:帮我整个React待办清单,能加能删就行。
AI咔咔几百行代码甩过来,复制粘贴一跑,控制台红得跟过年春联似的。undefined报错连环炸,类型警告堆半屏。好不容易调通,整个业务逻辑全塞在一个三百行的App文件里,想加个拖拽排序,翻代码翻到眼晕,根本找不到下手的地方。
最搞笑的是有个同事,拿着这段代码过code review,组长扫一眼直接问:你这是把所有功能揉成一坨面了?以后改需求是不是要整锅重炒?
反观懂门道的人,从来不会一上来就让AI写代码。先把规则、技术栈、要做啥不做啥全部列清楚,发给AI只允许输出规划文档,半行代码都不让它出。
规划里漏了功能直接修改,全部确认无误后,才分段输出组件代码。最后产出的文件拆分清清楚楚,单个文件撑死五十行,后续加功能改逻辑丝滑得不行。
同样一个AI工具,两种使用方式,工作量差出两倍多,说白了就是有人把AI当万能代码生成器,有人把AI当配合干活的搭档。
1.1 别误解Vibe Coding,不是躺平让AI全权包办
很多人一听这个词,直接理解成"丢需求给AI,自己摸鱼等成品",这完全是误区。
这套方法核心逻辑特别简单:人负责定方向、定边界、定规则,AI只负责落地写代码。
但绝大多数开发者刚好搞反了,把所有决策全丢给AI。AI又读不透你心里的需求,它只能靠猜,猜十次九次偏,猜偏一次就是一堆难改的bug。
举个接地气的例子,你招新同事不会上来就让他直接写业务,肯定先讲清楚技术选型、需求范围、现有工具库,AI和新人本质没区别,不能上来就扔需求让它自由发挥。
基于这个逻辑,我整理了一套三步实操流程,全程落地过React待办项目,上手零门槛。
二、第一步:规划先行,五分钟梳理,省下两小时调bug
这一步绝对不能省略,90%的代码翻车根源全在跳过规划。
AI擅长落地执行,不擅长自主做架构决策。你不提清楚的细节,它全靠脑补,脑补出来的结果十有八九个踩坑。
你没提前说明的内容,AI自主发挥的坑:
- 数据结构字段:AI随便起title/name/text,子组件传参全线报错
- 组件拆分逻辑:全部堆砌在入口文件,代码臃肿难维护
- 本地存储需求:擅自添加localStorage,多出不需要的逻辑
- 交互工具选型:手写拖拽底层逻辑,边界bug层出不穷
规划本质就是用文字约束AI的输出,作用等同于TypeScript类型约束,提前把接口、边界卡死,后续不会出现各种参数不匹配的离谱问题。
2.1 直接复制就能用的规划提示词模板
不用自己瞎琢磨话术,固定模板填空即可,发给AI强制要求只输出规划,禁止输出任何代码。
遵守胶水编程思维:优先使用成熟方案,避免凭空造逻辑。
第一个阶段:只做规划,禁止输出任何代码。
1. 确认技术栈:[填入项目技术栈]
2. 梳理功能边界:
- 需要实现:[罗列全部需求功能]
- 明确不做:[不需要的功能,杜绝AI擅自新增]
3. 拆分模块(乐高式组件拆分):
[完整列出组件树结构]
4. 定义数据流:
- 状态管理方案:[useState/Zustand等]
- 核心数据结构:[提前定义interface/type]
5. 输出完整规划文档,等待我确认后,再分段编写代码
2.2 待办清单项目实操规划演示
拿待办清单举例,填完模板后AI输出的规划清晰到离谱:
- 技术栈:React19 + Tailwind CSS4 + TS + Vite
- 功能范围:✅新增/删除待办、切换完成状态;❌不做本地存储、筛选、拖拽(第一版)
- 组件拆分:TodoInput输入框、TodoItem单条待办、TodoList列表容器、TodoEmpty空状态
- 数据流:顶层App用useState存储数组,Todo类型固定{id:number;text:string;completed:boolean}
这里有个很多人忽略的关键点:数据结构必须由人提前定义,不能交给AI随便写。
你要是不提前定字段,AI一会写title一会写isDone,等你写子组件调用todo.text,直接弹出undefined,调试半小时起步。
上次我同事踩这个坑,AI把任务文本字段写成title,他页面全写text,控制台飘满红报错,对着代码挠头一小时,最后才发现是字段名不统一。
三、第二步:胶水编程,代码是拼接粘合出来,不是从零硬造
这一步是整套方法的核心精髓,一句话讲透:能复用成熟轮子绝不手写底层逻辑,我们只写衔接各个模块的粘合代码。
很多人写代码总爱手搓底层逻辑,拖拽、表单校验、动画全自己写,纯纯给自己埋雷。手写底层逻辑永远考虑不全边界场景,后期bug多到改不完。
两种开发思路对比:
手搓底层(不推荐) :手写拖拽鼠标监听、手写两百行自定义CSS、手写简易状态发布订阅
胶水编程(推荐):安装@hello-pangea/dnd拖拽库、使用Tailwind原子样式、原生useState管理状态,仅做组件粘合
简单说,我们的代码只负责把成熟第三方库、拆分好的组件串联起来,底层复杂逻辑全部交给经过市场验证的开源工具。
3.1 第一步搭建骨架:类型定义 + App顶层入口
先把数据类型单独抽成文件,这是所有组件协作的统一接口标准,所有子组件全部围绕这个类型开发,不会出现参数错乱。
顶层App组件只做三件事:定义全局状态、封装增删改回调函数、把回调传递给子组件。
页面渲染、按钮交互细节全部下放子组件,顶层文件不掺杂多余UI逻辑,这就是胶水代码的典型写法。
这里还有个容易踩的小坑:更新state优先使用函数式更新prev=>newState,连续快速添加任务时,直接解构原有todos会读取过期闭包,新增数据丢失。
之前我做批量录入功能,没用函数式更新,连续点添加十次,最后页面只显示两条数据,排查半天才找到闭包过期的问题。
3.2 拆分独立组件,单一职责原则贯彻到底
哪怕只有八行代码的空状态提示,也要单独抽成TodoEmpty组件,不要直接在列表里写三元判断。
分开写的好处太明显,后续想修改空页面文案、新增插画,只需要修改这一个文件,不用在列表几百行代码里翻找对应逻辑。
输入框组件TodoInput只负责收集文本、触发新增回调,内部不处理任务存储逻辑,所有数据操作统一交给顶层App,数据流单向清晰,排查bug事半功倍。
之前见过一份代码,输入框内部直接操作state,列表组件也操作state,双向改数据,新增删除逻辑分散三处,改一个需求要同时修改三个文件,维护成本直接翻倍。
3.3 拖拽功能:胶水编程最能体现优势的场景
千万别让AI手写拖拽逻辑,手写mousedown、mousemove监听,各种边界场景、拖拽动画、列表塌陷问题能折磨你一整天。
标准胶水操作流程:先安装成熟拖拽库@hello-pangea/dnd,只做库和自有组件的适配粘合,不写任何拖拽底层计算代码。
外层包裹DragDropContext全局拖拽上下文,列表外层套Droppable放置区域,每一条待办用Draggable包裹,把拖拽提供的ref、props全部传递给TodoItem。
这里有个极易踩坑的细节:draggableProps和dragHandleProps展开顺序不能颠倒,拖拽手柄属性需要覆盖上层拖拽配置,顺序反了拖拽直接失效。
上次我顺序写反,拖拽半天完全没反应,网上翻二十分钟教程才找到是props展开顺序问题,纯纯浪费时间。
3.4 拖拽回调统一放在顶层处理
拖拽结束后的排序逻辑统一写在App组件,拖拽结果传递到顶层处理,子组件只负责渲染,不修改原始任务数组。
处理排序时必须先拷贝原数组,遵循不可变数据原则,同时判断拖拽目的地是否为空,拖到列表外部直接跳过逻辑,避免数组操作报错。
四、第三步:AI自我迭代,持续优化提示词(进阶玩法)
前面两步解决AI代码难跑、难维护的问题,第三步是长期提升效率的进阶思路。
我们可以让AI复盘过往写代码的提示词,优化话术结构,适配自己常用的技术栈,后续生成代码质量会越来越稳定。
简单说就是用AI优化AI的指令,不断打磨专属自己的提示词模板,不用每次重新梳理需求描述。
五、实操避坑清单,每次用AI写代码对照检查
✅ 必做规范
- 规划阶段提前定义类型接口,杜绝AI随意命名字段
- 需求明确区分要实现、不实现的功能,避免AI画蛇添足
- 第三方库优先选择社区长期维护、下载量高的成熟方案
- 更新状态优先使用函数式更新,规避闭包过期问题
- 拖拽相关props展开顺序固定,draggableProps在前,dragHandleProps在后
- 组件拆分遵循单一职责,小型独立视图单独抽离文件
❌ 绝对禁止
- 直接让AI手写拖拽、表单校验、动画等底层逻辑
- AI初次生成代码不看结构,直接复制提交项目
- 所有功能堆砌在单入口文件,不做组件拆分
六、收尾总结
现在大家该明白,同样是AI辅助写代码,产出差距巨大的核心原因。
只甩一句需求给AI,等于把架构、需求边界、数据规范全部交给机器猜测,翻车是必然事件;先规划定好全部规则,再用胶水编程拼接成熟工具,代码清晰易维护,调试时间直接砍掉大半。
后续大家实操可以先套用规划模板,从小项目练手,慢慢养成先梳理需求再编码的习惯,彻底告别AI生成的"屎山代码"。
最后留个小思考:如果自己本身对项目架构拆分没有思路,是先自己梳理规划,还是先让AI给出拆分方案再调整?欢迎一起交流实操经验。
P.S. 推荐一个大神的教程给想要了解或者学习人工智能知识的读者,这个教程里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏教程,请点击下方链接查看,传送门https://blog.csdn.net/qq_74013365