译者 | Bruno Couriol
翻译者 |若非山
策画 | 丁晓昀
Next.js 讨论会如是说了 Next.js 13,两个 React App 架构的新一代版。Next.js 13 希望通过提供更多创捷伊特性合作开发出“动态无管制”的 App,其中很多优点仍处于 Alpha 或 Beta 阶段。新优点对C++、路由器和图形基础建设展开了预览,并改良了模块软件包。
Next.js 项目组在前段时间的主轴演说中说明了 Next.js 新一代版另一面的方法论。
Next.js 起初是用于构筑动态服务端图形中文网站的 React 架构。在结构设计 Next.js 时,他们没特别针对白眉林应用领域展开强化,而是考虑协助合作开发项目组构筑繁杂的应用领域程序。但是,动态常常充斥着很多管制。
动态意味著要以高生产成本、仍旧新浪网的基础建设为付出,须要全自动实用性和大量的网络管理。
动态也意味著要同时处理三组运转时 API,在服务端没 JS,而插件端有 Web 标准 API。
想动态,通常只在两个单个的地区,其尾端依赖于遗留下来、动态和 CDN 内存。
他们发布 Next.js 13,让你们能够同时实现无管制的动态。
新版对软件包展开了改良(改良的 Link 模块、捷伊 Image 模块和捷伊 @next/font 库)。Alpha/Beta 版优点提供更多了未来的服务端图形自动预览,正像 Vercel 所构想的那样。
捷伊 Image 模块意在明显改善使用者新体验,采用邻近地区延后读取,减少插件 JavaScript 交货,没了产业布局飘移。在合作开发人员新体验方面,新模块务求精简增设式样和实用性。
改良后的 Link 模块无须须要锚记号(即)作为子原素。现在,上面的锚镜像 Next.js 代码是有效的:
@next/font(在 Beta 版中发布)将自动强化字体(包括自定义字体),并删除外部网络请求,以提高隐私性和性能。文档中提到的细节:
@next/font 包含了内置的自动自托管任意字体文件,你可以在零产业布局飘移的情况下读取网页字体,这要得益于使用了底层的 size-adjust CSS 属性。
Next.js 13 引入了 Turbopack(在 Alpha 版中发布),作为基于 Rust 的 Webpack 替代方案,为合作开发人员带来数量级的速度改良。与之前的 Parcel 一样,Turbopack 可以增量构筑和捆绑源文件。Next.js 项目组宣称:
Turbopack 只打包开发所需的最小资产文件,因此启动速度非常快。两个包含 3000 个模块的插件,Turbopack 启动只须要 1.8 秒,而 Vite 耗时 11.4 秒,Webpack 则须要 16.5 秒。
Turbopack 对 Server Component、TypeScript、JSX、CSS 等都提供更多了开箱即用的支持。
Vite 的译者尤雨溪前段时间对 Vite 和 Next/Turbo 展开了基准测试。他发现,当使用类似的实用性执行基准测试时,二者的速度是相近的。截至本文发布,Vercel 的基准测试方法和结果也已经发布,纠正了一些错误,但这仍然是两个存在争议的话题。
虽然合作开发人员新体验的明显改善得到了很多积极评价,但一位合作开发人员仍然指出了可能存在的缺点和局限性:
因为庞大的 Webpack 插件生态系统,这可能会使现有插件的迁移变得非常困难。Vercel 可能须要依靠社区的贡献合作开发某种插件系统,这可能很困难,因为像我这样的 JavaScript 合作开发人员愚蠢又懒惰,不愿意学习 Rust。
此外,对于大多数项目来说,带有 esbuild 的 Vite 已经足够快了,它提供更多了无与伦比的新体验。
你还应该知道的是,Vercel 有意希望通过在云端远程内存构筑来赚钱。
Next.js 13 还对路由器和图形基础建设展开了重大更改,其中一些直接与 React 核心项目组合作,以便更好地利用 React 的 Server Component、Suspense 和流。文档中提到:
捷伊路由器器支持。
产业布局:在路由器之间轻松共享 UI,同时保留状态,避免昂贵的重新图形。
Server Component:将服务器优先作为大多数动态插件的默认增设。
流图形:图形时在 UI 单元中显示即时读取状态和流。
数据抓取:async 的 Server Component 和扩展的 fetchAPI 支持模块级抓取。
虽然有很多合作开发人员对该版做出了积极的反应,但一位合作开发人员指出:
如何使用 Server Component 相关的规则不直观,也很难理解。我认为这对 React 的负面名声也不会带来什么协助。在同两个代码库中处理插件 JS 和 Node 运转时就很麻烦了,而在旧范式中,至少两端之间只有两个交互点(getServerSideProps/getStaticProps),但现在可以出现在每个模块边界上。
另一名合作开发人员对一些新优点提出了警告:
Next.js 涵盖了 React 项目组正在研究的一些概念性的、还不稳定的 React 优点,比如服务端模块,或者在这些服务端模块中支持 async/await。
因此,Next.js 也包含了 React 的一些未来的概念。但你须要知道这些是不稳定、尚未完成的 API,它们仍在研究和同时实现当中。
当你尝试在 Beta 版的文档中搜索如何使用捷伊 /app 文件夹和构筑 Next.js 应用程序的新方法时,你会发现很多相关优点仍然缺失、未完成、可能发生变更等警告和注释。
Next.js 基于 MIT 开源许可。欢迎合作开发人员为 Next.js GitHub 代码库做出贡献,并遵循 Next.js 贡献指南和行为准则。
声明:本文为InfoQ翻译,未经许可禁止转载。
作为前端人,你是不是也常常感觉已经掌握了技术API,却依然在项目中处处掣肘?主要是你缺乏大厂项目经验和压力。
这儿推荐前阿里前端 Leader,前腾讯 IMWeb 项目组高级前端工程师「杨文坚」老师的新专栏《Vue 3 企业级项目实战课》,在专栏里他会结合十多年大厂项目经历和丰富的技术培训经验,以热门的Vue 3架构为基石,带你从 0 到 1 完成两个企业级的全栈项目。