為開發人員了解 Next.js 與 React
已發表: 2022-12-13React 是最流行的用戶界面構建庫之一,而 Next.js 是最流行的用戶界面構建框架之一。
Next.js 是使用 React 構建的。 所以,他們之間有很多相似之處。 很明顯會混淆這兩者。
讓我們深入研究這兩者,看看它們在澄清混淆方面有何不同。 讓我們從反應開始。
反應:入門

React 是一個開源庫,用於使用 JavaScript 構建用戶界面。 React 用於創建單頁 Web 應用程序。 單頁應用程序是什麼意思? 該應用程序將有一個 HTML 文檔並根據需要更新它。
創建單頁 Web 應用程序現在正處於最高峰。 我們可以說 React 是目前該領域中最流行的庫。 一點也不誇張。
許多 React 包可用,使開發人員的生活更輕鬆。 在構建 Web 應用程序時,我們可以使用 React 創建任何類型的 Web 應用程序。
React 是由 Facebook 開發的。 現在,任何人都可以為它做出貢獻。 它由 Facebook 維護。
讓我們檢查一下 React 的一些特性。
虛擬DOM
Web 應用程序現在將更新它的某些部分而不會影響其他部分,例如在獲取數據時顯示加載器並使用獲取的數據更新 Web 應用程序的那部分。 如果我們更專業地談論它,它會更新瀏覽器中的 DOM。
如果沒有像 React 這樣的庫,我們會使用 vanilla JavaScript 來完成它,這是低效的,因為 DOM 操作非常昂貴。 React 引入了虛擬 DOM的概念來處理這個問題。
虛擬 DOM 是真實 DOM 的副本。 當有任何更新時,React 首先在虛擬 DOM 中更新它們,並將它們與真實 DOM 進行比較。 只有當有任何變化和變化的部分時,React 才會更新真實的 DOM。 因此,它減少了對真實 DOM 的操作,顯著減少了更新時間。
如果沒有像 React 這樣的庫,網絡會非常慢。
成分
組件是 React 中用戶界面的構建塊。 我們可以說 React 中的一切都是組件。 這些組件可以在整個 React 應用程序中重用。
假設我們有一個具有一些樣式集的按鈕。 在 React 中,我們可以創建一個組件,負責根據我們傳遞給它的屬性呈現帶有樣式的按鈕。 我們可以使用道具根據需要自定義該按鈕組件。 這就是我們如何在 React 應用程序中重用組件。
組件可以幫助將我們的應用程序組織成小的 UI 塊。 我們可以根據您的需要安排它們。
建興興業

我們可以在稱為 JSX 的 JS 中編寫 HTML。 它看起來類似於 HTML,但它是 JSX。 我們可以將 JavaScript 與 JSX 一起使用,並訪問所有 HTML 屬性。
JSX 用於定義 UI 的結構。 每個組件都將返回 JSX,它將在 DOM 中呈現。
單向數據流
組件之間的數據流動對於使它們更小是必要的。 如果我們在組件之間沒有數據流,那麼我們必須將所有內容都容納在一個組件中。
React 遵循從父到子的單向數據流。 我們可以在 React 中將父組件的數據傳遞給子組件。 子組件不能直接在父組件中改變狀態。 它可以通過傳遞回調來完成。
單向數據流使調試變得簡單。 組件看起來更簡單,因為所有組件都不必維護狀態。
如果你懂 JavaScript,學習 React 就非常簡單。 React 文檔足以開始使用它。
Next.js:入門
Next.js 是一個用於構建 Web 應用程序的 React 框架。 它建立在 React 之上。 它是由 Vercel 創建的。 因此,React 的所有功能都將在其中可用。 Next.js 有什麼特別之處? 讓我們看看除了 React 組件之外的一些特性。

預渲染
Next.js 提前渲染每個頁面。 預呈現它會在瀏覽器中使用靜態 HTML 快速加載頁面。 稍後它加載該頁面所需的 JavaScript。 它提高了頁面的性能和 SEO。
其中有兩種類型的預渲染。 一種是靜態站點生成(SSG),另一種是服務器端渲染(SSR)。 SSG 在構建時生成 HTML 並在其他請求中重複使用。
SSR 在每個請求上生成 HTML,使其比 SSG 慢一點。 Next.js 建議在強制使用 SSR 之前使用 SSG。
Next.js 還會預加載當前查看頁面中有鏈接的頁面(使用 Link 組件)。 這個很酷的功能使頁面在四處移動時加載速度非常快。
路由
Next.js 帶有一個內置的路由系統。 它支持基於目錄的路由系統。 我們必須在某個目錄中創建頁面以創建路由。 在 React 中,我們必須使用一個包來實現這一點。
蜜蜂
我們可以像 express 一樣使用 Next.js 創建 API。 它開啟了使用 Next.js 創建全棧應用程序的新可能性。 它可能不如專用的服務器端框架高效,但它可以完成工作。
其他特點
還有其他功能,如圖像優化、內置 CSS 支持、每個頁面的元標記(為了更好的 SEO)等。 到目前為止,我們看到的所有功能都是 Next.js 在 React 功能之上的附加功能。
Next.js 自發布以來就廣受歡迎。 如果您熟悉 React,那麼學習 Next.js 非常有用。 但並不是必須先學會反應。 你可以先從任何人開始。 JavaScript 對他們兩者都是強制性的。
到目前為止,我們已經看到了 React 和 Next.js 的不同特性。 讓我們比較一下它們。

