2025 AI/Vibe Coding

43 阅读3分钟

2025 年快结束的时候,我回头看了一眼这一年的代码量,突然意识到一件事:

我写的代码可能变少了,但解决的问题变复杂了。

这是我第一次明确感觉到——
前端工程师的成长,真的进入了下一个阶段。


一、这一年,我写得最多的不是页面

如果用几个关键词概括我 2025 年的工作内容:

  • Vue3 / React 仍然在写
  • 表单、列表、弹窗一个不少
  • 但真正消耗精力的,不再是 UI

而是这些:

  • 复杂数据结构怎么设计
  • 状态该不该存在
  • 计算逻辑放前端还是后端
  • 改一个需求会不会影响隐蔽分支

前端越来越不像“切图”,而像“建模”。


二、一个真实变化:我开始先画“逻辑”,再写代码

这一年我明显养成了一个新习惯:

需求一来,先不写代码。

以前我会直接开文件、起组件;
现在我会先把这三件事想清楚:

  1. 数据结构长什么样
  2. 哪些是不可变约束
  3. 哪些是 UI 层可以随便改的

比如在一个复杂的评分 / 概率 / 封顶计算需求里,我会先明确:

// 哪些是规则
const MAX_INPUT = 15000
const PROB_A = 0.9

// 哪些是变量
asset
profit

然后才去写代码。

这个转变,让我后面几乎不需要推翻重写


三、AI 真正介入我工作的方式,不是“帮我写”

2025 年我用 AI 最多的场景,其实不是生成代码,而是这几类问题:

  • “这个设计有没有隐含 bug?”
  • “这个状态是不是根本不该存在?”
  • “这个逻辑在极端情况下会不会炸?”

比如在 Element Plus 的动态表单里,我遇到过这种问题:

<el-form-item :prop="`goalList.${index}.value`">

删除中间项后校验异常、DOM 报错。

我把问题描述给 AI 后,它第一反应不是改代码,而是提醒我:

“prop 是字符串路径,index 变化会导致引用失效。”

这让我意识到:
AI 更适合站在“代码审查者”的位置。


一、真实场景:一个“看起来很普通”的表单

这是一个我在真实项目里遇到的需求:

  • Vue3 + Element Plus
  • 动态数组表单(可新增 / 删除)
  • 每一项都有校验
  • 校验字段路径是动态的
  • 删除后不能影响其他项的校验

一开始的代码,大概是这样的 👇

<el-form :model="form" ref="formRef">
  <div v-for="(item, index) in form.goalList" :key="item.id">
    <el-form-item
      :label="`目标${index + 1}`"
      :prop="`goalList.${index}.goalContent`"
    >
      <el-input v-model="item.goalContent" />
    </el-form-item>

    <el-button @click="remove(index)">删除</el-button>
  </div>
</el-form>

问题很快就来了:

  • 删除中间一项后
  • 校验报错指向错误的 index
  • 有时直接报:
    DOMException: String contains an invalid character

二、以前的我:开始“盲修”

老实说,这种问题以前我的处理方式是:

  • 打 log
  • 猜原因
  • 搜关键词
  • 一点点试

但这一次,我换了种方式。


三、我第一次把问题“交给 AI 先推演”

我没有让 AI 改代码,而是直接把问题描述给它:

“这是一个动态数组表单,
使用 Element Plus,prop 是动态字符串,
删除中间项后校验会异常,
你先别改代码,帮我分析可能的根因。”

它给我的第一条结论就是:

“prop 路径是字符串,会被当成 DOM selector 的一部分,
特殊字符或 index 变化都可能导致异常。”

然后它提醒我两个点:

  1. key 是否稳定
  2. prop 是否和 v-model 完全一致

四、真实修复:稳定 key + 显式数据路径

我最后采用的是这一版方案 👇

1️⃣ 保证 key 永远稳定

function addGoal() {
  form.goalList.push({
    id: Date.now(), // 永远不变
    goalContent: ''
  })
}
<div v-for="(item, index) in form.goalList" :key="item.id">

2️⃣ 明确 prop 只指向数据模型

<el-form-item
  :prop="`goalList.${index}.goalContent`"
>
  <el-input v-model="form.goalList[index].goalContent" />
</el-form-item>

而不是直接用 item.xxx


3️⃣ 删除时,手动清理校验状态

这是我以前经常忽略的一步:

function remove(index: number) {
  form.goalList.splice(index, 1)
  nextTick(() => {
    formRef.value?.clearValidate()
  })
}

👉 这一步是 AI 特别提醒我的。

五、技术成长最大的变化:从“写法”到“选择”

如果说前几年我的成长重点是:

“我会不会这个技术?”

那 2025 年,问题变成了:

“我该不该这样做?”

比如:

  • 一个状态,是不是本来就不该进前端?
  • 一个复杂计算,是否应该先抽象成纯函数?
  • 一个组件,是不是已经过度封装?

这些问题,没有标准答案,但会直接决定项目质量。

而 AI 的价值在于:
它可以陪我把所有选项都推一遍。


六、Vibe Coding 对我来说,不是快,是“稳”

很多人理解 Vibe Coding 是“写得飞快”,
但我自己的感受恰恰相反。

我 2025 年写代码的状态更像是:

  • 节奏稳定
  • 很少被卡住
  • 很少“越改越乱”

因为在真正敲代码之前,
80% 的坑已经被提前发现了。

这是一种很微妙的变化:
不是技术突然跃迁,而是心态开始变从容


七、这一年我对“前端工程师”的重新认识

2025 年让我彻底确认了一件事:

前端工程师的核心竞争力,
不是写组件的速度,而是对复杂度的判断力。

AI 能写组件、补逻辑、找语法错误;
但它替代不了你去判断:

  • 什么是必要复杂度
  • 什么是可以删掉的复杂度

而这,恰恰是成长的分水岭。


结语:这是我前端生涯的一个分水年

2025 年不是我学到最多 API 的一年,
但很可能是我:

  • 写代码最顺的一年
  • 犯低级错误最少的一年
  • 对“技术”理解最清晰的一年

前端没有消失,
只是开始变得更接近“工程”。

而 AI,让我第一次觉得:

我不是在追着技术跑,而是在和它并肩走。

这,就是我 2025 年的
前端 · Vibe Coding · 年度总结