Next.js 12 重大发布
这两天,Next.js 12 版本发布,是迄今为止最大的一个版本,看了之后又很多让人激动的新特性。
Rust 编译器的支持
对JS生态圈,又是一颗重磅炸弹,标志着非JS语言对JS生态圈的进一步入侵。
Next.js 12用的是 SWC,之前招聘了SWC的作者DongYoon Kang,这次终于用在生产环境了。现在很多项目,比如vite 用的 esbuild。 不可阻挡的是,以后越来越多的工作会由其他语言来承担。js工具链上的语言会越来越丰富。像babeljs,webpack等会逐渐示弱。
除了 SWC作者,发现Next.js还招聘了 另外一个著名编译工具parcel的核心开发者之一Maia Teegarden。
用了SWC 后,官方给出的结论是 提高了3倍的刷新速度和5倍的构建速度
在转化js和ts代码方面,swc比babel快17倍,在压缩方面比Terser快7倍。
为了兼容babel转换,还特意用Rust写了一个新的Css Parser。
Babel可以用JS写自己的插件,如果今后用Rust,碰到定制需求怎么处理,还有存量的Babel插件如何解决,这是摆在我们面前的一个问题。
React 18 支持
现在 React 18 还没有正式发布,但是Next.js已经支持,非常与时俱进,可以在实验模式打开。
当前就可以用 Suspense, Server Components等诸多特性
ES模块和URL imports支持
这个特性也让人喜出望外,浏览器原生支持ES 模块,可以大大的减少模块依赖解析的时间,很多工具比如vite和snowpack就是基于此开发的。
除了模块解析,浏览器还支持直接从远程载入js,比如
import confetti from 'https://cdn.skypack.dev/canvas-confetti'复制代码
就不需要在本地安装了。
如果再进一步,配合import maps,本地依赖node_modules几乎为0,这一块rails7走在了前面。
现在 ES 模块原生支持+http2 + cdn,可以解决让人头疼的node_modules体积超大问题,以后构建这步就可以跳过,大大节省了时间,当然这需要很多努力。
图片 AVIF 支持
这是种新的图片格式,2019年才正式提出,比webp的体积都小20%。
Next.js可以根据浏览器嗅探,自动选择用AVIF或Webp。
按需打包
分析依赖,只打需要的包,大大减少了体积。
可以看到这些举措的进步是非常巨大的,完全有理由去试试这个框架
作者:章伟东
链接:https://juejin.cn/post/7024337212158246948