React 與 Next.js

React 和 Next.js 之間有很多相似之處。 您已經知道它們之間有很多相似之處的原因。 它們的核心概念是相同的。 讓我們並排比較它們的一些東西。
代碼
讓我們看一個簡單的 Hello World! react 和 next.js 中的組件。
反應
function App() { return ( <div className="app"> Hello World! </div> ); } export default App;
接下來.js
export default function Home() { return ( <div className="app"> Hello World! </div> ) }
如果您看到代碼,它們之間沒有區別。
文件夾結構
React 是一個沒有任何特定文件夾結構的庫。 我們可以根據我們的偏好和用例來安排文件夾和文件。
Next.js 也沒有要遵循的嚴格文件夾結構。 但是,我們只需要在pages
文件夾中為路由創建頁面。 這是我們在 next.js 中的唯一限制。 我們可以像 React 一樣安排所有其他文件夾和文件。
表現
與 React 應用程序相比,Next.js 應用程序要快一些。 Next.js 使用預渲染技術來製作它們。 但這並不意味著我們不能使 React 應用程序變得更快。 我們也可以用 React 實現同樣的事情。 我們需要為此付出額外的努力。
打字稿
TypeScript 在大型應用程序中扮演著重要角色。 如果沒有 TypeScript,大多數開發人員會為調試應用程序而發瘋。 不要擔心 React 和 Next.js 都支持 TypeScript。
其他特點
React 和 Next.js 都由創建者大力維護。 與其他前端庫和框架相比,它們的社區都非常大。 如果我們在使用 React 和 Next.js 開發應用程序時遇到任何困難,我們很有可能會在互聯網上找到解決方案。
它們的文檔非常適合入門。 我們還在等什麼? 前往 React 和 Next.js 文檔開始使用它們。
概括
特徵 | 反應 | 接下來.js |
代碼 | 了解 JavaScript 足以編寫 React 應用程序。 | 代碼類似於 React,因為它構建在 React 之上。 |
文件夾結構 | 不要對文件夾結構強加嚴格的指導方針。 | 它確實強加了需要遵循的文件夾結構的一部分(頁面路由)。 |
打字稿 | 它支持打字稿。 | 它還支持打字稿。 |
服務器端渲染 | 沒有對服務器端渲染的內置支持。 | 是否內置了對服務器端渲染的預取支持(SSG 和 SSR) |
表現 | 與 Next.js 相比有點慢 | 與 React 相比有點快。 |
社區與維護 | 由 Facebook 維護良好,並有一個大型開源社區來支持它。 | Vercel 在維護方面也做得很好。 此外,它還有開源社區支持。 |
文檔與學習 | 有據可查,即使對於初學者也是如此。 如果您了解 JavaScript,則可以隨時開始使用它。 | 有很好的文檔,如果你了解 React 概念,學習會更快。 |
選擇哪一個?
好吧,沒有人能回答這個問題。 這取決於不同的事情,比如項目的類型、它做什麼、它的目的等等。 我們可以通過了解它們的所有功能及其要求來得出結論。
我們可以快速得出結論的一件事是 SEO。 如果您的項目需要大量 SEO,最好使用 Next.js。
我們考慮了所有場景中的不同因素以得出結論。 如果我們不能得出結論,那麼最好選擇 React。 而且我們總是可以在早期切換到另一個,因為代碼遷移不需要太多時間。 你知道它不需要太多時間的原因。
兩者都有一個良好的社區。 您在使用 React 和 Next.js 時遇到的幾乎所有問題都可以找到解決方案,因為它們廣泛用於前端領域。 您會發現很多用於構建 Web 應用程序的包。 我們可以在 React 和 Next.js 中使用相同的包。
決定總是很難做出。 但不要害怕做出決定。
結論
我們可以說 Next.js 是 React 的超集。 Next.js 的創建具有更多功能以及使用它的 React 功能。 所以比較它們並不理想。 儘管如此,我們還是做到了。 無論如何,現在你對 React 和 Next.js 有了一個頂層的想法。
如您所見,除了 Next.js 的額外功能外,它們之間沒有太多區別,這是顯而易見的。 今天就到此為止。 讓我們用一個小建議來結束這個。
如果你要學習前端框架,我們建議你先從 React 開始。 React 概念將使 Next.js 學習小菜一碟。
您還可以探索一些學習 ReactJS 的最佳資源。