使用 Node.js 和 Express 创建一个简单的博客应用程序

阅读时长 8 分钟读完

引言

在现代 web 开发中,大多数应用程序都需要后端服务器的支持。本文将介绍如何使用 Node.js 和 Express 框架来创建一个简单的博客应用程序。

在本文中,我们将会学到以下内容:

  • 安装 Node.js 和 Express
  • 创建路由和控制器
  • 配置数据库
  • 实现用户身份验证
  • 添加静态文件

另外,我们将使用一些现代 js 语言特性如 ES6 的箭头函数和模板字符串。如果你对这些特性不熟悉,建议先尝试学习一下。

安装 Node.js 和 Express

首先,我们需要安装最新版本的 Node.js。我们可以从 Node.js 的官方网站下载并安装,或使用我们喜欢的包管理器(如 npm 或 Yarn)进行安装。

安装过程大概这样:

  1. 下载 Node.js 安装包
  2. 在终端中运行安装程序
  3. 静静等待直到安装完成
  4. 验证 Node.js 安装正确

安装 Node.js 后,我们将使用 npm 或 Yarn 安装 Express。执行以下命令:

或者

创建路由和控制器

在我们的应用程序中,我们需要定义许多不同的路由来处理用户请求。这些路由将把请求发送到相应的控制器来处理,然后将响应发送回用户。

我们可以在 app.js 文件中定义所有的路由和控制器,但在本文中,我们将利用 Express 的路由策略,并将不同的路由和控制器拆分到单独的文件夹中。

routes 文件夹中新建 home.jsblog.js 文件。在 home.js 文件中,添加以下内容:

这段代码定义了一个名为 home 的路由,为 GET 请求设置了一个简单的处理函数。在这个例子中,我们将渲染一个名为 home 的视图(稍后创建),并且把它的标题设置为 “Home”。

现在,让我们在 blog.js 文件中定义一个路由:

这段代码定义了一个名为 blog 的路由,为 GET 请求设置了一个处理函数,该函数将渲染一个名为 blog 的视图,并将其标题设置为 “Blog”。

注意,这里我们使用了 router.get 方法来定义路由和处理函数。在这里,我们还可以定义其他类型的路由,如 POST、PUT、DELETE 等等。

配置数据库

通常,我们的应用程序需要持久化数据。在本文中,我们将使用 MongoDB 数据库来存储我们的博客文章。

我们可以使用某个 MongoDB 驱动程序(如 Mongoose)来轻松地连接我们的 Express 应用程序。在此之前,我们需要先安装 MongoDB 服务端和 Mongoose 库。

安装完 MongoDB 后,我们通过以下代码连接数据库:

现在,我们已经成功连接了本地的 MongoDB 数据库 blog

接下来,我们需要定义一个模型来表示我们的博客文章。在 models 目录中,创建 post.js 文件:

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

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

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

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

这段代码定义了一个名为 Post 的模型,它有三个属性:titlebodycreatedAt。这个模型将用于存储我们的博客文章。

现在,我们已经成功配置了 MongoDB 数据库和相关的模型。我们可以通过控制器来操作这些模型,如创建、读取、更新或删除文章。

实现用户身份验证

在真实世界的应用程序中,我们需要一种方式来验证用户身份,以便进行授权和身份验证。在本文中,我们将使用 Passport.js 来实现用户身份验证。

Passport.js 是一个使用 Node.js 的快速简单的身份验证中间件,支持 Local、Facebook、Twitter、Google、GitHub、LinkedIn、Dropbox、Azure AD 和 Windows Live 等。

在开始之前,我们需要安装 Passport.js 和相关策略。在终端中执行以下命令:

接下来,我们需要在我们的应用程序中配置 Passport.js。这里有一些必须的设置:

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

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

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

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

在这里,我们定义了一个名为 passport 的全局变量,并且使用了 passport-local 策略来验证用户身份。我们还使用了 Express 的会话支持来跟踪用户会话状态。

接下来,我们需要创建一个控制器来处理用户身份验证。在 controllers 目录中,创建 user.js 文件:

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

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

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

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

这个控制器有三个函数:signuploginlogout

signup 函数创建一个新的用户对象,并将其注册到 MongoDB 数据库。如果注册失败,将显示错误消息,否则将使用 passport.authenticate 方法进行身份验证。

login 函数使用 passport.authenticate 方法来验证用户身份。如果身份验证成功,用户将被重定向到首页。

logout 函数将删除当前用户的会话状态,并将其重定向到首页。

添加静态文件

最后,我们需要为我们的应用程序添加静态文件支持。在 public 文件夹中,添加样式文件、脚本文件、图像和各种其他静态资源。

我们可以使用 Express 的 express.static 中间件来为我们的应用程序提供静态文件服务。在 app.js 中添加以下代码:

这个代码段告诉 Express 在 public 文件夹中查找静态文件。现在,我们的应用程序应该可以正确地提供静态文件了。

总结

通过本文的学习,我们了解了如何使用 Node.js 和 Express 框架来创建一个简单的博客应用程序。我们学习了如何安装 Node.js 和 Express,创建路由和控制器,配置 MongoDB 和 Mongoose 库、用户身份验证以及添加静态文件支持。

这个例子只是一种常见的模式,可以让我们进一步深入研究。希望这篇文章对你有所帮助。

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

纠错
反馈