新版Next.js 15中5个令人惊叹的特性

news2024/9/26 3:31:18

前端岗位内推来了

Next.js 15已经到来,一切比以往更好!

从全新的编译器到700倍更快的构建时间,创建具有卓越性能的全栈Web应用从未如此简单。

让我们探索v15的最新特性:

1. create-next-app升级:更清晰的UI,700倍更快的构建

改进的设计

从这样:

c422fdcbe7b00a0c879a67f3a748626f.png

变成这样:

6574edf1cebd50462af5154977cac7b5.png

Webpack → Turbopack

Turbopack:世界上最快的模块打包器(至少他们是这么说的):

  • 比Webpack快700倍

  • 比Vite快10倍

现在在v15中,将其添加到你的Next.js项目比以往任何时候都更容易:

e3019fd1f7f08a51698950e204e51ede.png

2. React编译器,React 19支持,和用户友好的错误提示

React编译器就是一个React编译器(谁能想到呢)。

一个深入理解你的React代码的现代编译器。

带来诸如自动记忆化等优化——在绝大多数情况下消除了对 useMemo 和 useCallback 的需求。

节省时间,防止错误,加快速度。

而且设置非常简单:你只需安装babel-plugin-react-compiler

npm install babel-plugin-react-compiler

然后在next.config.js中添加这个

const nextConfig = {
  experimental: {
    reactCompiler: true,
  },
};

module.exports = nextConfig;
React 19支持

带来了客户端和服务器端Actions等升级。

更好的hydration错误

开发体验意味着很多,错误消息的有用性在其中扮演着重要角色。

Next.js 15设置了更高的标准:现在对可能的错误修复方法提供智能建议。

v15之前:

3212fde409786477660c59b9cc29e3c3.png

现在:

359b2d97fa1db03077f2cc08311b0e5e.png

你知道我过去因这些hydration错误遇到过困难,所以这对我来说肯定会是一个无价之宝。

3. 新的缓存行为

不再自动缓存!

对于所有:

  • fetch() 请求

  • 路由处理程序:GETPOST

  • <Link> 客户端导航。

但如果你仍然想要缓存fetch()

// 'cache' 在 v15 之前默认是 'no-store'
fetch('https://example.com', { cache: 'force-cache' });

然后你可以通过一些next.config.js选项缓存其他内容。

4. 部分预渲染(PPR)

PPR在同一页面中结合了静态和动态渲染。

通过立即加载静态HTML并在同一HTTP请求中流式传输动态部分,大大提高了性能。

import { Suspense } from 'react';
import {
  StaticComponent,
  DynamicComponent,
} from '@app/ui';

export const experimental_ppr = true;

export default function Page() {
  return (
    <>
      <StaticComponent />
      <Suspense fallback={...}>
        <DynamicComponent />
      </Suspense>
    </>
  );
}

你只需要在next.config.js中添加这个:

const nextConfig = {
  experimental: {
    ppr: 'incremental',
  },
};

module.exports = nextConfig;
5.next/after

Next.js 15为你提供了一种清晰的方式来分离每个服务器请求中的必要和非必要任务

  • 必要:身份验证检查,数据库更新等

  • 非必要:日志记录,分析等

import { unstable_after as after } from 'next/server';
import { log } from '@app/utils';

export default function Layout({ children }) {
  // 次要任务
  after(() => {
    log();
  });

  // 主要任务
  // 从数据库中获取(fetch())数据并渲染
  return <>{children}</>;
}

现在就用experimental.after开始使用:

const nextConfig = {
  experimental: {
    after: true,
  },
};

module.exports = nextConfig;

这只是Next.js 15中所有影响深远的新特性中的5个。

现在就用npx create-next-app@rc获取它,开始享受显著改善的构建时间和更优秀的开发者体验。

最后:

CSS技巧与案例详解

vue2与vue3技巧合集

VueUse源码解读

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1971021.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Spring Boot】手撕搜索引擎项目,深度复盘在开发中的重难点和总结(长达两万6千字的干货,系好安全带,要发车了......)

目录 搜索引擎搜索引擎的核心思路 一、解析模块1.1 枚举所有文件1.2 解析每个文件的标题&#xff0c;URL以及正文1.2.1 解析标题1.2.2 解析URL1.2.3 解析正文 1.3 线程池优化代码 二 、创建排序模块2.1 构建正排索引2.2 构建倒排索引2.3 序列化2.4 反序列化 三、搜索模块3.1 引…

CTF web cookie考题

CTF web cookie考题 题目名称&#xff1a;cookie 题目名称&#xff1a;cookie 1.进入服务器界面 &#xff1a; 2.打开 浏览器内 ——>开发者工具 网络 查看 或按F12 3. 根据自己服务器地址 后缀加入\cookie.php 进入查看 4.进入cookie.php文件 点击文件查看 5.找出flag

2023华为OD面试手撕代码经验分享

我们先来看下这个同学的面试经历吧&#xff0c;非常有借鉴的意义。 【22届考研渣渣的od求职之旅&#xff0c;推荐一下两个人&#xff0c;德科hr和牛客的老哥】 "*********"&#xff0c;hr给了机会吧&#xff0c;一开始我都没想到od这边。 还有我关注里面的老哥&#…

postgresql启动故障【已解决】

故障原因 暂时未知&#xff0c;电脑重启后postgresql无法正常运行&#xff0c;尝试重启遇到如下错误 本地计算机 上的 postgresql-x64-12 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。 排查过程 查看系统日志&#xff0c;发现pid已存在【计算机管理——…

sqli-labs-master less1-less6

