掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
10 月 26 日,Next.js 正式發(fā)布。該版本的主要更新如下:

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),環(huán)江企業(yè)網(wǎng)站建設(shè),環(huán)江品牌網(wǎng)站建設(shè),網(wǎng)站定制,環(huán)江網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,環(huán)江網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
本地服務(wù)器啟動(dòng)速度提高了 53%
通過快速刷新,代碼更新速度提高 94%
可以通過以下命令來立即升級最新版本:
npx create-next-app@latest自 Next.js 13 以來,Next 團(tuán)隊(duì)一直致力于提高 Next.js 中 Pages 和 App Router 的本地開發(fā)性能。
之前,Next 團(tuán)隊(duì)通過重寫 Next.js 的 next dev 和其他部分以實(shí)現(xiàn)這一目標(biāo)。然而,后來改變了方法,采取了更漸進(jìn)的方式。現(xiàn)在,重點(diǎn)是首先支持所有 Next.js 的功能,因此基于 Rust 的編譯器很快就會(huì)穩(wěn)定下來。
Next.js 使用基于 Rust 引擎的 Turbopack,現(xiàn)在已經(jīng)通過了 5000 個(gè) next dev 的集成測試。這些測試涵蓋了過去 7 年中的錯(cuò)誤修復(fù)和重現(xiàn)。
在大型 Next.js 應(yīng)用 vercel.com 上進(jìn)行測試時(shí),可以看到:
該基準(zhǔn)測試是大型應(yīng)用(和大型模塊圖)性能改進(jìn)的實(shí)際結(jié)果?,F(xiàn)在,next dev 的 90% 測試已經(jīng)通過,在使用 next dev --turbo 時(shí),應(yīng)該會(huì)看到更快、更可靠的性能表現(xiàn)。
一旦達(dá)到 100% 的測試通過,將在即將發(fā)布的次要版本中將 Turbopack 移至穩(wěn)定版本。另外,還將繼續(xù)支持使用 webpack 進(jìn)行自定義配置和生態(tài)系統(tǒng)插件。
可以在 areweturboyet.com 上關(guān)注通過測試的百分比。
Next.js 9 引入了 API Routes,這是一種快速構(gòu)建后端端點(diǎn)的方法,可以與前端代碼一起使用。
例如,可以在 api/ 目錄中創(chuàng)建一個(gè)新文件:
import type { NextApiRequest, NextApiResponse } from 'next';
export default async function handler(
req: NextApiRequest,
res: NextApiResponse,
) {
const data = req.body;
const id = await createItem(data);
res.status(200).json({ id });
}然后,在客戶端,可以使用 React 和 onSubmit 等事件處理程序來獲取 API 路由:
import { FormEvent } from 'react';
export default function Page() {
async function onSubmit(event: FormEvent) {
event.preventDefault();
const formData = new FormData(event.currentTarget);
const response = await fetch('/api/submit', {
method: 'POST',
body: formData,
});
// Handle response if necessary
const data = await response.json();
// ...
}
return (
);
} 現(xiàn)在,隨著 Next.js 14 的推出,希望簡化開發(fā)者在編寫數(shù)據(jù)變更時(shí)的體驗(yàn)。此外,還希望在用戶網(wǎng)絡(luò)連接較慢或從低功率設(shè)備提交表單時(shí)改善用戶體驗(yàn)。
如果不想手動(dòng)創(chuàng)建 API Route,那么可以定義一個(gè)函數(shù),在服務(wù)端安全地運(yùn)行,并直接從 React 組件中調(diào)用它。
App Router 構(gòu)建在 React canary 通道上,對于框架 采用新功能來說是穩(wěn)定的。從 v14 開始,Next.js 已升級到最新的 React canary,其中包括穩(wěn)定的服務(wù)器操作。
App Router 是建立在 React canary 通道上的,這個(gè)通道對于框架來采用新功能是穩(wěn)定的。從 v14 開始,Next.js 已經(jīng)升級到了最新的 React canary 版本,其中包含穩(wěn)定的服務(wù)端操作功能。
前面 Pages Router 的例子可以簡化為一個(gè)文件:
export default function Page() {
async function create(formData: FormData) {
'use server';
const id = await createItem(formData);
}
return (
);
}服務(wù)端操作對于之前使用過服務(wù)端中心框架的開發(fā)者來說應(yīng)該會(huì)很熟悉。它是建立在 Web 基礎(chǔ)知識(如表單和 FormData Web API)之上的。
通過表單使用服務(wù)端操作對于漸進(jìn)增強(qiáng)是有幫助的,但并不是必需的。也可以直接將其作為函數(shù)調(diào)用,而無需使用表單。在使用 TypeScript 時(shí),這提供了完整的端到端類型安全性,確??蛻舳撕头?wù)端之間的安全性。
數(shù)據(jù)變更、頁面重新渲染或重定向可以在一次網(wǎng)絡(luò)往返中完成,確保在客戶端上顯示正確的數(shù)據(jù),即使上游提供者的響應(yīng)速度較慢。此外,可以組合和重用不同的操作,包括在同一個(gè)路由中使用多個(gè)不同的操作。
服務(wù)端操作深度集成到整個(gè) App Router 模型中。你可以:
Next.js 中正在開發(fā)的部分預(yù)渲染推出了預(yù)覽版,它是一種針對動(dòng)態(tài)內(nèi)容的編譯器優(yōu)化,可以實(shí)現(xiàn)快速的初始靜態(tài)響應(yīng)。
部分預(yù)渲染建立在對服務(wù)端渲染(SSR)、靜態(tài)站點(diǎn)生成(SSG)和增量靜態(tài)重新驗(yàn)證(ISR)進(jìn)行了十年的研究和開發(fā)的基礎(chǔ)上。
目前存在過多的運(yùn)行時(shí)、配置選項(xiàng)和渲染方法需要考慮。希望在享受靜態(tài)網(wǎng)頁的速度和可靠性的同時(shí),也能支持完全動(dòng)態(tài)、個(gè)性化的響應(yīng)。不過,擁有出色的性能和個(gè)性化體驗(yàn)不應(yīng)以復(fù)雜性為代價(jià)。
面臨的挑戰(zhàn)是創(chuàng)建更好的開發(fā)體驗(yàn),簡化現(xiàn)有模型,而無需引入新的需要學(xué)習(xí)的 API。雖然部分緩存服務(wù)端內(nèi)容的方法已經(jīng)存在,但這些方法仍然需要滿足旨在實(shí)現(xiàn)的開發(fā)者體驗(yàn)和可組合性目標(biāo)。
部分預(yù)渲染不需要學(xué)習(xí)新的 API。
部分預(yù)渲染是由 Suspense 邊界定義的。以下是它的工作原理??紤]以下電子商務(wù)頁面:
export default function Page() {
return (
My Store
}>
}>
);
}啟用部分預(yù)渲染后,該頁面將根據(jù)
然后,在靜態(tài)骨架中,Suspense 的fallback將被動(dòng)態(tài)組件替換,例如讀取 cookie 來確定購物車內(nèi)容,或者根據(jù)用戶顯示橫幅廣告。
當(dāng)發(fā)出請求時(shí),立即提供靜態(tài) HTML 骨架:
My Store
由于
import { cookies } from 'next/headers'
export default function ShoppingCart() {
const cookieStore = cookies()
const session = cookieStore.get('session')
return ...
}為了獲得最細(xì)粒度的靜態(tài)骨架,可能需要添加額外的
部分預(yù)渲染正在積極開發(fā)中,將在即將發(fā)布的次要版本中分享更多更新。
在頁面內(nèi)容從服務(wù)端流式傳輸之前,需要先向?yàn)g覽器發(fā)送關(guān)于視口、顏色方案和主題等重要元數(shù)據(jù)。
確保這些meta標(biāo)簽與初始頁面內(nèi)容一起發(fā)送可以提供流暢的用戶體驗(yàn),防止由于更改主題顏色或視口變化而導(dǎo)致頁面閃爍或布局偏移。
在 Next.js 14 中,將阻塞和非阻塞的元數(shù)據(jù)解耦。只有一小部分元數(shù)據(jù)選項(xiàng)是阻塞的,希望確保非阻塞的元數(shù)據(jù)不會(huì)阻止部分預(yù)渲染頁面提供靜態(tài)骨架。
以下元數(shù)據(jù)選項(xiàng)現(xiàn)已棄用,并將在未來的主要版本中從元數(shù)據(jù)中刪除:
從 Next.js 14 開始,使用新的選項(xiàng) viewport 和 generateViewport 來替換這些選項(xiàng)。所有其他元數(shù)據(jù)選項(xiàng)保持不變。
在 Next.js Learn 上發(fā)布了全新的免費(fèi)課程。本課程教授:

我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流