<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>代码迁移 | 锤子前端</title><description>Now vibe coding, so learning hammer FE ?</description><link>https://channel.meo-ai.com</link><item><title>《Thorsten Ball：我对软件开发未来的16条判断》</title><link>https://channel.meo-ai.com/posts/721</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/721</guid><pubDate>Fri, 23 Oct 2026 01:09:56 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《Thorsten Ball：我对软件开发未来的16条判断》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;br /&gt;&lt;a href=&quot;/search/result?q=%23%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B&quot; title=&quot;#软件工程&quot;&gt;#软件工程&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23AI%E7%BC%96%E7%A8%8B&quot; title=&quot;#AI编程&quot;&gt;#AI编程&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E4%BB%A3%E7%A0%81%E5%AE%A1%E6%9F%A5&quot; title=&quot;#代码审查&quot;&gt;#代码审查&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95&quot; title=&quot;#单元测试&quot;&gt;#单元测试&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E7%BB%88%E7%AB%AF%E5%B7%A5%E5%85%B7&quot; title=&quot;#终端工具&quot;&gt;#终端工具&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Token%E8%AE%A1%E7%AE%97%E8%8C%83%E5%BC%8F&quot; title=&quot;#Token计算范式&quot;&gt;#Token计算范式&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%BC%80%E6%BA%90%E7%94%9F%E6%80%81&quot; title=&quot;#开源生态&quot;&gt;#开源生态&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E6%9C%AA%E6%9D%A5&quot; title=&quot;#软件开发未来&quot;&gt;#软件开发未来&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23ThorstenBall&quot; title=&quot;#ThorstenBall&quot;&gt;#ThorstenBall&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;2026年9月19日，知名开发者、《Writing An Interpreter In Go》作者、现供职于 Sourcegraph/Amp 的 Thorsten Ball 在 X 发布长文，抛出 16 条关于软件开发未来的判断。核心观点是：当 AI 写代码的可靠性足够高时，为人类防错而设计的整套工程实践（代码审查、单元测试、终端、命令行工具）都会逐渐失去必要性，工程师的价值将从&quot;写代码的手艺&quot;迁移到&quot;理解业务、判断取舍、拿到反馈&quot;上，而这一切需要一代人的时间完成。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;1. 代码审查已死——人类不会再逐行 review 模型产出的代码，只会审查&quot;系统与其组合方式&quot;。&lt;br /&gt;2. 单元测试可能会消失——他让模型写 900 行 Arduino C 代码零错误一次通过，&quot;摔不了跤就不需要护膝&quot;。&lt;br /&gt;3. 写代码这门手艺会消失，但&quot;造软件&quot;（解决业务问题、判断何时上线、获取反馈）会比以往更重要。&lt;br /&gt;4. 大多数 bug 将不再是代码 bug，而是&quot;你需求提错了&quot;的 bug。&lt;br /&gt;5. 终端已死——Shell、编辑器、CLI 工具会被 token 冲刷，命令行知识将像 Perl 一行流一样变成&quot;古老技艺&quot;。&lt;br /&gt;6. Token 是新的计算范式，我们正在进入&quot;后二进制时代&quot;，一切都会在它之上被重构。&lt;br /&gt;7. PM/设计/工程的铁三角和 Agile、Scrum 都会瓦解，只做&quot;人肉代理&quot;的工程师将不再有价值。&lt;br /&gt;8. 大小公司的工程差距会拉大——小团队比学大厂做法的初创公司跑得更快。&lt;br /&gt;9. &quot;好代码&quot;的标准（人类易读易维护）建立在人类要改代码的前提上，这个前提正在崩塌。&lt;br /&gt;10. 现有形式的开源不再合理——&quot;众眼监虫&quot;依然成立，但现在有了&quot;人工眼睛&quot;。&lt;br /&gt;11. 拿不到足够 token 的人会被排除在软件生产之外，token 是新的生产力门槛。&lt;br /&gt;12. 便宜模型未必有人用——更聪明的模型犯错少、轮次少，你未必愿意忍受它多错几次。&lt;br /&gt;13. 模型快到一定程度后，UI 会被实时生成，菜单、设置页、仪表盘这些&quot;面向人类的 API&quot;会大幅减少。&lt;br /&gt;14. 这场变革不会一夜发生——新旧范式更替需要一代人的时间，但反问是：&quot;10年后还有写代码的工作，可你想要那份工作吗？&quot;&lt;br /&gt;&lt;br /&gt;URL：&lt;a href=&quot;https://x.com/thorstenball/status/2101305394190557466&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://x.com/thorstenball/status/2101305394190557466&quot;&gt;https://x.com/thorstenball/status/2101305394190557466&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://x.com/thorstenball/status/2101305394190557466&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Most predictions I see are still way too conservative.Here&apos;s mine&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;X (formerly Twitter)&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;Thorsten Ball (@thorstenball) on X&quot; src=&quot;/static/https://cdn4.telesco.pe/file/Fz4kqtIOpFVZ09G5TEoSk5-tpwjDSjDESHW055897s39vYKqP2Rtlsk359JqflW_B1jJAYc7oA7hnv-zvzeLUqa0oCgHPupOHnLAl15cx_EupZUY36NwUgy2aFQpTJxS1zBPIZPJqgIUorHSXXhJUsSz5l9gkpG270kM_z36wZFJAW0Mqqszt8pt0zAWvBr7V0e-PVgj5TYGBVX-5FxR5AkazIdfttzE78prjKGHRzqGaRn5M4aS2iA17-V7O5mulQwh4M3ZmADaMwB03mOcTqa1dKKFIyxWvLmmKP4j6EgpqodADWgrPBgFtXMPdibkhC6vsV44yQEIdylehTLm7Q.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;Thorsten Ball (@thorstenball) on X&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Most predictions I see are still way too conservative.&lt;br /&gt;&lt;br /&gt;Here&apos;s mine&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>《Vitest 5.0 正式发布》</title><link>https://channel.meo-ai.com/posts/704</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/704</guid><pubDate>Thu, 10 Sep 2026 23:19:53 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《Vitest 5.0 正式发布》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;br /&gt;&lt;a href=&quot;/search/result?q=%23%E5%89%8D%E7%AB%AF&quot; title=&quot;#前端&quot;&gt;#前端&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23JavaScript&quot; title=&quot;#JavaScript&quot;&gt;#JavaScript&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Vitest&quot; title=&quot;#Vitest&quot;&gt;#Vitest&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%B5%8B%E8%AF%95%E6%A1%86%E6%9E%B6&quot; title=&quot;#测试框架&quot;&gt;#测试框架&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95&quot; title=&quot;#单元测试&quot;&gt;#单元测试&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96&quot; title=&quot;#性能优化&quot;&gt;#性能优化&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23BrowserMode&quot; title=&quot;#BrowserMode&quot;&gt;#BrowserMode&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23MockAPI&quot; title=&quot;#MockAPI&quot;&gt;#MockAPI&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%9F%BA%E5%87%86%E6%B5%8B%E8%AF%95&quot; title=&quot;#基准测试&quot;&gt;#基准测试&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%96%AD%E8%A8%80%E6%94%B9%E8%BF%9B&quot; title=&quot;#断言改进&quot;&gt;#断言改进&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E4%BB%A3%E7%A0%81%E8%A6%86%E7%9B%96%E7%8E%87&quot; title=&quot;#代码覆盖率&quot;&gt;#代码覆盖率&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;&lt;br /&gt;Vitest 5.0 于 2026 年 9 月 3 日正式发布，本次大版本以性能优化为核心，同时带来 Trace View 追踪视图、嵌套项目配置、&lt;code&gt;vi.when&lt;/code&gt; 条件 Mock、基准测试重写等多项重要更新，并默认启用更严格的断言与 &lt;code&gt;clearMocks&lt;/code&gt; 行为，要求 Vite &amp;gt;= 6.4.0 和 Node.js &amp;gt;= 22.12.0。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;&lt;br /&gt;1. &lt;b&gt;性能大幅提升&lt;/b&gt;：通过共享 Vite 服务器、稳定的文件系统模块缓存、减少主进程与 worker 往返、加速 vm 池与浏览器模式等优化，整体测试速度提升 8%–53%，大型项目（1,280 模块）运行时间从 7.24s 降至 5.83s。&lt;br /&gt;&lt;br /&gt;2. **新增 &lt;code&gt;vitest doctor&lt;/code&gt; 诊断工具**：自动运行替代配置并推荐更快的选项，同时默认输出性能提示，帮助用户发现配置瓶颈。&lt;br /&gt;&lt;b&gt;Browser Mode 内置 Trace View&lt;/b&gt;ew**：开启 &lt;code&gt;browser.traceView&lt;/code&gt; 后，可记录交互、断言和 DOM 快照，支持逐步回放测试过程，便于调试 CI 失败。&lt;br /&gt;&lt;b&gt;嵌套项目与配置继承&lt;/b&gt;继承**：内联项目默认继承根配置（无需 &lt;code&gt;extends: true&lt;/code&gt;），被引用的配置文件可声明自己的 &lt;code&gt;projects&lt;/code&gt;，支持多级嵌套结构。&lt;br /&gt;&lt;br /&gt;5. **新 API &lt;code&gt;vi.when&lt;/code&gt;**：支持按参数定义不同的 Mock 返回值，支持深度相等和 &lt;code&gt;expect.any()&lt;/code&gt; 等非对称匹配器，并可限制调用&lt;b&gt;基准测试 API 重写&lt;/b&gt;API 重写**：&lt;code&gt;bench&lt;/code&gt; 变为测试上下文 fixture，可在常规 &lt;code&gt;test()&lt;/code&gt; 中使用，支持 fixtures、生命周期钩子、重试和断言，结果可存储并与基线&lt;b&gt;定位器错误显示 ARIA 树&lt;/b&gt;ARIA 树**：浏览器模式下定位失败时，同时打印 ARIA 快照和 HTML，帮助快速理解 &lt;code&gt;getByRole&lt;/code&gt; 等查询的匹配逻辑；定位器默认启用严格模式。&lt;br /&gt;&lt;br /&gt;8. **Mock &lt;code&gt;Temporal&lt;/code&gt; API**：假计时器现在同时模拟 &lt;code&gt;Temporal&lt;/code&gt; 和 &lt;code&gt;Date&lt;/code&gt;，适用于 &lt;code&gt;vi.useFakeTimers()&lt;/code&gt; 和 &lt;code&gt;vi.setSystemTime()&lt;/code&gt;。&lt;br /&gt;&lt;br /&gt;9. **更严格的断言行为**：未 await 的异步断言（&lt;code&gt;resolves&lt;/code&gt;、&lt;code&gt;rejects&lt;/code&gt; 等）现在会导致测试失败；&lt;code&gt;expect.poll&lt;/code&gt; 超时后拒绝并支持 &lt;code&gt;AbortSignal&lt;/code&gt; 取消。&lt;br /&gt;&lt;br /&gt;10. **&lt;code&gt;clearMocks&lt;/code&gt; 默认启用**：每个测试前自动清除 Mock 调用历史，避免测试间&lt;b&gt;报告器统一输出目录&lt;/b&gt;。&lt;br /&gt;&lt;br /&gt;11. **报告器统一输出目录**：所有报告器输出集中到 &lt;code&gt;.vitest&lt;/code&gt; 目录，减少 &lt;code&gt;.gitignore&lt;/code&gt; 配置；HTML 报告器支持 &lt;code&gt;singleFile&lt;/code&gt; 选项生成单文件报告。&lt;br /&gt;&lt;br /&gt;12. **其他实用改进**：新增 &lt;code&gt;--repeats&lt;/code&gt; 选项重复运行测试以排查 flaky 测试；&lt;code&gt;injectCjsGlobals&lt;/code&gt; 可禁用 CJS 全局注入；覆盖率工具切换到维护中的 &lt;code&gt;@vitest/istanbuljs&lt;/code&gt; 包。&lt;br /&gt;&lt;br /&gt;13. **破坏性变更**：要求 Vite &amp;gt;= 6.4.0 和 Node.js &amp;gt;= 22.12.0，升级前建议查阅迁移指南。&lt;br /&gt;&lt;br /&gt;URL：&lt;br /&gt;&lt;a href=&quot;https://vitest.dev/blog/vitest-5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://vitest.dev/blog/vitest-5&quot;&gt;https://vitest.dev/blog/vitest-5&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://vitest.dev/blog/vitest-5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Vitest 5.0 Release Announcement&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;vitest.dev&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;Announcing Vitest 5.0&quot; src=&quot;/static/https://cdn4.telesco.pe/file/pVrT7Df8_yhALcjdMSbUXlZgBUnkLka7DoWlX0BhkZtBrRqSCZrphE1n9cwrXrwmFQ9nnTNX5oynSmNrAb2xH-ppzjn20jcze0Kp2GlUi59p1y25xNY62U72jnzS_5aOP6cLJASvUASy5ktk4AHU_wNqd0UVHjwvVIyIizEBdw9f2sgrruYRqN2YTeWz_Im1nBEOJUsi0BsGznnVx9_ce1llIGPkmPJ1caONhNlcFeZ-7-wqNB3Am6YwsU2TLz9lcs2nOH1RU4dQrwCVWvIw5uVxbyXrnem9JCUArwtunI_9LIC5h-nYxLBiIInNtQeercqg-0I_v_eyvWNu4aCh2g.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;Announcing Vitest 5.0&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Vitest 5.0 Release Announcement&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>《W键在前端：技术与产品的协同进化》</title><link>https://channel.meo-ai.com/posts/673</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/673</guid><pubDate>Fri, 10 Jul 2026 02:21:02 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《W键在前端：技术与产品的协同进化》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;a href=&quot;/search/result?q=%23%E5%89%8D%E7%AB%AF%E5%B7%A5%E7%A8%8B%E5%8C%96&quot; title=&quot;#前端工程化&quot;&gt;#前端工程化&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Electron&quot; title=&quot;#Electron&quot;&gt;#Electron&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Vite&quot; title=&quot;#Vite&quot;&gt;#Vite&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E4%BB%A3%E7%A0%81%E9%87%8D%E6%9E%84&quot; title=&quot;#代码重构&quot;&gt;#代码重构&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Monorepo&quot; title=&quot;#Monorepo&quot;&gt;#Monorepo&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23TailwindCSS&quot; title=&quot;#TailwindCSS&quot;&gt;#TailwindCSS&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23ShadcnUI&quot; title=&quot;#ShadcnUI&quot;&gt;#ShadcnUI&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23ReactRouter&quot; title=&quot;#ReactRouter&quot;&gt;#ReactRouter&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96&quot; title=&quot;#性能优化&quot;&gt;#性能优化&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Medal&quot; title=&quot;#Medal&quot;&gt;#Medal&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;1. **从&quot;巨兽组件&quot;说起**：作者用一张拥有30+ props的TextInput截图开场，生动展示了&quot;反模式&quot;组件的恐怖——职责混乱、默认值泛滥、DOM和自定义props杂糅，改一行代码要检查十个角落，开发体验堪比噩梦&lt;br /&gt;2. **宏观手术刀**：不硬啃旧组件，而是先换&quot;土壤&quot;——迁移Monorepo+PNPM解决版本混乱，引入Vite+HMR让Electron本地开发告别&quot;停启地狱&quot;，CEO亲自下场当普罗米修斯点火&lt;br /&gt;3. **Marie Kondo式删代码**：统一导入路径（包名+清晰路径+文件后缀），减少barrel文件，让AI能精准识别&quot;死代码&quot;。结果疯狂删代码：单PR删除上万行，团队享受&quot;五杀&quot;快感，还提炼出跨平台通用包（utils/hooks/types）&lt;br /&gt;4. **生产环境统一Vite**：干掉Rollup，用Glob Imports做代码分割，配合路由级动态加载，i18n文件懒加载，最终渲染包从巨大体积瘦身到2.7MB，构建速度快到QA都惊呼&quot;嗖嗖嗖&quot;&lt;br /&gt;5. **组件层&quot;换血&quot;**：用Tailwind+Shadcn/Radix UI（后迁Base UI）替代Grommet和Styled Components，给旧组件挂ESLint&quot;红牌&quot;禁止令，同时写迁移指南。React Router v5→v7的大升级也顺势完成，现在搭个新页面只需一天&lt;br /&gt;&lt;br /&gt;URL：&lt;a href=&quot;https://medal.tv/blog/posts/w-key-in-frontend-synergizing-technology-and-product&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://medal.tv/blog/posts/w-key-in-frontend-synergizing-technology-and-product&quot;&gt;https://medal.tv/blog/posts/w-key-in-frontend-synergizing-technology-and-product&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://medal.tv/blog/posts/w-key-in-frontend-synergizing-technology-and-product&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Front End Engineer Rick Zhang shares how Medal&apos;s frontend team broke the deadlock between legacy code and new features by rebuilding their developer experience from the ground up. Through a monorepo migration, a full move to Vite and Rolldown, aggressive…&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;medal.tv&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;W-Key in Frontend: Synergizing Technology and Product | Medal&quot; src=&quot;/static/https://cdn4.telesco.pe/file/Ja8jh4CR_X5n1ZweFyHbHOk07dDOJlt1YEjJr4IwK-miJoQ7-XP0mn5MVL75muvn92MqXGqIxlsw4__v1RrBmkGaW8nTgADE7YHhACPnMF_so3dlhW2tahrRFuskkx13d_iaE5pDMKgqjqKN6wHyIOmJgbF8a2t-8iPwY393mvUegrIa2IfULNQdyMvXR04Om6MLAElsPSfQME303_B9Q8EsXJx6w40grYF_2XwFkrr94ZK6LZq52EfP3D-BbQ0vl2stbCn-tTACUzoGdP1-C8bU6xtWAb0lLCnGGbaDxIRCCM6sC73HUl48vh4DLQSLPBDMSOSHZpEjqDhNmr3-TQ.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;W-Key in Frontend: Synergizing Technology and Product | Medal&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Front End Engineer Rick Zhang shares how Medal&apos;s frontend team broke the deadlock between legacy code and new features by rebuilding their developer experience from the ground up. Through a monorepo migration, a full move to Vite and Rolldown, aggressive…&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>《Node.js官方发布Axios迁移Fetch指南》</title><link>https://channel.meo-ai.com/posts/640</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/640</guid><pubDate>Fri, 22 May 2026 10:24:20 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《Node.js官方发布Axios迁移Fetch指南》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;a href=&quot;/search/result?q=%23%E5%90%8E%E7%AB%AF&quot; title=&quot;#后端&quot;&gt;#后端&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23NodeJS&quot; title=&quot;#NodeJS&quot;&gt;#NodeJS&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23FetchAPI&quot; title=&quot;#FetchAPI&quot;&gt;#FetchAPI&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Axios&quot; title=&quot;#Axios&quot;&gt;#Axios&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E4%BB%A3%E7%A0%81%E8%BF%81%E7%A7%BB&quot; title=&quot;#代码迁移&quot;&gt;#代码迁移&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23HTTP%E8%AF%B7%E6%B1%82&quot; title=&quot;#HTTP请求&quot;&gt;#HTTP请求&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;Node.js官方博客发布了一个将Axios代码自动迁移到原生WHATWG Fetch API的codemod工具，详细说明了迁移理由、Node.js版本要求、支持的转换方法及具体代码示例，同时坦诚标注了暂不支持的高级特性。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;1. 迁移四大理由：Fetch是Node.js原生内置，无需额外依赖；性能针对现代运行时做了优化；严格遵循Web标准，浏览器和Node.js代码可复用；移除第三方库减少安全风险&lt;br /&gt;2. 版本门槛：Node.js v18起Fetch可用但为实验性，v21起才稳定；如果包还兼容v18以下，迁移必须升主版本号并修改package.json的engines字段&lt;br /&gt;3. 支持的转换方法覆盖很全，包括get、post、put、patch、delete、head、options、request以及postForm/putForm/patchForm等表单提交方式&lt;br /&gt;4. 转换后的Fetch代码会用&lt;code&gt;Object.assign(res, { data: await res.json() })&lt;/code&gt;来模拟Axios的&lt;code&gt;response.data&lt;/code&gt;结构，让迁移后的代码改动最小化&lt;br /&gt;5. 目前暂不支持拦截器、取消令牌和&lt;code&gt;axios.create()&lt;/code&gt;实例配置等高级特性，这些场景需要手动处理&lt;br /&gt;6. 官方对Axios维护者表达了感谢，认可其对生态的贡献&lt;br /&gt;&lt;br /&gt;URL：&lt;br /&gt;&lt;a href=&quot;https://nodejs.org/en/blog/migrations/axios-to-fetch&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://nodejs.org/en/blog/migrations/axios-to-fetch&quot;&gt;https://nodejs.org/en/blog/migrations/axios-to-fetch&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://nodejs.org/en/blog/migrations/axios-to-fetch&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.&quot;&gt;
  &lt;i class=&quot;link_preview_right_image&quot; style=&quot;background-image:url(&apos;https://cdn4.telesco.pe/file/ej4bjz94abCNm6Z7pgT3GobaAe9h2LJm8ruR90FMRPeDllVqIXw5gGim3Fc0MThsmjooNygiTaow8YTMjOtc9bJx3hgP4qySOpjVqdrrPjgViylh0__axb4VR2v8YmJU1Kr9xujmBzeDQPOvPvOXyfnXcKQKXcO76nHt2Xmy8rZxT5LnYK_GmDR4_svaziYKtU3D94FNcvan-nt3Ov12uF5FPyEsuH4ZBZddlobQkmiydyc7pkDCGRxS-mSnoXtsAUZggk4_8y0RW7l_rxjAkEIzC_wZFX-Pglg-6M1H_0oesby_f9m9Gb_HagcrzJvB32hd_bD1gGTSunA94NEMJg.jpg&apos;)&quot;&gt;&lt;/i&gt;
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;nodejs.org&lt;/div&gt;
  
  &lt;div class=&quot;link_preview_title&quot;&gt;Node.js — Axios to WHATWG Fetch&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Node.js&lt;i class=&quot;emoji&quot; style=&quot;background-image:url(&apos;//telegram.org/img/emoji/40/C2AE.png&apos;)&quot;&gt;&lt;b&gt;®&lt;/b&gt;&lt;/i&gt; is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.&lt;/div&gt;
&lt;/a&gt;</content:encoded></item></channel></rss>