使用 Express.js 和 React 创建单页面应用

阅读时长 7 分钟读完

在 Web 开发中,单页面应用(SPAs)已经变得越来越流行,因为它们可以提供更好的用户体验,并且在实现上也更加简单。Express.js 是一个流行的 Node.js Web 应用程序框架,而 React 是一个用于构建用户界面的 JavaScript 库。使用这两个工具,我们可以创建一个简单的单页面应用,支持路由和状态管理。

准备工作

首先,我们需要安装 Node.js 和 npm 。然后,使用以下命令安装最新版本的 Express.js:

接下来,我们需要创建一个新的项目目录,并在其中创建两个子目录,一个用于 Express.js 服务器,另一个用于 React 应用程序代码和资源。

我们还需要安装一些 React 相关的依赖项,包括 React、React-DOM 和 React-Router-DOM。运行以下命令安装它们:

创建 Express.js 服务器

接下来,我们将创建一个简单的 Express.js 服务器,用于向客户端提供静态文件和处理应用程序 API 的请求。

在 server 目录中创建一个文件名为 server.js 的文件。我们将使用 express.static 中间件来提供客户端代码和资源,因此需要指定客户端代码目录。

-- -------------------- ---- -------
----- ------- - -------------------
----- ---- - ----------------

----- --- - ----------
----- ---- - ---------------- -- -----

----- ---------- - -------------------- ----- --------- ---------

------------------------------------

---------------------- ----- ---- -- -
  ---------------
---

---------------- -- -- -
  ------------------- -- --------- -- ---- ----------
---

上面的代码启动 Express.js 服务器,使用 express.static 中间件来提供 clientPath 目录下的静态文件,同时响应 /api/health 路径的请求。如果一切设置正确,这个服务器应该能在浏览器中访问。

创建 React 应用程序

React 应用程序代码将在 client 目录中编写。下面是一个简单的示例,它将创建一个包含两个页面的应用程序:主页和关于页面。

首先,我们需要在 client 目录中运行以下命令来创建 React 应用程序的基本结构:

该命令会生成一个名为 myapp 的目录,其中包含一个预配置的 React 应用程序。

接着,我们需要安装 Redux 和 React-Redux。运行以下命令安装它们:

现在,我们来更改和添加下面的文件和目录:

  1. src/App.js
-- -------------------- ---- -------
------ ----- ---- --------
------ - ------- ----- - ---- -------------------
------ - -------- - ---- -------------------
------ - --------- - ---- --------------------

------ -------- ----- -
  ------ -
    --------
      ------ ----- -------- -------------------- --
      ------ ----- ------------- --------------------- --
    ---------
  --
-

这里的 App 组件定义了应用程序的基本路由。它使用 SwitchRoute 组件来定义两个路由:主页和关于页面,分别渲染 HomePageAboutPage 组件。

  1. src/pages/HomePage.js
-- -------------------- ---- -------
------ ----- ---- --------

------ -------- ---------- -
  ------ -
    -----
      -------- ---------
      ---------- -- --- ---- ---------
    ------
  --
-

这个组件只是一个简单的静态页面,它用于展示主页的内容。

  1. src/pages/AboutPage.js
-- -------------------- ---- -------
------ ----- ---- --------

------ -------- ----------- -
  ------ -
    -----
      --------- ---------
      ---------- -- --- ----- ---------
    ------
  --
-

这个组件也是一个简单的静态页面,它用于展示关于页面的内容。

  1. src/store.js
-- -------------------- ---- -------
------ - ----------- - ---- --------

----- ------------ - ---

-------- ------------- - ------------- ------- -
  ------ ------------- -
    --------
      ------ ------
  -
-

------ ----- ----- - ---------------------

上面定义了 Redux store 的代码。它只是简单地创建了一个名为 store 的全局单例 Store 实例。更复杂的示例代码会涉及到如果在不同环境下创建 store。

  1. src/index.js
-- -------------------- ---- -------
------ ----- ---- --------
------ -------- ---- ------------
------ - ------------- - ---- -------------------
------ - -------- - ---- --------------
------ - --- - ---- --------
------ - ----- - ---- ----------

----------------
  ---------------
    --------- --------------
      ---- --
    -----------
  -----------------
  -------------------------------
--

这里的 index.js 文件将应用程序渲染到页面上,并使用 BrowserRouterProvider 组件来提供应用程序的路由和状态数据。BrowserRouter 组件用于定义应用程序路由配置,而 Provider 组件用于在应用程序中提供 Redux store。

在项目根目录中运行以下命令构建静态文件:

上面的命令会生成一个名为 build 的目录,其中包含 React 应用程序的所有静态文件。这些文件将由 Express.js 服务器使用。

最后,在 server.js 文件中添加以下代码:

这里的 * 表示 Express.js 服务器将处理应用程序中所有的路径,并将 clientPath/index.html 文件发送到客户端。

现在,我们已经完成了使用 Express.js 和 React 创建单页面应用程序的步骤。只需要在控制台运行以下命令,然后在浏览器中打开 http://localhost:3001,即可查看应用程序的主页:

总结

在本文中,我们学习了如何使用 Express.js 和 React 创建单页面应用程序。我们使用了一个简单的示例来展示如何在 Express.js 服务器中提供静态文件和响应应用程序 API 请求。我们还学习了如何使用 React 和 React-Router-DOM 构建一个双页面应用程序,并用 Redux 管理应用程序的状态。这个示例代码可以用作一个起点,用于在更大的应用程序中使用。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64c5e57695c405902ee3d2a2

纠错
反馈