Next.js 13新的實(shí)驗(yàn)性特性,實(shí)現(xiàn)App“動(dòng)態(tài)無(wú)限制”

作者 | Bruno Couriol
譯者 | 明知山
策劃 | 丁曉昀

Next.js 大會(huì)介紹了 Next.js 13,一個(gè) React App 框架的最新版本驼壶。Next.js 13 希望通過(guò)提供創(chuàng)新的特性開(kāi)發(fā)出“動(dòng)態(tài)無(wú)限制”的 App,其中許多特性仍處于 Alpha 或 Beta 階段喉酌。新特性對(duì)編譯器热凹、路由和渲染基礎(chǔ)設(shè)施進(jìn)行了更新,并改進(jìn)了組件工具包泪电。

Next.js 團(tuán)隊(duì)在最近的主題演講中解釋了 Next.js 最新版本背后的邏輯般妙。

Next.js 最初是用于構(gòu)建動(dòng)態(tài)服務(wù)器端渲染網(wǎng)站的 React 框架。在設(shè)計(jì) Next.js 時(shí)歪架,我們沒(méi)有針對(duì)單頁(yè)應(yīng)用進(jìn)行優(yōu)化股冗,而是考慮幫助開(kāi)發(fā)團(tuán)隊(duì)構(gòu)建復(fù)雜的應(yīng)用程序霹陡。但是和蚪,動(dòng)態(tài)總是伴隨著許多限制止状。

動(dòng)態(tài)意味著要以高成本、始終在線的基礎(chǔ)設(shè)施為代價(jià)攒霹,需要手動(dòng)配置和大量的運(yùn)維怯疤。

動(dòng)態(tài)也意味著要同時(shí)處理兩組運(yùn)行時(shí) API,在服務(wù)器端沒(méi)有 JS催束,而瀏覽器端有 Web 標(biāo)準(zhǔn) API集峦。

想要?jiǎng)討B(tài),通常只在一個(gè)單一的區(qū)域抠刺,其伸縮性取決于遺留塔淤、靜態(tài)和 CDN 緩存。

我們發(fā)布 Next.js 13速妖,讓你們能夠?qū)崿F(xiàn)無(wú)限制的動(dòng)態(tài)高蜂。

新版本對(duì)工具包進(jìn)行了改進(jìn)(改進(jìn)的 Link 組件、新的 Image 組件和新的 @next/font 庫(kù))罕容。Alpha/Beta 版特性提供了未來(lái)的服務(wù)器端渲染預(yù)覽备恤,正如 Vercel 所設(shè)想的那樣。

新的 Image 組件旨在改善用戶體驗(yàn)锦秒,采用本地延遲加載露泊,減少客戶端 JavaScript 交付,沒(méi)有了布局漂移旅择。在開(kāi)發(fā)者體驗(yàn)方面惭笑,新組件力求簡(jiǎn)化設(shè)置樣式和配置。

改進(jìn)后的 Link 組件不再需要錨標(biāo)記(即)作為子元素∑鲎螅現(xiàn)在脖咐,下面的錨鏈接 Next.js 代碼是有效的:

// Next.js 13: <Link> always renders <a>
<Link href="/about">
About
</Link>
@next/font(在 Beta 版中發(fā)布)將自動(dòng)優(yōu)化字體(包括自定義字體),并刪除外部網(wǎng)絡(luò)請(qǐng)求汇歹,以提高隱私性和性能屁擅。文檔中提到的細(xì)節(jié):

@next/font 包含了內(nèi)置的自動(dòng)自托管任意字體文件,你可以在零布局漂移的情況下加載網(wǎng)頁(yè)字體产弹,這要得益于使用了底層的 size-adjust CSS 屬性派歌。
Next.js 13 引入了 Turbopack(在 Alpha 版中發(fā)布),作為基于 Rust 的 Webpack 替代方案痰哨,為開(kāi)發(fā)人員帶來(lái)數(shù)量級(jí)的速度改進(jìn)胶果。與之前的 Parcel 一樣,Turbopack 可以增量構(gòu)建和捆綁源文件斤斧。Next.js 團(tuán)隊(duì)宣稱:

Turbopack 只打包開(kāi)發(fā)所需的最小資產(chǎn)文件早抠,因此啟動(dòng)速度非常快撬讽。一個(gè)包含 3000 個(gè)模塊的應(yīng)用程序蕊连,Turbopack 啟動(dòng)只需要 1.8 秒悬垃,而 Vite 耗時(shí) 11.4 秒,Webpack 則需要 16.5 秒甘苍。

Turbopack 對(duì) Server Component尝蠕、TypeScript、JSX载庭、CSS 等都提供了開(kāi)箱即用的支持看彼。

Vite 的作者尤雨溪最近對(duì) Vite 和 Next/Turbo 進(jìn)行了基準(zhǔn)測(cè)試。他發(fā)現(xiàn)囚聚,當(dāng)使用類似的配置執(zhí)行基準(zhǔn)測(cè)試時(shí)靖榕,二者的速度是相近的。截至本文發(fā)布顽铸,Vercel 的基準(zhǔn)測(cè)試方法和結(jié)果也已經(jīng)發(fā)布序矩,糾正了一些錯(cuò)誤,但這仍然是一個(gè)存在爭(zhēng)議的話題跋破。

雖然開(kāi)發(fā)者體驗(yàn)的改善得到了許多積極評(píng)價(jià)簸淀,但一位開(kāi)發(fā)者仍然指出了可能存在的缺點(diǎn)和局限性:

因?yàn)辇嫶蟮?Webpack 插件生態(tài)系統(tǒng),這可能會(huì)使現(xiàn)有應(yīng)用程序的遷移變得非常困難毒返。Vercel 可能需要依靠社區(qū)的貢獻(xiàn)開(kāi)發(fā)某種插件系統(tǒng)租幕,這可能很困難,因?yàn)橄裎疫@樣的 JavaScript 開(kāi)發(fā)人員愚蠢又懶惰拧簸,不愿意學(xué)習(xí) Rust劲绪。

此外,對(duì)于大多數(shù)項(xiàng)目來(lái)說(shuō)盆赤,帶有 esbuild 的 Vite 已經(jīng)足夠快了贾富,它提供了無(wú)與倫比的體驗(yàn)。

你還應(yīng)該知道的是牺六,Vercel 有意希望通過(guò)在云端遠(yuǎn)程緩存構(gòu)建來(lái)賺錢(qián)颤枪。

Next.js 13 還對(duì)路由和渲染基礎(chǔ)設(shè)施進(jìn)行了重大更改,其中一些直接與 React 核心團(tuán)隊(duì)合作淑际,以便更好地利用 React 的 Server Component畏纲、Suspense 和流。文檔中提到:

新的路由器支持春缕。

布局:在路由之間輕松共享 UI盗胀,同時(shí)保留狀態(tài),避免昂貴的重新渲染锄贼。

Server Component:將服務(wù)器優(yōu)先作為大多數(shù)動(dòng)態(tài)應(yīng)用程序的默認(rèn)設(shè)置票灰。

流渲染:渲染時(shí)在 UI 單元中顯示即時(shí)加載狀態(tài)和流。

數(shù)據(jù)抓取:async 的 Server Component 和擴(kuò)展的 fetchAPI 支持組件級(jí)抓取屑迂。

要了解更多細(xì)節(jié)强品,可以查看發(fā)布說(shuō)明。

雖然有很多開(kāi)發(fā)者對(duì)該版本做出了積極的反應(yīng)屈糊,但一位開(kāi)發(fā)者指出:

如何使用 Server Component 相關(guān)的規(guī)則不直觀,也很難理解琼了。我認(rèn)為這對(duì) React 的負(fù)面名聲也不會(huì)帶來(lái)什么幫助逻锐。在同一個(gè)代碼庫(kù)中處理客戶端 JS 和 Node 運(yùn)行時(shí)就很麻煩了,而在舊范式中雕薪,至少兩端之間只有一個(gè)交互點(diǎn)(getServerSideProps/getStaticProps)昧诱,但現(xiàn)在可以出現(xiàn)在每個(gè)組件邊界上。
另一名開(kāi)發(fā)者對(duì)一些新特性提出了警告:

Next.js 涵蓋了 React 團(tuán)隊(duì)正在研究的一些實(shí)驗(yàn)性的所袁、還不穩(wěn)定的 React 特性盏档,比如服務(wù)器端組件,或者在這些服務(wù)器端組件中支持 async/await燥爷。

因此蜈亩,Next.js 也包含了 React 的一些未來(lái)的概念。但你需要知道這些是不穩(wěn)定前翎、尚未完成的 API稚配,它們?nèi)栽谘芯亢蛯?shí)現(xiàn)當(dāng)中。

當(dāng)你嘗試在 Beta 版的文檔中搜索如何使用新的 /app 文件夾和構(gòu)建 Next.js 應(yīng)用程序的新方法時(shí)港华,你會(huì)發(fā)現(xiàn)許多相關(guān)特性仍然缺失道川、未完成、可能發(fā)生變更等警告和注釋立宜。

Next.js 基于 MIT 開(kāi)源許可冒萄。歡迎開(kāi)發(fā)者為 Next.js GitHub 代碼庫(kù)做出貢獻(xiàn),并遵循 Next.js 貢獻(xiàn)指南和行為準(zhǔn)則橙数。

原文鏈接:https://www.infoq.com/news/2022/11/nextjs-13-released/
聲明:本文為InfoQ翻譯尊流,未經(jīng)許可禁止轉(zhuǎn)載。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末灯帮,一起剝皮案震驚了整個(gè)濱河市奠旺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌施流,老刑警劉巖响疚,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異瞪醋,居然都是意外死亡忿晕,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)银受,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)践盼,“玉大人鸦采,你說(shuō)我怎么就攤上這事」净茫” “怎么了渔伯?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)肄程。 經(jīng)常有香客問(wèn)我锣吼,道長(zhǎng),這世上最難降的妖魔是什么蓝厌? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任玄叠,我火速辦了婚禮,結(jié)果婚禮上拓提,老公的妹妹穿的比我還像新娘读恃。我一直安慰自己,他們只是感情好代态,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布寺惫。 她就那樣靜靜地躺著,像睡著了一般蹦疑。 火紅的嫁衣襯著肌膚如雪肌蜻。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天必尼,我揣著相機(jī)與錄音蒋搜,去河邊找鬼。 笑死判莉,一個(gè)胖子當(dāng)著我的面吹牛豆挽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播券盅,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼帮哈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了锰镀?” 一聲冷哼從身側(cè)響起娘侍,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎泳炉,沒(méi)想到半個(gè)月后憾筏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡花鹅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年氧腰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡古拴,死狀恐怖箩帚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情黄痪,我是刑警寧澤紧帕,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站桅打,受9級(jí)特大地震影響是嗜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜油额,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望刻帚。 院中可真熱鬧潦嘶,春花似錦、人聲如沸崇众。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)顷歌。三九已至锰蓬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間眯漩,已是汗流浹背芹扭。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赦抖,地道東北人舱卡。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像队萤,于是被迫代替她去往敵國(guó)和親轮锥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容