」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何將 Next.js 應用程式轉換為 React.js

如何將 Next.js 應用程式轉換為 React.js

發佈於2024-11-08
瀏覽:318

How to Convert a Next.js Application to React.js

如果您使用 Next.js 建立了一個 Web 應用程序,但現在需要將其轉換為純 React.js 應用程序,那麼您並不孤單。無論是出於簡單性、特定專案需求還是對客戶端渲染的偏好,只要有正確的指導,從 Next.js 轉換到 React 都可以很簡單。在本文中,我將引導您完成 將 Next.js 應用程式轉換為 React.js 的步驟,確保平穩過渡,同時保持應用程式的核心功能。

注意: 如果您希望將 React.js 應用程式轉換為 Next.js,請查看我的另一篇關於如何將 React.js 轉換為 Next.js 的文章。

為什麼要將 Next.js 轉換為 React.js?

Next.js 是一個出色的框架,它提供伺服器端渲染 (SSR)、靜態網站產生 (SSG) 以及許多其他開箱即用的功能。但是,這些功能對於較小的專案來說可能有點過分,或者如果您喜歡使用 React.js 進行客戶端渲染 (CSR),則這些功能可能是不必要的。轉換為 React.js 可以簡化您的建置流程,減少伺服器依賴性,並讓您更好地控制應用程式的架構。

了解差異

在深入了解轉換過程之前,有必要了解 Next.js 和 React.js 之間的主要區別:

  • 伺服器端渲染與客戶端渲染: Next.js 支援 SSR 和 SSG,而 React.js 主要用於 CSR。
  • 路由: Next.js 有一個內建的基於檔案的路由系統。在 React.js 中,您需要使用像 React Router 這樣的函式庫。
  • API 路由: Next.js 讓您在同一專案中建立 API 路由。在 React.js 中,您通常會分離前端和後端。

將 Next.js 轉換為 React.js 的步驟

讓我們開始了解如何將 Next.js 應用程式轉換為 React.js 的逐步指南。

1. 設定一個新的 React.js 應用程式

首先,使用 Create React App (CRA) 或 Vite 等工具建立一個新的 React.js 專案。

使用 Create React App:

npx create-react-app my-react-app
cd my-react-app

使用Vite:

npm init vite@latest my-react-app --template react
cd my-react-app
npm install

2. 轉移依賴

將依賴項和 devDependency 從 Next.js 專案的 package.json 複製到新的 React.js 專案的 package.json。運行npm install或yarn install來安裝它們。

3. 遷移元件和頁面

將 Next.js 元件和頁面目錄的內容複製到 React.js 專案的 src 目錄中。由於 Next.js 使用頁面目錄進行路由,因此您需要調整此結構。

4. 使用React Router實現路由

Next.js 依照頁面目錄自動處理路由。在 React.js 中,您需要手動設定路由。

安裝 React Router:

npm install react-router-dom

在 src/App.js 中設定路由:

import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'
import Home from './Home'
import About from './About'
// Import other components as needed

function App() {
  return (
    } />
        } />
        {/* Add other routes */}
      
  )
}

export default App

5. 調整資料取得方式

在 Next.js 中,資料取得是使用 getServerSideProps、getStaticProps 或 getInitialProps 完成的。在 React.js 中,您需要在元件內處理資料獲取,通常使用 useEffect 和 useState。

例子:

import { useState, useEffect } from 'react'

function Home() {
  const [data, setData] = useState([])

  useEffect(() => {
    fetch('/api/data') // Update the API endpoint as needed
      .then((response) => response.json())
      .then((data) => setData(data))
  }, [])

  return 
{/* Render your data */}
} export default Home

6. 處理API路由

如果您的 Next.js 應用程式使用pages/api目錄中的API路由,您需要將它們遷移到單獨的後端服務或調整您的前端以從外部API取得。

選項:

  • 建立單獨的後端:使用 Node.js、Express 或任何後端框架來設定 API 端點。
  • 使用外部 API:如果可能,調整您的前端以直接使用外部 API。

7. 更新環境變數

Next.js 使用以 NEXT_PUBLIC_ 為前綴的環境變數作為客戶端變數。在 React.js 中,在專案的根目錄下建立一個 .env 文件,並使用 REACT_APP_ 作為變數前綴。

例子:

REACT_APP_API_URL=https://api.example.com

使用 process.env.REACT_APP_API_URL 在程式碼中存取它們。

8. 刪除 Next.js 特定配置

