写点什么

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:177257

评论

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

从0到1搭建权限管理系统系列三 .net8 JWT创建Token并使用

不在线第一只蜗牛

Java .net

低代码开发与中台赋能的思考应用

快乐非自愿限量之名

低代码

云栖实录 | 阿里云 OpenLake 解决方案重磅发布:多模态数据统一纳管、引擎平权联合计算、数据共享统一读写

阿里云大数据AI技术

人工智能 大数据 阿里云 云栖大会 OpenLake

基础的点云转换

芯动大师

点云转换

解锁新型旅游方式, 当代人的出游体验究竟多丝滑

最新动态

Rainbond 助力城建智控,从传统开发到敏捷开发转型

北京好雨科技有限公司

云原生 k8s rainbond 企业号9月PK榜

python中的小坑

SkyFire

Python 浅拷贝

使用通义灵码,参与开源项目全程纪实

阿里云云效

阿里云 云原生 通义灵码

IoTDB 论文入选三大数据库顶会:ICDE、SIGMOD、VLDB 收录自研成果!

Apache IoTDB

DNS解析常见问题:什么是DNS泛解析?如何设置泛解析?

国科云

云栖3天,云原生+ AI 多场联动,新产品、新体验、新探索

阿里巴巴云原生

阿里云 云原生

数据飞轮:驱动企业持续增长的新引擎

松子(李博源)

数据分析 增长 #大模型

第68期 | GPTSecurity周报

云起无垠

函数计算 FC:首发 GPU 极速模式,更弹性、更降本

阿里巴巴云原生

阿里云 云原生 函数计算

期盼已久!通义灵码 AI 程序员开启邀测,全流程开发仅用几分钟

阿里巴巴云原生

阿里云 AI 云原生

期盼已久!通义灵码 AI 程序员开启邀测,全流程开发仅用几分钟

阿里云云效

阿里云 云原生 通义灵码

淘宝商品详情接口多线程调用,数据分析行业的效率魔法

tbapi

淘宝API接口 淘宝商品详情接口 淘宝商品数据采集 淘宝商品数据采集接口

RTE大会报名丨 重塑语音交互:音频技术和 Voice AI,RTE2024 技术专场第一弹!

声网

望繁信科技入选中国信通院“铸基计划”,流程智能引领企业数字化变革

望繁信科技

数字化转型 流程挖掘 铸基计划 流程资产 流程智能

降本 60%!小熊油耗使用阿里云 SAE 更加稳定可靠

阿里巴巴云原生

阿里云 云原生

重磅!阿里云可观测产品家族全新升级,AI +数据双驱动,打造全栈可观测体系

阿里巴巴云原生

阿里云 云原生 可观测

2024 天池云原生编程挑战赛决赛名单出炉,冠军来自中山大学、昆仑数智战队

阿里巴巴云原生

阿里云 云原生

实时邮政快递查询:用 Python 轻松跟踪包裹动向

幂简集成

API 快递

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