Search: #代码迁移

  1. 《Thorsten Ball:我对软件开发未来的16条判断》

    《Thorsten Ball:我对软件开发未来的16条判断》

    标签:
    #软件工程 #AI编程 #代码审查 #单元测试 #终端工具 #Token计算范式 #开源生态 #软件开发未来 #ThorstenBall

    总结:
    2026年9月19日,知名开发者、《Writing An Interpreter In Go》作者、现供职于 Sourcegraph/Amp 的 Thorsten Ball 在 X 发布长文,抛出 16 条关于软件开发未来的判断。核心观点是:当 AI 写代码的可靠性足够高时,为人类防错而设计的整套工程实践(代码审查、单元测试、终端、命令行工具)都会逐渐失去必要性,工程师的价值将从"写代码的手艺"迁移到"理解业务、判断取舍、拿到反馈"上,而这一切需要一代人的时间完成。

    文章要点:
    1. 代码审查已死——人类不会再逐行 review 模型产出的代码,只会审查"系统与其组合方式"。
    2. 单元测试可能会消失——他让模型写 900 行 Arduino C 代码零错误一次通过,"摔不了跤就不需要护膝"。
    3. 写代码这门手艺会消失,但"造软件"(解决业务问题、判断何时上线、获取反馈)会比以往更重要。
    4. 大多数 bug 将不再是代码 bug,而是"你需求提错了"的 bug。
    5. 终端已死——Shell、编辑器、CLI 工具会被 token 冲刷,命令行知识将像 Perl 一行流一样变成"古老技艺"。
    6. Token 是新的计算范式,我们正在进入"后二进制时代",一切都会在它之上被重构。
    7. PM/设计/工程的铁三角和 Agile、Scrum 都会瓦解,只做"人肉代理"的工程师将不再有价值。
    8. 大小公司的工程差距会拉大——小团队比学大厂做法的初创公司跑得更快。
    9. "好代码"的标准(人类易读易维护)建立在人类要改代码的前提上,这个前提正在崩塌。
    10. 现有形式的开源不再合理——"众眼监虫"依然成立,但现在有了"人工眼睛"。
    11. 拿不到足够 token 的人会被排除在软件生产之外,token 是新的生产力门槛。
    12. 便宜模型未必有人用——更聪明的模型犯错少、轮次少,你未必愿意忍受它多错几次。
    13. 模型快到一定程度后,UI 会被实时生成,菜单、设置页、仪表盘这些"面向人类的 API"会大幅减少。
    14. 这场变革不会一夜发生——新旧范式更替需要一代人的时间,但反问是:"10年后还有写代码的工作,可你想要那份工作吗?"

    URL:https://x.com/thorstenball/status/2101305394190557466 Thorsten Ball (@thorstenball) on X

  2. 《Vitest 5.0 正式发布》

    《Vitest 5.0 正式发布》

    标签:
    #前端 #JavaScript #Vitest #测试框架 #单元测试 #性能优化 #BrowserMode #MockAPI #基准测试 #断言改进 #代码覆盖率

    总结:

    Vitest 5.0 于 2026 年 9 月 3 日正式发布,本次大版本以性能优化为核心,同时带来 Trace View 追踪视图、嵌套项目配置、vi.when 条件 Mock、基准测试重写等多项重要更新,并默认启用更严格的断言与 clearMocks 行为,要求 Vite >= 6.4.0 和 Node.js >= 22.12.0。

    文章要点:

    1. 性能大幅提升:通过共享 Vite 服务器、稳定的文件系统模块缓存、减少主进程与 worker 往返、加速 vm 池与浏览器模式等优化,整体测试速度提升 8%–53%,大型项目(1,280 模块)运行时间从 7.24s 降至 5.83s。

    2. **新增 vitest doctor 诊断工具**:自动运行替代配置并推荐更快的选项,同时默认输出性能提示,帮助用户发现配置瓶颈。
    Browser Mode 内置 Trace Viewew**:开启 browser.traceView 后,可记录交互、断言和 DOM 快照,支持逐步回放测试过程,便于调试 CI 失败。
    嵌套项目与配置继承继承**:内联项目默认继承根配置(无需 extends: true),被引用的配置文件可声明自己的 projects,支持多级嵌套结构。

    5. **新 API vi.when**:支持按参数定义不同的 Mock 返回值,支持深度相等和 expect.any() 等非对称匹配器,并可限制调用基准测试 API 重写API 重写**:bench 变为测试上下文 fixture,可在常规 test() 中使用,支持 fixtures、生命周期钩子、重试和断言,结果可存储并与基线定位器错误显示 ARIA 树ARIA 树**:浏览器模式下定位失败时,同时打印 ARIA 快照和 HTML,帮助快速理解 getByRole 等查询的匹配逻辑;定位器默认启用严格模式。

    8. **Mock Temporal API**:假计时器现在同时模拟 Temporal 和 Date,适用于 vi.useFakeTimers() 和 vi.setSystemTime()。

    9. **更严格的断言行为**:未 await 的异步断言(resolves、rejects 等)现在会导致测试失败;expect.poll 超时后拒绝并支持 AbortSignal 取消。

    10. **clearMocks 默认启用**:每个测试前自动清除 Mock 调用历史,避免测试间报告器统一输出目录。

    11. **报告器统一输出目录**:所有报告器输出集中到 .vitest 目录,减少 .gitignore 配置;HTML 报告器支持 singleFile 选项生成单文件报告。

    12. **其他实用改进**:新增 --repeats 选项重复运行测试以排查 flaky 测试;injectCjsGlobals 可禁用 CJS 全局注入;覆盖率工具切换到维护中的 @vitest/istanbuljs 包。

    13. **破坏性变更**:要求 Vite >= 6.4.0 和 Node.js >= 22.12.0,升级前建议查阅迁移指南。

    URL:
    https://vitest.dev/blog/vitest-5 Announcing Vitest 5.0

  3. 《W键在前端:技术与产品的协同进化》

    《W键在前端:技术与产品的协同进化》

    标签:#前端工程化 #Electron #Vite #代码重构 #Monorepo #TailwindCSS #ShadcnUI #ReactRouter #性能优化 #Medal

    总结:

    文章要点:
    1. **从"巨兽组件"说起**:作者用一张拥有30+ props的TextInput截图开场,生动展示了"反模式"组件的恐怖——职责混乱、默认值泛滥、DOM和自定义props杂糅,改一行代码要检查十个角落,开发体验堪比噩梦
    2. **宏观手术刀**:不硬啃旧组件,而是先换"土壤"——迁移Monorepo+PNPM解决版本混乱,引入Vite+HMR让Electron本地开发告别"停启地狱",CEO亲自下场当普罗米修斯点火
    3. **Marie Kondo式删代码**:统一导入路径(包名+清晰路径+文件后缀),减少barrel文件,让AI能精准识别"死代码"。结果疯狂删代码:单PR删除上万行,团队享受"五杀"快感,还提炼出跨平台通用包(utils/hooks/types)
    4. **生产环境统一Vite**:干掉Rollup,用Glob Imports做代码分割,配合路由级动态加载,i18n文件懒加载,最终渲染包从巨大体积瘦身到2.7MB,构建速度快到QA都惊呼"嗖嗖嗖"
    5. **组件层"换血"**:用Tailwind+Shadcn/Radix UI(后迁Base UI)替代Grommet和Styled Components,给旧组件挂ESLint"红牌"禁止令,同时写迁移指南。React Router v5→v7的大升级也顺势完成,现在搭个新页面只需一天

    URL:https://medal.tv/blog/posts/w-key-in-frontend-synergizing-technology-and-product W-Key in Frontend: Synergizing Technology and Product | Medal

  4. 《Node.js官方发布Axios迁移Fetch指南》

    《Node.js官方发布Axios迁移Fetch指南》

    标签:#后端 #NodeJS #FetchAPI #Axios #代码迁移 #HTTP请求

    总结:
    Node.js官方博客发布了一个将Axios代码自动迁移到原生WHATWG Fetch API的codemod工具,详细说明了迁移理由、Node.js版本要求、支持的转换方法及具体代码示例,同时坦诚标注了暂不支持的高级特性。

    文章要点:
    1. 迁移四大理由:Fetch是Node.js原生内置,无需额外依赖;性能针对现代运行时做了优化;严格遵循Web标准,浏览器和Node.js代码可复用;移除第三方库减少安全风险
    2. 版本门槛:Node.js v18起Fetch可用但为实验性,v21起才稳定;如果包还兼容v18以下,迁移必须升主版本号并修改package.json的engines字段
    3. 支持的转换方法覆盖很全,包括get、post、put、patch、delete、head、options、request以及postForm/putForm/patchForm等表单提交方式
    4. 转换后的Fetch代码会用Object.assign(res, { data: await res.json() })来模拟Axios的response.data结构,让迁移后的代码改动最小化
    5. 目前暂不支持拦截器、取消令牌和axios.create()实例配置等高级特性,这些场景需要手动处理
    6. 官方对Axios维护者表达了感谢,认可其对生态的贡献

    URL:
    https://nodejs.org/en/blog/migrations/axios-to-fetch