刪除任何 Next.js 特定配置,例如 next.config.js。另外,刪除不再需要的任何特定於 Next.js 的匯入或套件。

9. 測試您的應用程式

運行您的 React.js 應用程式以確保一切按預期工作。

npm start

檢查每條路線和功能以驗證轉換是否成功。

結論

將 Next.js 應用程式轉換為 React.js 涉及設定一個新的 React 專案並遷移元件、調整路由以及以不同方式處理資料擷取。雖然 Next.js 提供了許多強大的功能,但純 React.js 應用程式提供了簡單性和靈活性,特別是對於不需要伺服器端渲染的專案。

按照本指南了解如何將 Next.js 轉換為 React.js,您應該可以實現無縫轉換。

感謝您的閱讀!如果您有興趣反其道而行之,請查看我關於如何將 React.js 應用程式轉換為 Next.js 的文章。有關新項目或文章的更多更新,請在 Twitter 上關注我:@jake_prins。

版本聲明 本文轉載於:https://dev.to/jakeprins/how-to-convert-a-nextjs-application-to-reactjs-858?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何依照 WHERE IN 子句順序對 SQL 結果進行排序?
    如何依照 WHERE IN 子句順序對 SQL 結果進行排序?
    根據WHERE IN 子句順序對結果進行排序在SQL 中使用WHERE IN 子句時,結果通常按列的自然順序排序排序(通常是升序)。但是,在某些情況下,您可能會想要按照 IN 子句中指定的順序傳回行。 解決方案:依欄位排序進行排序行依照 WHERE IN 子句中指定的順序排列,可使用 ORDER B...
    程式設計 發佈於2024-11-08
  • 了解如何建立 API 支援的 Zelda BOTW 怪物畫廊 Web 元件
    了解如何建立 API 支援的 Zelda BOTW 怪物畫廊 Web 元件
    模数教程回来了! 大家好!暑假结束后,我带着 Modulo 教程回来了。我正在制作更多教程 - 请继续关注。也就是说,如果您对我的下一个主题有任何具体想法,请务必在评论中告诉我! 我的上一篇教程是关于 API 驱动的 Pokémon Dance Party 组件的超级快速且有趣的“...
    程式設計 發佈於2024-11-08
  • 使用 JAX-RS 和 Jersey 建立 RESTful API
    使用 JAX-RS 和 Jersey 建立 RESTful API
    RESTful API 已成為現代應用程式開發的重要組成部分。它們提供了一種靈活且可擴展的方式來與服務和資料互動。在這篇文章中,我們將探討如何使用 JAX-RS 和 Jersey 建立 RESTful API。 什麼是 JAX-RS? JAX-RS(用於 RESTful 服務的 Java API...
    程式設計 發佈於2024-11-08
  • 為什麼在 Windows 上從命令列存取 PHP 腳本時出現錯誤?
    為什麼在 Windows 上從命令列存取 PHP 腳本時出現錯誤?
    在Windows 上使用命令列存取PHP:常見錯誤故障排除嘗試在Windows 上透過命令列存取PHP 腳本時,您可能會遇到如所提供的螢幕截圖中所示的錯誤。此故障源自於 Windows 路徑變數中的遺漏。要修正這種情況,請按照下列步驟操作:方法1:將PHP 新增至路徑變數右鍵單擊“我的電腦”圖示. ...
    程式設計 發佈於2024-11-08
  • 如何解決Python檔案處理中的「FileNotFoundError:沒有這樣的檔案或目錄」?
    如何解決Python檔案處理中的「FileNotFoundError:沒有這樣的檔案或目錄」?
    調試“FileNotFoundError:沒有這樣的文件或目錄”嘗試在Python中讀取文件時,遇到“FileNotFoundError”。此錯誤表示腳本無法找到指定的檔案。您的程式碼要求使用者輸入檔案名稱“test.rtf”,但錯誤表示找不到該檔案。 故障排除:檢查檔案路徑: 確保檔案名稱正確且存...
    程式設計 發佈於2024-11-08
  • 使用 Stimulus 建立可調整大小的導航
    使用 Stimulus 建立可調整大小的導航
    本文最初發佈於 Rails Designer——Rails 應用程式的 UI 元件庫,使用 ViewComponent 構建,使用 Tailwind CSS 設計並使用 Hotwire 增強。 如果您的應用程式有側邊欄導航(這在大多數螢幕足夠寬的情況下很常見),那麼調整其大小可能是一個很好的添加功...
    程式設計 發佈於2024-11-08
  • PHP中如何有效率地檢查變數空值並處理未初始化的變數?
    PHP中如何有效率地檢查變數空值並處理未初始化的變數?
    檢查變數為空:最佳化和簡化在 PHP 中,在處理變數之前檢查變數是否為空至關重要。範例程式碼檢查 $user_id、$user_name 和 $user_logged 是否為空,但有更有效的方法可以實現此目的。 使用身分運算子(===)若要確定變數是否真正為NULL(而非空字串或零),請使用恆等運算...
    程式設計 發佈於2024-11-08
  • 如何消除Python清單中的重複字典?
    如何消除Python清單中的重複字典?
    從字典列表中刪除重複項資料集合中的重複可能會妨礙高效的資料處理。在Python程式設計中,字典列表通常用於儲存表格資料。但是,在某些情況下,您可能需要從此類清單中刪除重複的字典。 考慮以下字典列表:[ {'id': 1, 'name': 'john', 'age': 34}, {'i...
    程式設計 發佈於2024-11-08
  • PL/SQL 中的批量收集
    PL/SQL 中的批量收集
    當然!以下是一個簡單的範例來示範 BULK COLLECT 在 PL/SQL 中的使用。 什麼是大量收集? BULK COLLECT 是一種用於在單一操作中將 SQL 查詢中的多行取得到 PL/SQL 集合中的方法。這減少了 SQL 和 PL/SQL 引擎之間的上下文切換,使流程更加高效,尤其是...
    程式設計 發佈於2024-11-08
  • 提高 Spring Boot 應用程式的效能 - 第二部分
    提高 Spring Boot 應用程式的效能 - 第二部分
    在本文的第一部分中,我们学习了如何提高应用程序的性能,将 Tomcat 替换为 Undertow,即高性能 Web 服务器,除了启用和配置数据压缩之外,还可以减少通过网络传输的 HTTP 响应的大小。 现在,我们将讨论如何在持久化部分提高Spring Boot应用程序的性能,但首先我们需要了解什么是...
    程式設計 發佈於2024-11-08
  • C 程式設計學習路線圖
    C 程式設計學習路線圖
    学习 C 编程是一项令人兴奋且具有挑战性的工作,因为它是一种多功能且功能强大的语言,构成了众多现代编程语言的基础。 让我们看看住在小镇的充满好奇心的年轻学生Alex是如何决定踏上学习C编程之旅的。 C 程序员的旅程 Alex,一个充满好奇心的年轻学生,踏上了学习 C 编程的旅程。他...
    程式設計 發佈於2024-11-08
  • 用 JavaScript 解釋數學概念
    用 JavaScript 解釋數學概念
    學習數學符號可能會讓人感到害怕。 所以我創建了常見數學符號的 JS 程式碼範例清單: https://math4devs.com 歡迎 PR! https://github.com/joshnuss/math4devs.com
    程式設計 發佈於2024-11-08
  • 如何在 PHP 中將 Array_column 與物件陣列一起使用?
    如何在 PHP 中將 Array_column 與物件陣列一起使用?
    Array_column 和物件陣列在某些場景下有必要將 array_column 與物件陣列一起使用。但是,直接將 array_column 應用於物件陣列可能不會產生預期結果,因為其功能主要是為簡單陣列設計的。 要克服此限制,請考慮以下解決方案:PHP 5 用戶對於PHP 5 用戶,array_...
    程式設計 發佈於2024-11-08
  • 如何在Python中高效率地轉置矩陣?
    如何在Python中高效率地轉置矩陣?
    轉置矩陣 Python 中的轉置轉置運算反轉矩陣的行和列。在程式設計中處理矩陣時,理解這個概念至關重要。在 Python 中,您可以使用各種方法執行矩陣轉置,每種方法都有不同的方法和效率。 使用 Zip 與 Asterisk 轉置zip(*) 是一種方便且易於使用的方法。轉置矩陣的簡單方法。它將矩陣...
    程式設計 發佈於2024-11-08
  • 從靜態到動態:建立響應式單頁網站
    從靜態到動態:建立響應式單頁網站
    從靜態到動態:建立響應式單頁網站 嘿,代碼愛好者們!今天,我想分享我最近為一家名為「最後一站咖啡館」的虛構咖啡館建立響應式單頁網站的經驗。該專案是結合 HTML、CSS 和 JavaScript 來創建流暢、用戶友好的體驗的絕佳練習。讓我們深入探討一些可以應用於您自己的專案的關鍵要點! https...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3