目录 通关前必看 1、判断是否存在sql注入以及是字符型还是数值型&#xff1a; 2、各种注入方式以及方法 有回显型&#xff1a; 报错注入&#xff08;只有ok和no的提示以及报错提示&#xff09;&#xff1a; 详细思路&#xff0c;后面的题都可以这样去思考 关卡实操 less…

vue2中使用jsx基础

1、基本的模板 <script lang"jsx"> export default {name: demo1,// 数据定义data() {return {info: {age: 18,}}},created() {},methods: {},render() {return (<div><div>我是小明&#xff0c;今年{this.info.age}</div></div>)} }…

逐行重现 GPT-2:第 2 部分 - 硬件优化

Andrej Karpathy 的“让我们重现 GPT-2 (124M)”第 2 部分中的硬件优化 欢迎来到雲闪世界。为了撰写这篇博文&#xff0c;我在 Google Colab 免费提供的 NVIDIA T4 GPU 和 Lambda Labs 的 NVIDIA A100 GPU 40GB SXM4 上都进行了优化。Karpathy 介绍的大多数优化都是针对 A100 或…

MES系统在数字化转型中的核心作用与影响

数字化转型是企业利用数字技术改变其业务模式、运营方式、组织结构、产品服务等方面的过程&#xff0c;旨在提高效率、降低成本、增强竞争力并实现可持续发展。数字化转型涉及多个层面&#xff0c;主要包括以下几个方面&#xff1a; 数字化转型转什么 转战略&#xff1a;由构…

VLC实现视频文件转RTSP流

1.选择本地文件 2.创建流 现在已经开始推流了&#xff1a; 3.播放上面创建的流 访问地址&#xff1a;rtsp://:8554/test111

OJ-0802

题目 分析 要点&#xff1a;在排队的基础上移动学生位置&#xff0c;实现要求的分组&#xff0c;分组的顺序不做要求&#xff0c;求移动学生次数的最小值。 实现方案&#xff1a;考虑Map 参考 解题思路&#xff1a; 1.建立索引字典:将学生目前排队情况转换成索引字典,其中键…

使用Git管理ECAD软件元器件库

在日常工作中&#xff0c;很多工程师习惯维护和使用自己的元器件库&#xff0c;这样可以方便的查找和使用元器件。但是&#xff0c;如果元器件库中的元器件数量较多&#xff0c;且元器件的版本较多&#xff0c;那么维护元器件库就会变得非常困难。还有&#xff0c;企业中的研发…

基于JAVA的进销存管理系统的设计与实现

点击下载源码 基于JAVA的进销存管理系统的设计与实现 摘 要 进入21世纪以来&#xff0c;商业管理中需要处理的数据和信息越来越多。大量的数据和繁杂的数据使得古老的手工处理数据的方式渐渐显得力不从心。甚至有些信息处理的方式在手工处理的模式下是根本无法是实现的&…

ggplot2 添加文字信息,设置黑体、斜体、旋转、对齐

目的&#xff1a;图中添加文字。 1. 每个点都添加文字 效果不好。 保持文字颜色和点一致&#xff0c;就没法斜体。 设置斜体&#xff0c;就没法保持文字颜色。 library(ggplot2) p1ggplot(iris, aes(Sepal.Length, Sepal.Width, colorSpecies))geom_point(size1.5)theme_cl…

HarmonyOS入门

HarmonyOS 系统定义 HarmonyOS 是一款面向万物互联时代的、全新的分布式操作系统。 Harmony提出了基于同一套系统能力、适配多种终端形态的分布式理念&#xff0c;能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设置&#xff0c;提供全场景&#xff08;移动办公、运动…

QCA2066 Linux下5g 6g自适应测试方法

注意事项:如需要重启pc,需要执行rmmod wlan.ko和rmmod wlan_cnss_core_pcie.ko命令,然后重启。测试底板上电过程,需要将底板先插上电源,然后将底板pcie接口插入pc。 5g测试 启动电脑进入红色的标签Advanced options Ubuntu,然后回车 选择Ubuntu,with Linux 4.9.11+的内…

86. UE5 RPG 技能面板实现监听数据

在上一篇文章里&#xff0c;我们创建了技能面板的控制器&#xff0c;接下来&#xff0c;我们将实现通过控制器绑定委托&#xff0c;来更新显示内容。 更新技能面板应用的技能 我们首先更新技能面板上面已经应用的技能&#xff0c;让其和WBP_Overlay上面一样&#xff0c;可以更…

从零开始掌握tcpdump:参数详解

Linux tcpdump命令详解 1. 语法 tcpdump [-adeflnnNOpqStvxX] [-c <数据包数目>] [-dd] [-ddd] [-F <表达文件>] [-i <网络界面>] [-r <数据包文件>] [-s <数据包大小>] [-tt] [-T <数据包类型>] [-vv] [-w <数据包文件>] [输出数…

https执行过程,特点,作用

还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&#xff0c;ech…

免费的短剧机器人,一键获取资源,每日自动更新,自动转存+定时删除!

今天分享一个免费的短剧机器人&#xff0c;配合网盘拉新可实现变现的项目&#xff01;可以轻松实现全自动化&#xff0c;解放双手&#xff01; 具体怎么实现&#xff0c;我们往下看&#xff1a; 我经常说&#xff0c;想赚钱&#xff0c;离不开人性! 短剧为啥火呢&#xff1f;…

深入学习并发编程中的synchronized

第一章:并发编程中的三个问题 可见性 可见性概念 可见性( Visibility ):是指一个线程对共享变量进行修改,另一个先立即得到修改后的最新值。 可见性演示 案例演示:一个线程根据 boolean 类型的标记 flag , while 循环,另一个线程改变这个 flag 变量的值,另 一个线…