V2EX 10月01日
前后端技术栈升级的挑战与思考
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文探讨了前后端技术栈升级过程中遇到的不同体验。后端方面,Java和Spring Boot的升级相对顺利,尤其是引入虚拟线程带来了丝滑的体验。然而,前端库和框架的升级则显得尤为棘手,原因在于新功能、新依赖与旧框架版本之间的冲突。文章以Remix和Next.js为例,详细描述了它们在版本迭代中带来的兼容性问题和重构压力,例如Remix从v2到v3的重大变革,以及Next.js App Router对Page Router的“软弃用”策略。作者对框架开发者“创新大于兼容”的做法表示困惑,并将其与苹果的系统升级策略类比。

🚀 后端技术栈升级体验:Java 11/Spring Boot 2 升级至 Java 21/Spring Boot 3 过程相对平稳,仅需关注 Lombok 和 Java EE 到 Jakarta EE 的迁移,且引入虚拟线程(virtual thread)为 IO 密集型任务带来了显著的性能和体验提升,实现“丝滑”的并发处理。

🤯 前端库/框架升级的复杂性:前端升级面临的挑战远大于后端,主要源于对新功能、新特性的需求以及引入新依赖时可能与老版本框架产生的兼容性问题。框架频繁且重大的版本更新,往往需要开发者投入大量精力进行重构,有时甚至需要解决大量的兼容性细节。

🔄 Remix 与 React Router 的版本迭代困境:Remix v2 升级到 v3 涉及与 React Router v7 的合并,期间引入了大量“future flags”和 codemod 工具,但仍有大量手动修复工作。React Router 的模式演变(框架模式、库模式细分)增加了理解成本,而 Remix 随后宣布的完全重写(不基于 React)更是令人费解,这种不兼容的激进迭代给开发者带来巨大困扰。

📱 Next.js App Router 的“软弃用”策略:Next.js 13 引入 App Router 并鼓励从 Page Router 迁移,虽然提供了并存和逐步迁移方案,但新特性主要集中在 App Router,实质上是一种“软弃用”。开发者面临不迁移就会被边缘化、无法享受框架最新发展的压力,这本质上也是一种不考虑兼容性的策略,以未来发展前景驱动重构。

🤔 开发者对“创新大于兼容”的思考:作者对部分流行的前端框架开发者热衷于激进的、不考虑兼容性的重大改动表示不解,认为这种做法虽然追求创新,但给开发者带来了沉重的学习和维护成本,并将其比作苹果系统升级后强制用户更新应用的策略。

现在技术栈主要是 js/ts + react/nextjsjava + sb

前段时间把自己之前的项目,跑在 java11sb2,升级到了 java21sb3,除了 lombok 要跟着升级,再加上 javaEE 包改成 JakartaEE,其他都兼容了,没遇到太大问题。然后把几个 IO 任务的线程池改成 virtual thread, 测试没问题就发上去了,感觉比较丝滑。


但是前端这边的库/框架要升级感觉就特别蛋疼。。。。

首先为什么要升级呢,因为想用新功能和特性,而且还在不断写的项目偶尔要用一些新依赖,框架版本太老可能会和新依赖本身产生冲突,emmmm ,但是反过来,升太快可能其他库还没准备好...也会各种不兼容。


去年学了 remix,项目里要用。v2 版本,future flags 开了大部分。
然后看到官方说不会有 v3 版本了,v3 和 react router v7 合并...
我:???

后来真合并了,升级需要打开所有 v2 的 future flag ,然后用 codemod 可以完成部分工作,剩下一堆有问题的地方自己找 issue 解决了,大量的包名从 remix 改成了 rr

rr 的 v7 开始说自己有多种模式,你可以用框架模式(其实就是remix), 库模式(之前 rr 的方式), 现在库模式好像又分成了两个。rr 算是不兼容老熟人了,只能说 remix 无了。

然后 remix 又突然宣布 remix v3 正在开发。
我:???
一看,这个 v3 是完全新的东西,甚至不基于 react 了,官方说是完全不一样的东西。
彻底无语了,完全不一样的东西你叫啥 v3 。

Next.js 的情况稍微好一点点,至少这个框架是持续性的,不像 Remix,有点绝后的感觉。
Next.js 13 的时候出了 App Router, 然后建议从 Page Router 迁移到 App Router,官方提供了并存和逐步迁移的方案。

但也基本是“软弃用”了,新特性全是 App Router 的。官方也通过文档不断告诉你,你正在使用的技术已经过时了,再不迁移,就享受不到框架发展的红利,逐渐会被边缘化。这东西本质上也是一种“不搞兼容”的策略,用未来的发展前景逼着你进行重构。

这两个库算是用的人不少了吧,就感觉很神奇,为什么就不喜欢搞兼容呢,感觉好像创新大于一切似的,动不动就搞个大改动😂,有点像苹果,我升级系统你不跟是吧,那你 app 别跑了呗😂。

emmm...可能这就是 windows 思维和苹果思维?

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

技术栈升级 Java Spring Boot 虚拟线程 前端框架 Remix React Router Next.js App Router 兼容性 技术迭代 开发者体验
相关文章