Next.js

Next.js是一個構建於Node.js之上的開源Web開發框架,支援基於React的Web應用程序功能,例如伺服器端渲染和生成靜態網站。React於官方文件內的“推薦的工具鏈”中提及Next.js,建議將其作為“使用Node.js構建伺服器渲染網站”的解決方案。傳統的React應用程式只能在客戶端瀏覽器中渲染內容,Next.js擴充了此功能以包括在伺服器端渲染的應用程式。

Next.js的版權和商標歸Vercel(前身為ZEIT)所有,該公司也維護和主導其開放原始碼專案的開發。

背景
Next.js是一個基于React的框架,它支援一些額外的功能,包括伺服器端渲染和靜態網站生成。React是一组JavaScript庫,傳統上用於構建使用JavaScript在客戶端瀏覽器中渲染的網頁應用程式。然而開發者意識到這種策略存在一些問題,例如無法滿足無法訪問或禁用JavaScript的用戶、潛在的安全問題、明顯延長頁面載入時間以及可能損害網站的整體搜索引擎優化。Next.js是最流行的React框架之一。它是啟動新應用程序時可用的幾個推薦「工具鏈」之一,所有這些都提供了一個抽象層來協助完成常見的任務。Next.js可以在Node.js上运行,而且可以使用npm或其他兼容的工具安装和管理版本。Next.js也可以在其他JavaScript运行时上使用,如Bun和Deno。

Google已向Next.js專案捐款,在2019年貢獻了43個拉取請求(Pull request),協助修剪了未使用的JavaScript、減少了載入時間與增加了改進指標。截至2020年3月,該框架已被許多大型網站使用,包括Netflix、GitHub、Uber、Ticketmaster和星巴克。。

發展歷程
Next.js於2016年10月25日首次在GitHub上作為開放原始碼專案發布。

Next.js 2.0於2017年3月發布,其中包括多項改善,使小型網站開發變得更加容易。還提高了構建效率並提高了熱模塊更換功能的可擴展性。

7.0版於2018年9月發布,改進了錯誤處理並支持React的上下文API以改進動態路由處理。也是第一個升級到webpack 4的版本。

8.0版於2019年2月發布,是第一個提供無伺服器應用程式部署的版本,其中程式碼被拆分為按需運行的匿名函式(Lambda function)。該版本還減少了靜態匯出所需的時間和資源,並提高了預取性能。

9.3版於2020年3月發布,包括各種優化以及全域Sass和CSS模組支持。

於2020年7月27日,Next.js 9.5版發布,增加了包括增量靜態再生(incremental static regeneration, ISR)、重新寫入和重新導向支援在內的新功能。

於2021年6月15日,Next.js第11版發布,其中包括:Webpack 5支援、實時協作編碼功能預覽「Next.js Live」,以及從Create React App自動轉換為Next.js的實驗性功能相容形式「Create React App Migration」。

2021年10月26日,Next.js 12發布,增加了Rust編譯器,使編譯速度更快,支持AVIF,Edge Functions與中介軟體,原生ESM與URL輸入。

2022年10月26日,Vercel 發布 Next.js 13,這次重大更新在beta版本帶來新的路由模式App Router,支援佈局(layouts)、React 伺服器元件(React Server Components)、串流(streaming),以及一套全新的資料擷取方法。此外,Vercel 同步公佈前端開發工具鏈Turbo,其中包含作為Webpack後繼者的Turbopack,以及用於增量建置系統的Turborepo。

2023年5月,Next.js 13.4發布,App Router 轉為穩定版本,開發者可可以在產品環境中使用。

2023年10月,Next.js 14發布,此版本透過Edge Runtime優化了記憶體管理。

2024年10月,Next.js 15發布,此版本引入了基於 Rust 語言、速度更快的打包工具Turbopack,並支援 React 19 和非同步請求 API。

樣式和功能
Next.js支持CSS樣式以及預編譯的SCSS和SASS、CSS-in-JS和StyledJSX。開放原始碼編譯器Babel用於將程式碼轉換和編譯成瀏覽器可用的JavaScript。Webpack,是另一個開放原始碼工具,用於在之後打包模組。所有這些工具都在指令終端機中與NPM一起使用和靜態站點生成(SSG)網站的編譯版本通常會在構建期間構建並以.next文件夾的型式儲存。當用戶提出請求時,作為靜態HTML頁面的預構建版本將被緩存並發送出去。這會使得載入時間非常快速,但它並非適合每個網站,尤其是對於經常更改並利用大量用戶輸入的互動式網站將會變得不適合。

安全性
2025年11月,安全研究員Lachlan Davidson向React團隊回報了一個漏洞,該漏洞允許攻擊者透過React Server Component反序列化協定中的缺陷,進行未經身份驗證的遠端程式碼執行。

12月3日,npm發佈了修正補丁,並公開揭露為CVE-2025-55182(又名為React2Shell),其CVSS評分為滿分10.0。

由於預設的App Router配置設定存在安全隱患,Next.js 15.x和16.x版本也受到此CVE的影響,並被獨立追蹤為CVE-2025-66478。亞馬遜威脅智慧團隊在漏洞公開披露後的幾個小時內,就觀察到多個與中國國家機構有關的威脅組織(Chinese state-nexus threat groups)試圖利用該漏洞進行攻擊。

12月5日,美國網路安全與基礎設施安全局(CISA)將該漏洞加入KEV(Known Exploited Vulnerabilities)目錄中。

12月6日,Vercel發布了npm套件fix-react2shell-next,用於更新為已經安全修正的版本。

外部連結

参考文獻

评论 (0)

  • 还没有评论,来抢沙发吧。