Redian新闻
>
为什么说 Next.js 13 是一个颠覆性版本

为什么说 Next.js 13 是一个颠覆性版本

公众号新闻

作者 | Shamim Ahmed
译者 | 张健欣
策划 | 张卫滨

Next.js 是一个基于 React(一个用来构建用户界面的流行库)之上而构建的 JavaScript 框架。这意味着你可以使用 React 来构建应用程序,而 Next.js 提供了更多的工具和功能来使这个过程更简单。

Next.js 的主要优点之一是它支持服务器端渲染。这意味着服务器可以为页面生成 HTML 并将它发送到客户端,而不是在客户端使用 JavaScript 生成 HTML。这可以提升性能和应用程序的 SEO(搜索引擎优化)。

Next.js 还包括一些在构建和部署 Web 应用程序时非常有用的其他功能。例如,它具有自动代码拆分功能,应用程序只会加载当前页面所需的代码,而不是一次性加载所有代码。这可以提升应用程序的性能。Next.js 还有一个内置的开发服务器和用来部署应用程序到生产环境的工具链。

通过上面的介绍,你对 Next.js 应该有了更多了解。现在让我们一起看看 Next.js 13 又带来了哪些新功能。

Next.js 13 有哪些新功能?

Next.js 13 是集成 React 的两个身份(UI 库和框架)的第一次全面尝试。那么,它有哪些新功能?

1. 可选的 App 目录用于基于文件的路由

Next.js 最佳特性之一就是基于文件的路由。它可以使用项目目录结构来指定路由,而不是在诸如 react-router 之类的程序中处理复杂的路由设置。通过在目录页中增加入口点,你可以创建一个新路径。

Next.js 13 通过新目录更新了文件路由。可选的 app 目录引入了新的布局结构以及一些新功能和改进。

由于新的路由机制,目录结构发生了微小的变化。路由中的每个路径都有一个包含 page.js 文件的专用目录,这个 page.js 文件是 Next.js 13 中的内容入口点。

路由上的差异

由于采用了新的结构,我们现在可以在每个路径目录中包含其它文件。例如,page.js 针对一个路由:

  • layout.js — 一个路径及其子路径系统。

  • loading.js — 一个基于 React 的即时加载系统。

基于底层机制和 error.js,如果主组件不能加载,则会显示一个异常组件。

我们现在可以在路径目录中定位源文件,因为每个路径就是它的目录。

2. React 服务器端组件

Next.js 新版本中最令人兴奋的就是对 React 服务器端组件的扩展支持。服务器端组件使我们可以在服务器端运行和渲染 React 组件,从而实现更快的交付、更小的 JavaScript 包以及开销更少的客户端渲染。

此外,根据生成路由所需的数据类型,服务器端组件会在构建时或运行时自动缓存来提高性能。

结合服务器端组件和客户端组件,你可以将服务器端组件用于程序中快速加载、非交互性的部分,将客户端组件用于交互、浏览器 API 和其它功能。

在为 Next.js 应用程序构建客户端组件时,你可以在文件顶部使用’use client’指令将其指定为客户端组件。如果你使用了任何第三方包,则可能需要创建一个客户端包装器。
3. 异步组件和数据获取

此外,Next.js 13 引入了异步组件,这是一种为服务器端渲染的组件收集数据的新方案。当使用异步组件时,我们可以通过 async & await 使用 Promises 来渲染系统。

当从返回 Promise 的外部服务或 API 请求数据时,我们将组件声明为 async 并等待响应:

async func getData() {  const res = await fetch ('https://api.shamim.com/...');  return res.json();}
export default async function About() { const name = await getData(); return '...';}

下面的例子演示了 Next.js 12 从第三方服务获取数据的方法:

