引言
在现代 web 开发中,大多数应用程序都需要后端服务器的支持。本文将介绍如何使用 Node.js 和 Express 框架来创建一个简单的博客应用程序。
在本文中,我们将会学到以下内容:
- 安装 Node.js 和 Express
- 创建路由和控制器
- 配置数据库
- 实现用户身份验证
- 添加静态文件
另外,我们将使用一些现代 js 语言特性如 ES6 的箭头函数和模板字符串。如果你对这些特性不熟悉,建议先尝试学习一下。
安装 Node.js 和 Express
首先,我们需要安装最新版本的 Node.js。我们可以从 Node.js 的官方网站下载并安装,或使用我们喜欢的包管理器(如 npm 或 Yarn)进行安装。
安装过程大概这样:
- 下载 Node.js 安装包
- 在终端中运行安装程序
- 静静等待直到安装完成
- 验证 Node.js 安装正确
安装 Node.js 后,我们将使用 npm 或 Yarn 安装 Express。执行以下命令:
npm install express
或者
yarn add express
创建路由和控制器
在我们的应用程序中,我们需要定义许多不同的路由来处理用户请求。这些路由将把请求发送到相应的控制器来处理,然后将响应发送回用户。
我们可以在 app.js
文件中定义所有的路由和控制器,但在本文中,我们将利用 Express 的路由策略,并将不同的路由和控制器拆分到单独的文件夹中。
在 routes
文件夹中新建 home.js
和 blog.js
文件。在 home.js
文件中,添加以下内容:
const express = require('express'); const router = express.Router(); router.get('/', (req, res) => { res.render('home', { title: 'Home' }); }); module.exports = router;
这段代码定义了一个名为 home
的路由,为 GET 请求设置了一个简单的处理函数。在这个例子中,我们将渲染一个名为 home
的视图(稍后创建),并且把它的标题设置为 “Home”。
现在,让我们在 blog.js
文件中定义一个路由:
const express = require('express'); const router = express.Router(); router.get('/', (req, res) => { res.render('blog', { title: 'Blog' }); }); module.exports = router;
这段代码定义了一个名为 blog
的路由,为 GET 请求设置了一个处理函数,该函数将渲染一个名为 blog
的视图,并将其标题设置为 “Blog”。
注意,这里我们使用了 router.get
方法来定义路由和处理函数。在这里,我们还可以定义其他类型的路由,如 POST、PUT、DELETE 等等。
配置数据库
通常,我们的应用程序需要持久化数据。在本文中,我们将使用 MongoDB 数据库来存储我们的博客文章。
我们可以使用某个 MongoDB 驱动程序(如 Mongoose)来轻松地连接我们的 Express 应用程序。在此之前,我们需要先安装 MongoDB 服务端和 Mongoose 库。
安装完 MongoDB 后,我们通过以下代码连接数据库:
const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/blog');
现在,我们已经成功连接了本地的 MongoDB 数据库 blog
。
接下来,我们需要定义一个模型来表示我们的博客文章。在 models
目录中,创建 post.js
文件:
-- -------------------- ---- ------- ----- -------- - -------------------- ----- ---------- - --- ----------------- ------ ------- ----- ------- ---------- ----- --- ----- ---- - ---------------------- ------------ -------------- - -----
这段代码定义了一个名为 Post
的模型,它有三个属性:title
、body
和 createdAt
。这个模型将用于存储我们的博客文章。
现在,我们已经成功配置了 MongoDB 数据库和相关的模型。我们可以通过控制器来操作这些模型,如创建、读取、更新或删除文章。
实现用户身份验证
在真实世界的应用程序中,我们需要一种方式来验证用户身份,以便进行授权和身份验证。在本文中,我们将使用 Passport.js 来实现用户身份验证。
Passport.js 是一个使用 Node.js 的快速简单的身份验证中间件,支持 Local、Facebook、Twitter、Google、GitHub、LinkedIn、Dropbox、Azure AD 和 Windows Live 等。
在开始之前,我们需要安装 Passport.js 和相关策略。在终端中执行以下命令:
npm install passport passport-local passport-local-mongoose express-session
接下来,我们需要在我们的应用程序中配置 Passport.js。这里有一些必须的设置:
-- -------------------- ---- ------- ----- -------- - -------------------- ----- ------------- - -------------------------- ----- ------- - --------------------------- ----- ---- - ------------------------- ----------------- ------- ------------------ ------- ------ ------------------ ------ ---- ---------------- ------------------------------------ --------------------------------------------- ------------------------------------------------- ------------------------------- ----------------------------
在这里,我们定义了一个名为 passport
的全局变量,并且使用了 passport-local
策略来验证用户身份。我们还使用了 Express 的会话支持来跟踪用户会话状态。
接下来,我们需要创建一个控制器来处理用户身份验证。在 controllers
目录中,创建 user.js
文件:
-- -------------------- ---- ------- ----- -------- - -------------------- ----- ---- - -------------------------- -------------- - ----- ---- -- - ----- ---- - --- ------ --------- ------------------ ------ --------------- --- ------------------- ------------------ ----- -- - -- ----- - ------------------- ------ -------------------- - ------ -------- --- - ----------------------------------- ---- -- -- - ------------------ --- --- -- ------------- - ------------------------------ - ---------------- ---- ---------------- --------- --- -------------- - ----- ---- -- - ------------- ------------------ --
这个控制器有三个函数:signup
、login
和 logout
。
signup
函数创建一个新的用户对象,并将其注册到 MongoDB 数据库。如果注册失败,将显示错误消息,否则将使用 passport.authenticate
方法进行身份验证。
login
函数使用 passport.authenticate
方法来验证用户身份。如果身份验证成功,用户将被重定向到首页。
logout
函数将删除当前用户的会话状态,并将其重定向到首页。
添加静态文件
最后,我们需要为我们的应用程序添加静态文件支持。在 public
文件夹中,添加样式文件、脚本文件、图像和各种其他静态资源。
我们可以使用 Express 的 express.static
中间件来为我们的应用程序提供静态文件服务。在 app.js
中添加以下代码:
app.use(express.static(path.join(__dirname, 'public')));
这个代码段告诉 Express 在 public
文件夹中查找静态文件。现在,我们的应用程序应该可以正确地提供静态文件了。
总结
通过本文的学习,我们了解了如何使用 Node.js 和 Express 框架来创建一个简单的博客应用程序。我们学习了如何安装 Node.js 和 Express,创建路由和控制器,配置 MongoDB 和 Mongoose 库、用户身份验证以及添加静态文件支持。
这个例子只是一种常见的模式,可以让我们进一步深入研究。希望这篇文章对你有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ce3d62b5eee0b5256224b2