欢迎光临
我们一直在努力

Vue 2 迁移交给 Agent 前,先建立行为证据

同一输入和断言约束旧新组件

迁移工具把文件改成了新的组件写法,构建也通过了,但一个曾经隐含在 watch 里的业务规则不见了。页面仍能打开,只有用户切换订单状态时才发现:原来应该禁用的按钮又能点了。

Agent 可以帮助找用法、生成补丁、补测试,前提是先把“旧页面实际要做什么”留下来。没有行为证据,代码更短、类型更严格、语法更新,都不能证明迁移正确。

十月模型消息能支持什么判断

Google 2026 年 10 月 13 日的 Argon 官方资料展示了开发相关能力与案例。它能作为选择候选模型的背景,不能证明某个 Vue 2 系统会被自动无损迁移。

Vue 3.6 RC 页面则属于候选版本资料。当前页面日期不足以支持“十月稳定发布”的说法。项目迁移应先锁定经确认的稳定版;RC 单独建立实验分支与风险记录。Vite 8 的公告日期是 2026 年 3 月 12 日,也不能写成 Vite 7 默认切换或十月新发布。

从一个可回滚模块开始

先挑业务边界清楚的模块,例如订单筛选面板。记录输入 props、发出事件、请求参数、URL 状态、键盘行为及异常提示。对历史 bug 也做标记:哪些是必须兼容的行为,哪些需要在迁移时明确修正,不能把所有旧输出自动封为金标准。

特征测试、小批迁移与差异审查

下面用纯业务函数示范“同一套断言约束新旧实现”。它不包含 Vue,也没有完成组件迁移。保存为 behavior-contract.mjs,执行 node behavior-contract.mjs:

import assert from "node:assert/strict";

function oldCanPay(order) {
if (!["pending", "paid", "cancelled"].includes(order.status))
throw new Error("unknown status");
if (!Number.isSafeInteger(order.amountCents) || order.amountCents < 0)
throw new Error("invalid amount");
return order.status === "pending" && order.amountCents > 0;
}
function newCanPay(order) {
const { status, amountCents } = order;
if (!["pending", "paid", "cancelled"].includes(status))
throw new Error("unknown status");
if (!Number.isSafeInteger(amountCents) || amountCents < 0)
throw new Error("invalid amount");
return status === "pending" && amountCents > 0;
}
function contract(fn) {
assert.equal(fn({ status: "pending", amountCents: 100 }), true);
assert.equal(fn({ status: "pending", amountCents: 0 }), false);
assert.equal(fn({ status: "paid", amountCents: 100 }), false);
assert.equal(fn({ status: "cancelled", amountCents: 100 }), false);
assert.throws(() => fn({ status: "mystery", amountCents: 100 }));
assert.throws(() => fn({ status: "pending", amountCents: NaN }));
}
contract(oldCanPay);
contract(newCanPay);
// 故意遗漏状态约束的候选,必须被相同断言抓住。
assert.throws(() => contract(order => order.amountCents > 0), assert.AssertionError);
console.log("old/new contract passed; deliberately bad candidate rejected");

测试期望应来自业务规则与人工复核。旧、新两个函数互相比相等,若共享一个错误,只会一起通过。上面明确写出 pending、零金额、未知状态的预期,避免仅做输出镜像。

Agent 的任务需要小到能审查

一次只迁一个组件或明确子集,把允许修改路径、目标版本、禁止变更接口与完成条件写进任务。候选补丁产生后,先看业务差异,再看框架差异:事件名称与负载、双向绑定、生命周期清理、异步请求竞态、插槽和样式作用域。

构建通过只覆盖语法与依赖。浏览器端还需检查 DOM 可见状态、请求次数、焦点、输入法、取消与卸载。使用 Playwright 等工具时,应断言用户能观察到的行为,并固定后端夹具,避免真实网络噪声掩盖组件变化。

不要一次性接受大规模重写后再补回归。每一批留可回滚提交,保留旧失败与新通过的运行记录;模型解释“逻辑等价”只能算待核假设。测试、金标准与权限边界不能由同一个 Agent 悄悄放宽。

什么证据还缺着

当前只运行了纯函数契约,没有执行 Vue 2/3 挂载、真实构建、DOM、网络或性能回归。外部测试依赖安装未获准,浏览器断言仍待执行。既没有迁移十万行代码,也没有项目级通过率和效能战果。

发布前应列明旧新框架与构建器确切版本、可回滚范围、已测浏览器、未覆盖行为;对 RC 的结论只适用于实验版本。参考资料:Argon 公告,2026-10-13;Vue RC 版本页,日期不能据此认定稳定发布;Vite 8,2026-03-12;Playwright 断言,滚动文档。

赞(0)
未经允许不得转载:171主机测评 » Vue 2 迁移交给 Agent 前,先建立行为证据
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址