export default function About({data}) {  return '...';}
function getServerSideProps(){ // Fetch data from external API const res = await fetch(https://.../data) const data = await res.json()
// Pass data to the page via props return return { props: { data } }}

这种方式简化了 API 请求,并且在新版本中非常直观且易于理解。

4. 流式加载

以前,用户可能需要等待生成完整的页面。现在,服务器会在生成 UI 小片段时直接传送给客户端。这意味着较大的片段不会阻碍较小的片段。当然,到目前为止,该功能只支持 app 目录,而且这一点看起来不会改变。

这项新功能给具有强信号网络连接或快速 Wi-Fi 的人所带来的好处比不上给那些弱信号网络连接的人带来的好处。事实上,它们所带来的好处比你想象的要多得多。更快的站点加载时间将提升用户体验,这点是非常棒的。

5. Turbopack

Next.js 13 版本中引入的最后一个重要变化是一个名为 Turbopack 的新 JavaScript 包,它被称为“Webpack 的继任者”。Webpack 是最常用的 JavaScript 构建工具之一,功能强大且可配置,但有时会非常慢且复杂。

Turbopack 是由 Webpack 的创建者开发,用 Rust 创建,其速度有望比最初的 Webpack 快 700 倍(比更现代的替代品 Vite 快 10 倍)。
其他升级
next/image

Next.js 中的新 Image 组件包括更少的客户端 JavaScript、样式和配置,改进了可访问性。在代码层面的变化,next/legacy/image 导入变成了 next/image,next/future/image 导入变成了 next/image。有一个 codemod 可以用来进行快速迁移。

next/font

你可以将 Google Fonts(或者任何其它自定义字体)与 @next/font 一起使用,无需浏览器提交任何查询。除了其它静态资源外,CSS 和字体文件都是在构建时下载。

next/link

这是一种新颖的字体系统,通过提供自动字体优化、集成自定义字体以及所有这些功能无需使用任何外部网络请求,从而提高了效率和隐私。

结   论

Next.js 13 无疑包含了几个很酷的功能和显著的更新。但是由于它的很多功能给人感觉是未完成的半成品,所以只能算是一个预览测试版本。甚至最新的 React 中一些尖端功能(这些功能被大量使用但仍处于 RFC 阶段)也经常不包括在内。

虽然我不建议在生产环境中使用 Next.js 13,但你上手应该试一试。

原文链接:

https://blog.bitsrc.io/why-next-js-13-is-a-game-changer-2167658d9de2

相关链接:

Next.js 13 新的实验性特性,实现 App“动态无限制”(https://www.infoq.cn/article/sITi66wc3mvcNs3PeRkb )

我们如何使用 Next.js 将 React 加载时间缩短 70%(https://www.infoq.cn/article/9G0lBWi2W58114ggfyge )

前端食堂技术周刊第 57 期:Turbopack、Next.js13、Chrome107、Vite3.2、图解 TLS 1.3(https://xie.infoq.cn/article/777cb637c41ed18a746f575d2 )

Next.js 在 Serverless 中从踩坑到破茧重生 (https://xie.infoq.cn/article/23c0e8d06602d53336408571b )

声明:本文为 InfoQ 翻译,未经许可禁止转载。

点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!

今日好文推荐

OpenAI回应ChatGPT不向所有中国用户开放;字节改节奏,双月OKR改季度;马斯克称今年底卸任推特CEO|Q资讯

背负着整个现代网络,却因“缺钱”放弃开源,core-js 负责人痛诉:“免费开源软件的根基已经崩塌了”

重新构想前端开发!Kotlin 推出新功能:无需同时了解 Kotlin 和 JavaScript

告别SVN,Git成“独苗”:GitHub 在 13 年后宣布淘汰Subversion支持

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
《自然》颠覆性发现!人人都有“第六感”;未来的计算机会在人脑细胞上运行吗?|本周值得读What’s Next for Chinese Sci-Fi马斯克要做一个颠覆性创新:不用稀土造电动车在孩子面前争吵,可能对孩子是件好事 | 这个颠覆认知的研究结果,你能接受吗?被GPT带飞的In-Context Learning为什么起作用?模型在秘密执行梯度下降美股IPO市场回暖!太阳能技术公司Nextracker(NXT.US)上市首日涨近27%活动预告丨NeXTSCENE受邀参与中国虚拟现实与元宇宙产业峰会空间计算论坛法国巴黎,记忆城市中国工程院士徐匡迪:中国颠覆性技术是被专家“投”没的!A Day in a Shanghai Park: See You Next Wednesday【双龙喜相逢】贺春龙12+《最远的你是我最近的爱》斜阳FT.碧蓝天两会专访|全国政协委员、中国科学院院士杨金龙:一个颠覆性科技成果的出现,不止眼前的狂欢还有背后漫长的蛰伏中国工程院士徐匡迪:我们的颠覆性技术是被专家“投”没的!2023年十大颠覆性技术趋势,每个人都必须做好准备清华大学经管学院陈煜波:中国主要城市在颠覆性数字技能发展方面已呈现出一定人才优势日本啊,日本(十二)利休之死日本最近是干啥啥不顺啊,next喜报|全球首例!cell发布首位HIV治愈女性细节、极客基因“新型T细胞药物开发”项目被科技部评为“全国颠覆性技术”2023 十大前沿科技趋势,AIGC 将比元宇宙更具颠覆性|ifanRankNeXT SCENE入驻上海元宇宙主题园区旗下浦软孵化器NeXT SCENE:2023中国虚拟制作行业市场调研成果报告Nature:颠覆性大滑坡,科研还能有实质创新吗?【首发】魅丽纬叶完成数亿元C轮融资,引领微创手术治疗慢性疾病的颠覆性趋势物理学颠覆性突破,常温超导,第四次工业革命的种子?软件的兴起:汽车领域的下一大颠覆性技术,车企能驾驭它吗?佛罗伦萨,乌菲齐、老廊桥、及其建筑师Nature封面:科学颠覆性进步明显「降速」,物理研究下跌100%NeurIPS 2022 | 重振PointNet++雄风!PointNeXt:改进模型训练和缩放策略审视PointNet++《星落凝成糖》7天热度破万:颠覆性人设与轻喜元素的胜利|专访导演朱锐斌彭博社:Next Big Job Cuts行业: Finance and Health Care可怕,一个颠覆性新科技ChatGPT来了!十类人要失业了……数字经济未来趋势|2022 NeXTSCENEx地标马克联合元宇宙发布会大话三国141:衣带诏的根由,居然是一个未出生的婴儿?为什么说刘备是一个可怕的敌人?颠覆性创新直线下降,科学家开始“谨小慎微”了?重磅!高盛最全AI报告来了!白领工作迎来颠覆性变革?哪些行业受益?普京犯了颠覆性错误!摄影欣赏:加拿大风景随拍
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。