上篇聊完那个用AI半小时搞定的小工具之后,不少朋友私信问我:你一边说AI在抢前端饭碗,一边又用AI把活干了,这不是打自己脸吗?
这篇正好把整个过程完整拆给你看——我让AI从零生成一个原生页面,纯HTML/CSS/JS、不碰任何框架,从提需求到能上线,前后大概30分钟。过程中我会逐段检查AI输出的代码,告诉你哪些能用、哪些必须改、哪些是坑。最后再聊聊“前端落寞”这件事,到底是真的行业危机,还是一次技术栈的大洗牌。
如果你正在焦虑AI是不是要替代前端,或者想搞明白AI生成的原生页面到底靠不靠谱,这篇应该能给你一个相对冷静的答案。
1. 这次到底做了什么——一个原生页面从0到上线的全流程
1.1 页面需求是怎么定的
先说清楚这次要做一个什么东西。我平时会写一些产品介绍类内容,经常需要一个展示页来放演示链接和说明,以前都是套用公司现成的模板,这次我特意要求AI从零写一个独立的展示落地页。页面形态参考了比较常见的SaaS产品落地页:顶部导航、Hero区、特性卡片、价格表、FAQ折叠区、页脚,基本覆盖了营销页的常见模块。
为什么选展示页?因为它够典型。一个落地页几乎包含了原生前端最常碰到的场景:固定导航、滚动变色、响应式栅格、折叠面板、按钮交互、表单校验。把这类页面用AI跑通,比单纯做一个“Hello World”或者动画Demo更有参考价值,因为它直接对标日常业务里最常见的那类前端需求。
另外我特意把目标定成“能上线”而不是“能打开”,这两个标准差距很大。页面上线要考虑的细节比"本地跑起来"多得多:图片资源能不能稳定访问、字体加载会不会闪烁、移动端按钮够不够大、导航在小屏下会不会换行、页面滚动时动画卡不卡。所有这些问题,都是我在实际验收AI产出时一条一条过出来的。
1.2 为什么坚持用“原生页面”而不是上框架
现在的常规做法是用Vue或React搭页面,组件化、工程化、热更新,开发体验确实好。但我这次故意不用框架,让AI纯手写HTML、CSS、JavaScript。原因有三层。
第一层是为了测试AI的真实能力边界。用框架时,AI可以偷懒,比如用一套现成的UI组件库配几个属性,效果好看但暴露不了它“从零理解需求”的能力。原生页面没有组件库可依赖,所有样式、交互逻辑都要AI自己设计,这才是硬功夫。
第二层是为了控制运行成本和使用门槛。一个展示页面而已,引入Vue全家桶加UI库,光JS就几百KB,用户打开速度被拖慢,维护时还得跟着框架版本升级。原生三件套没有依赖、没有构建步骤,一个HTML文件直接双击就能打开,用最简单的方式解决最实际的问题,这才是工程上的合理判断。
第三层也是我的私心——原生页面对AI来说其实是“最难的考试”。框架有大量封装好的API,AI只要调用就行,但原生CSS要处理Flex布局、Grid对齐、层级关系、响应式断点,所有细节都要自己写,写错了就立竿见影。用原生页面检验AI的水平,比用框架更能看出问题。
1.3 工具链与整体工作流
工具用的是现成的AI编程对话工具,不限具体哪家,各家大模型生成静态页面的能力都已经很成熟。我个人习惯先用大模型把整体框架搭出来,再用它迭代修问题,整个流程分成三段:
第一段是需求转译:把脑子里的页面形态,用结构化文字描述给AI,越具体越好。这个阶段通常花5分钟。
第二段是生成与渲染:让AI直接输出完整的HTML源码,保存成文件,用浏览器打开看实际效果。这个阶段大概10分钟,中间可能需要根据效果做1到2轮调整。
第三段是人工验收与修补:逐项检查功能、样式、性能、兼容性,发现不对的地方让AI给修改建议,或者自己手动改。这个阶段最花时间,大概15分钟。
30分钟就是按这个节奏走下来的。后面我会把每一步的细节都展开讲。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 30分钟怎么花——提示词、生成、调优的实操记录
2.1 需求如何“翻译”成AI能听懂的描述
很多人用AI生成页面失败,问题往往不在AI,而在描述太模糊。你说“做一个好看的落地页”,AI只能给你一个模板感很强的大路货。想让AI输出接近你脑子的效果,提示词必须具备几个要素:页面模块结构、每个模块的内容要点、交互行为、视觉风格。
我这次给出的提示词大致是这样:
code复制请生成一个完整的原生HTML页面,产品定位是AI视频创作工具。
页面模块:
1. 顶部导航:Logo在左,菜单在右,滚动页面时导航背景从透明变成半透明深色。
2. Hero区:左侧大标题加副标题加两个按钮(一个主按钮"开始创作",一个次按钮"观看演示"),右侧放一个抽象的视频播放器示意图。
3. 特性区:6个卡片,用CSS Grid排成3列2行,卡片内容包括图标、标题、一段说明文字,卡片hover时有轻微上浮效果。
4. 价格区:3个套餐卡片,中间套餐有"最受欢迎"标签并高亮,支持月付/年付切换。
5. FAQ区:4个常见问题,点击问题展开答案,再次点击收起。
6. 页脚:版权信息加几个友情链接。
视觉风格:深色背景、靛蓝色渐变高光、现代科技感、中文字体栈,移动端响应式适配。
技术约束:纯HTML+CSS+JavaScript,不允许使用任何框架和UI库,所有资源内联或使用稳定CDN。
这段描述里每一项都是有针对性的。“滚动时导航变色”对应一个交互行为,“hover上浮”对应CSS过渡效果,“月付/年付切换”对应JavaScript状态切换,“不引入框架”约束了技术选型。
实际验证下来,AI对这类结构清晰的描述完成度很高,第一版就基本呈现了想要的骨架和视觉方向,这说明现在的生成模型对“结构化描述”的理解能力已经很强了。但前提是你自己得先想清楚要什么,把模块拆解清楚,AI才能按图施工。
2.2 生成第一版后,我遇到的几个“能跑但不达标”的问题
第一版生成后能在浏览器正常打开,视觉整体方向没错,但离“能上线”还差得远。我逐个模块过了一遍,发现几类典型问题。
第一个问题是图片资源用了AI自己编的外链。模型生成代码时会在Hreo区引用一张配图,但那个图片域名是它训练数据里常见的示例地址,实际能否访问完全不可控。这个问题每个用过AI生成页面的人肯定都遇到过。处理的办法是删掉外链,改成CSS渐变配合SVG图标来做视觉表现,或者换成自己控制的图片地址。
第二个问题是Hreo区的响应式设计不合格。宽屏下布局正常,一旦缩到手机宽度,标题和按钮挤成一团,导航菜单也直接换行。这个不是AI写不出响应式,而是它在默认宽度下做设计,习惯了“看起来正常”,不会主动去检查窄屏表现。需要我在提示词里明确强调,或者自己动手调CSS媒体查询。
第三个问题是部分JavaScript功能“只搭了架子没有灵魂”。FAQ折叠功能点击后有反应,但没做展开高度的平滑过渡,面板“哐”一下弹出来,体验很生硬。另外价格区那个月付/年付切换按钮,点击后价格确实变了,但每个卡片里的“每年省20%”这类小标识没有联动,漏改了一处。这属于AI生成内容时最容易出现的问题——整体结构有了,但细节状态没照顾全。
2.3 手动调优阶段,我重点改了哪些地方
AI生成代码不像人写代码那样有明确的分工意识,它更倾向于把所有逻辑集中输出,所以我拿到手的代码是单个大文件,HTML、CSS、JS都在里面。这本身没问题,静态页面单文件反而方便部署,但内部组织的可读性比较差,比如样式类命名随意、JS事件绑定零散分布。我自己过了一遍,做了这几类调整:
语义化标签修正:AI喜欢把布局全部用div包起来,比如用div来写导航、写按钮。我把它们改成header、nav、main、section、footer,以及button和a标签。这不仅是规范问题,更直接影响SEO和屏幕阅读器的解析效果。
交互细节补全:给FAQ折叠加了max-height过渡动画,让展开收起有平滑感;给价格切换按钮加了状态样式,选中态更明显;给表单提交场景加了基础校验——虽然这个页面没有表单,但按钮的disabled状态和加载样式还是补了一套。
性能兜底:图片全部改成懒加载,滚动时的元素出现动画统一用IntersectionObserver实现,而不是页面加载时一次性播放。这样首屏加载速度明显提升,移动端体验也更顺。
浏览器兼容兜底:加了-webkit-前缀的样式属性,尤其是滚动条和渐变的兼容写法。现在都2025年了,大部分现代浏览器对标准CSS支持已经很好,但一些细节属性还是需要补前缀。
这一轮改下来,页面才真正从“AI演示Demo”变成了“可以放上线的静态页面”。我后面会详细说,为什么这些改动AI自己做不了,只能靠人来判断。
3. 逐段过一遍AI生成的代码,说说它的真实水平
3.1 整体代码质量:框架优秀,细节毛糙
先给个结论:如果满分10分,AI原生页面代码的完成度大概在7分出头。它能给你一个结构完整、视觉达标、功能基本能用的页面,但从代码审美的角度,问题和“一眼假”的痕迹还是不少。
首先表扬它的优点:CSS用了变量统一管理主题色,改颜色不用全局搜索替换;Grid布局用得熟练,特性区三列、价格区三卡的布局实现得很干净;JavaScript的功能代码没有污染全局,用的是模块化写法。这些基本素养说明模型在训练时吸收了大量的高质量前端代码,写出来的东西有一定工程意识。
但问题也恰恰藏在细节里。最典型的是“过度设计”和“设计不足”并存。AI很喜欢给元素加各种炫酷的hover效果,但很多效果没有考虑实际意义,比如某个卡片hover时除了上浮还带一个旋转角度,视觉上反而显得廉价。这种“用力过猛”的观感需要人来把关。
3.2 我挑出的三个底层问题:类名混乱、状态遗漏、动画失控
先说类名问题。AI生成的CSS类名大多是utility风格,比如.box1、.item2、.card-wrap这种,短则短矣,但没有任何语义。不看HTML结构,你根本不知道这个类对应页面的哪个部分。真实项目中,类名直接关系到团队协作和后续维护,一个.features-card__title 的类名,一看就知道是特性区卡片的标题,维护效率天差地别。我花了几分钟把所有类名重命名了一遍,用BEM风格重新组织。
再说状态遗漏。这是AI前端代码最大的坑。它能写一个按钮的默认态和hover态,但经常忘记写focus态、active态、disabled态。对用户来说,一个点击后没有任何视觉反馈的卡片,会让人怀疑自己到底有没有点中。我花了不少时间逐个检查所有可交互元素,把键盘焦点样式、按下反馈、禁用样式全部补齐。
最后说动画失控。AI对CSS动画的理解停留在装饰层面,很少考虑性能和用户偏好。比如它给整个Hero区加了一个持续2秒的加载渐入动画,看着是挺炫,但只要用户设置了系统“减少动态效果”偏好,这个动画就应该被禁用,否则会造成眩晕感。这个细节我补了prefers-reduced-motion媒体查询,属于比较进阶的无障碍开发意识。
3.3 一个更核心的问题:AI不懂“边界条件”
我在实测过程中发现一个很有意思的现象。AI非常擅长处理“正常流程里会发生的事”,但对于“用户不按套路操作时怎么办”几乎等于失明。比如页面有一个“复制邀请链接”的按钮,AI写得是点击后复制成功、按钮文字变成“已复制”,但你没点过这个链接,不知道它是否处理了浏览器不支持clipboard API的情况、是否处理了复制失败的回退。还有FAQ滚动的锚点定位,点击展开时如果问题比较靠下,浏览器会不会自动滚动到可视区域——AI完全没处理。
这类问题本质上是“边界条件”。页面在理想路径下跑得很顺,但对异常情况的兜底几乎为零。这说明当前AI模型的强项是从海量样本里拟合出平均形态,而不是对某个具体场景做穷尽式思考。想要页面真正靠谱,最终还是得靠人来遍历各种边界情况。
3.4 AI生成代码质量速查表
我把这次审查中发现的典型问题整理成一个清单,你以后用AI生成页面,可以照着这个表逐项检查,比我踩坑再总结要省时间得多:
| 检查维度 | 常见问题 | 如何修复 |
|---|---|---|
| 资源引用 | 使用不存在的示例图片外链 | 替换为本地资源或稳定CDN,或用CSS/SVG替代 |
| 语义化 | 大量div包裹元素,无层级含义 | 改为主流语义标签header/main/section/footer |
| 类名命名 | 无意义短类名,维护困难 | 按BEM等规范重写类名 |
| 响应式 | 窄屏下布局错乱或内容溢出 | 逐断点调试,补媒体查询 |
| 交互状态 | 缺少focus、active、disabled样式 | 补全所有可交互元素的完整状态 |
| 动效 | 动画过度、不尊重系统偏好 | 加prefers-reduced-motion兼容 |
| 边界场景 | 复制失败、接口报错等无兜底 | 手动补异常处理逻辑 |
| 无障碍 | 图片缺alt、键盘操作不友好 | 补全aria标签与键盘操作支持 |
这张表是这次实操最核心的产出之一。它把AI写前端代码时“看着行、实际不行”的点都列全了,以后不管用哪个AI工具,这些检查项都是不变的。
4. 前端真的“落寞”了吗——一次基于实操的行业思考
4.1 AI先替代的,是“搬砖”而不是“造楼”
做完这个页面之后我一度很emo,因为如果连一个完整页面AI都能在30分钟内搞定,那么以前一个前端开发花一两天做的活,现在确实被压缩到一个小时以内。但冷静下来复盘,我认为这个结论不能过度放大。
AI替代的是“翻译”工作——把产品需求翻译成代码。这对前端这个工种来说是基础能力的自动化。以前初级前端的主要工作就是对着设计稿写页面、套样式、绑交互,这部分恰恰是AI最擅长的,因为它本质上是“从大量历史样本中学习映射关系”。所以那些只做基础页面还原、业务组件搬运的前端岗位,确实会感受到越来越大的压力,这个趋势不是焦虑,是事实。
但“造楼”的部分——也就是理解业务、设计架构、评估技术方案、保障系统健壮性——AI远没有达到能让人放手的水平。我在调试过程中反复确认了这一点:AI不会主动问“这个页面投放给哪些用户”、“需要适配哪些浏览器版本”、“有没有性能预算”、“文案和视觉有没有品牌规范”、“埋点怎么接”,这些问题直接决定了页面是否能在真实业务里存活。
4.2 前端岗位真正值钱的能力正在迁移
这两年前端面试风向变化很大。以前面试重点考框架原理、API用法、浏览器机制,现在越来越多的公司开始关注:你怎么用AI提效、你怎么判断AI产出物的质量、你怎么把一个简单页面做出性能和体验上的优势。基础能力依然是入场券,但差异化竞争力已经换了一轮。
我自己感受最明显的是“代码审查能力”正在变成核心技能。AI写出来的代码,如果你看不懂,那就只能被动接受,页面是什么样就是什么样;如果你看得懂,你就能让AI改到完全符合你的预期。审查AI代码的能力,本质上还是对前端底层原理的理解,包括事件循环、渲染机制、浏览器兼容、网络请求等。这些没有变,变的只是你怎么拿到初稿的方式。
另外还有一个明显的趋势是“全栈化”。当AI把前端页面的产出成本压到极低,只写前端的单一技能抗风险能力在下降。懂一点后端、懂一点部署、懂一点数据流,能让你的工作成果从“一个页面”变成“一个完整可用的产品”。这不是喊口号,而是AI时代前端工种必须做的延展。
4.3 前端面试题变了,学习方法也要跟着变
伴随热搜词里出现一堆“前端面试题2026”,我意识到很多人还在按老一套备考。刷题当然有用,但题目的重心已经偏移。我在这个页面实操里体会到的“AI所不能”,恰恰是未来面试官真正想考的:
第一层,技术深度。JS事件循环的宏任务微任务顺序、浏览器重排重绘机制、CSS包含块的判定、大文件上传的分片逻辑,这些基础原理依然是硬通货,因为它们决定了你能否优化AI生成的代码、能否解决线上诡异bug。
第二层,工程与业务意识。一个页面性能指标怎么定、首屏加载怎么优化、灰度发布怎么做、监控和告警怎么接,这类问题考察的是你能否把一个功能真正交付到用户手里,而不是只写一堆代码。
第三层,AI协作能力。现在越来越多面试官会现场让你用AI工具实现一个功能模块,然后追问:你为什么不直接用它的第一版?你发现了哪些问题?你怎么让它修改?整个过程考察的是你如何把AI变成杠杆,而不是被AI替代。
学习方法也因此要调整。HTML/CSS/JS基础依然是地基,必须扎实;框架选一个主流的上手即可,但不要花太多时间追版本;新的精力应该投在性能优化、工程化、跨端方案、Node做工具链这类更底层的能力上。一句话:技术会换代,但理解问题的本质能力不会贬值。
4.4 我的立场:不是唱衰前端,而是提醒“旧前端”该转型了
写到这里,我想说一下自己的最终立场。很多公众号喜欢渲染“前端已死”的焦虑感,我认为这个说法太极端了。做这个实验前,我也半信半疑,但实测下来我的判断是:前端这个工种不会消失,消失的是“只会套模板写页面”的能力模型。
一个页面让AI生成只花了30分钟,这个现实确实残酷,但它带来的不是岗位减少的恐慌,而是工作内容的升级。以前我一天里有半天在跟CSS死磕,现在这些琐碎交给AI,我可以用省下来的时间去搞懂业务指标、去优化性能、去思考用户流程。真正优秀的页面,依然需要人来定义“好”的标准,AI只是把标准落地得越来越快。
与其说前端落寞了,不如说前端正在告别“手工作坊”进入“机器辅助”时代。人能留下的那份价值,永远是对体验的感知、对问题的判断、对全局的掌控感。这些不是30分钟能生成出来的。
5. 实操阶段常见问题与排查实录
5.1 几个最常踩的坑,直接给你排查清单
问题一:页面在PC端正常,手机端全乱套。 优先检查viewport标签是否设置了width=device-width, initial-scale=1.0,AI偶尔会漏写。其次检查媒体查询,重点看导航、卡片栅格、字体大小三个点。我的经验是直接开浏览器DevTools的设备模拟器,从375px到1440px逐个宽度扫一遍。
问题二:AI引用了不存在的图片或图标。 页面加载后出现破图图标,原因是AI在代码里写了一个训练数据里的示例图片地址。解决办法是全局搜索http开头的资源引用,能换CDN就换CDN,不能换就用CSS渐变和SVG替代,或者干脆用占位图服务临时顶着。
问题三:JavaScript功能“点了没反应”。 这种问题十有八九是选择器写错或者事件绑定元素不存在。AI生成时经常用querySelector('.xxx')但它实际生成的类名跟CSS里的不一样,一个字符对不上就全失效。排查方法是按F12打开Console看报错,然后对照HTML结构和JS里选择器的类名逐一检查。
问题四:页面加载很慢。 检查是不是有没压缩的大图,检查是不是有阻塞渲染的同步JavaScript。AI一般不会主动做代码分割和懒加载,这些都要人工补。把图片改懒加载、把脚本加defer属性,通常能解决大部分加载慢的问题。
问题五:字体或者说标题在部分系统下显示异常。 AI生成的中文字体栈往往只写了sans-serif,在Windows和macOS下渲染效果差异很大。建议把系统的中文字体栈完整写一遍,比如"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif,这样在跨平台用户那里表现更稳定。
5.2 让AI生成原生页面更顺手的几条经验
第一,提示词里必须写“不允许使用框架和UI库”。不写这句话,AI倾向于用Bootstrap的类名或者Tailwind的语法来写CSS,一旦引入这种依赖,你就必须额外引一个几百KB的CSS库,完全违背原生页面轻量化的初衷。
第二,一次生成一个完整的单文件页面,比让AI分多次生成更稳。单文件的上下文连贯性好,AI能自己记住自己定义的类名和变量,不会出现第二次生成的代码找不到第一次定义的样式这类问题。分多次对话生成,AI的“记忆”会丢失,经常需要反复提醒它刚才写了什么。
第三,拿到第一版后,先按功能模块单独测试,再整体验收。我这次就是先测导航、再测Hero、再测FAQ,每个模块单独点一遍。AI的代码里某个模块出错通常是孤立的,单模块测完后整体联调时问题会少很多。
第四,善用“再加一个细节”这类对话方式微调,而不是让AI重写整个文件。比如“导航滚动变色太快,加一个延迟效果”“卡片阴影太重,柔和一点”,这类追加修改AI处理得很好。整体重写反而容易把已经改好的部分改回去。
第五,保留每一版生成的快照。AI修改代码时偶尔会把之前没问题的功能改挂,这时候能回滚到上一版就非常重要。我一般在文件头部加版本号注释,每轮调整保存一个新文件,方便对比差异。
写在最后
这个30分钟的页面实验做下来,我最大的感触不是“AI太强了”,而是“做前端的人要重新定义自己的价值”。AI能快速产出代码,但判断这些代码好不好、要不要改、怎么改,依然需要扎实的基本功和对用户体验的真正的理解。它解放了执行层面的时间,却把更大的责任推给了决策层面。
如果你也想试试这条路,建议从一个极小的原生页面开始,别一上来就搞复杂的业务系统。先让AI写出一个又能看又能跑的页面,然后逐行审视它的CSS和脚本,把这里提到的问题逐一修复,这个“审代码”的过程比你自己写十个页面学到的东西都多。别只做AI代码的搬运工,要做AI代码的把关人。
