AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

Next.js 13 新的实验性特性,实现 App“动态无限制”

  • 2022-11-23
    北京
  • 本文字数:2008 字

    阅读完需:约 7 分钟

Next.js 13新的实验性特性,实现App“动态无限制”

Next.js大会介绍了Next.js 13,一个 React App 框架的最新版本。Next.js 13 希望通过提供创新的特性开发出“动态无限制”的 App,其中许多特性仍处于 Alpha 或 Beta 阶段。新特性对编译器、路由和渲染基础设施进行了更新,并改进了组件工具包。

 

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 组件不再需要锚标记(即<a>)作为子元素。现在,下面的锚链接 Next.js 代码是有效的:

 

// Next.js 13: `<Link>` always renders `<a>`<Link href="/about">  About</Link>
复制代码

 

@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。

 

此外,对于大多数项目来说,带有esbuildVite已经足够快了,它提供了无与伦比的体验。

 

你还应该知道的是,Vercel 有意希望通过在云端远程缓存构建来赚钱。

 

Next.js 13 还对路由和渲染基础设施进行了重大更改,其中一些直接与 React 核心团队合作,以便更好地利用 React 的Server ComponentSuspense和流。文档中提到:

 

新的路由器支持。

 

1. 布局:在路由之间轻松共享 UI,同时保留状态,避免昂贵的重新渲染。

2. Server Component:将服务器优先作为大多数动态应用程序的默认设置。

3. 流渲染:渲染时在 UI 单元中显示即时加载状态和流。

4. 数据抓取: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贡献指南行为准则

 

原文链接


https://www.infoq.com/news/2022/11/nextjs-13-released/


相关阅读:


前端又开撕了:用 Rust 写的 Turbopack,比 Vite 快 10 倍?


尤雨溪向 React 推荐自己研发的 Vite,网友:用第三方工具没有任何意义

2022-11-23 13:177387

评论

发布
暂无评论
发现更多内容

架构实战营 模块九:设计电商秒杀系统

热猫

密码学进阶(一):浅谈常见的七种加密算法及实现

No Silver Bullet

加密 文本摘要 数字签名 7月月更

数据中台咋就从“小甜甜”变成了“牛夫人”?

雨果

数据中台

DBPack 赋能 python 微服务协调分布式事务

峨嵋闲散人

分布式事务 分库分表 读写分离 seata dbmesh

远程办公如何保持高效协同,实现项目稳定增长 |社区征文

三掌柜

初夏征文 7月月更

面试必答题“聊聊Java中线程的生命周期状态”如何破?

博文视点Broadview

【Python技能树共建】requests-html库初识

梦想橡皮擦

7月月更

兼容10个浏览器HTML头部配置

写程序的小王叔叔

html 浏览器 浏览器插件 7月月更

hive数据导入:文件导入

怀瑾握瑜的嘉与嘉

大数据 hive 7月月更

超90万个K8S实例可被发现暴露在公网上,14%位于中国

SEAL安全

安全

6年技术迭代,阿里全球化出海&合规的挑战和探索

阿里技术

阿里巴巴 最佳实践 方法论 全球化

无需zookeeper安装kafka集群(kakfa3.0版本)

字母哥哥

大数据 kafka 消息队列

投稿开奖丨轻量应用服务器征文活动(5月)奖励公布

阿里云弹性计算

nginx OSS MySQL 数据库 轻量征文

《你的灯亮着吗》开始解决问题前,得先知道“真问题”是什么

图灵教育

手把手带你快速入门Electron

是乃德也是Ned

7月月更

rxjs Observable of 操作符的单步调试分析

汪子熙

typescript 前端开发 angular RXJS 7月月更

Go Web 编程入门:一探 GoConvey 测试库

宇宙之一粟

Go web Go 语言 7月月更

8款最佳实践,保护你的 IaC 安全!

SEAL安全

安全 IaC

CleanMyMac X4.11最新版本号

茶色酒

CleanMyMac X

Ubuntu环境编译OpenJDK11源码

程序员欣宸

Java Openjdk 6月月更

主流实时流处理计算框架Flink初体验

百思不得小赵

大数据 flink 7月月更

2022 · 让我带你Jetpack架构组件从入门到精通 — Lifecycle

编程的平行世界

an'droid android jetpack

让企业数字化砸锅和IT主管背锅的软件供应链安全风险指北

FN0

安全性 沙箱实验 开源软件供应链

架构实战营 毕业总结

热猫

【LeetCode】找树左下角的值Java题解

Albert

LeetCode 7月月更

Fiori 应用通过 Adaptation Project 的增强方式分享

汪子熙

前端开发 SAP Fiori SAP UI5 7月月更

从MLPerf谈起:如何引领AI加速器的下一波浪潮

OneFlow

人工智能 深度学习 加速器

8253A寄存器浅析

乌龟哥哥

6月月更

云原生到底是什么?它会是未来发展的趋势吗?

Albert Edison

7月月更

这样的商城系统全开源免费商用,还要什么自行车!

CRMEB

Next.js 13新的实验性特性,实现App“动态无限制”_大前端_Bruno Couriol_InfoQ精选文章