使用 MVC 软件设计模式创建 Node 后端
在本教程中,您将学习如何使用模型-视图-控制器 (MVC) 软件设计模式创建 Node 后端。此设计模式使您能够将用户界面划分为三个不同的元素。业务逻辑被分离,以便数据、用户界面和用户输入不会混杂在一起。由于不同层级解耦,这使得架构更加简洁,从而可以更快速、更轻松地进行更改。
然而,这里需要注意的是,如今这种软件设计模式中的视图部分已不再像几年前那么重要。这是因为我们现在有了像 React、Vue、Angular 和 Svelte 这样的前端框架来构建应用程序的前端。尽管如此,了解这些概念仍然很有用,因为当后端开发人员构建用于返回某种数据的 REST 和 GraphQL API 时,模型和控制器仍然会被使用。这些数据通常用于 API 中,并使用 fetch 或 Axios API 进行检索。
先决条件
确保已安装以下工具和包
设计模式
模型
模型是此设计模式的主要组成部分。它负责处理结构内部的所有数据。所有数据、业务逻辑和原则都将在这里定义。
看法
本质上,视图就是用户界面。这是应用程序中用户能够直观看到的部分。所以,基本上就是设计好的前端。在 React、Vue、Angular 和 Svelte 等前端框架出现之前,后端开发人员使用的是 EJS、PUG 和 Handlebars 等模板语言。
控制器
控制器可以被视为应用程序的大脑。它接收用户请求的任何输入,然后将其转换为模型和视图可以解释的命令。
设置项目
在桌面或目录中创建一个名为 my-app 的文件夹,然后使用 __cd 命令进入该文件夹。同时在代码编辑器中打开该文件夹。确保您位于my-app文件夹中,然后在终端应用中运行以下命令。
mkdir backend
cd backend
npm init -y
npm i express nodemon ejs
mkdir controllers models public routes src
mkdir src/pages
touch index.js
这将为我们的项目创建基本设置。现在让我们创建一个简单的 Express 服务器。将下面的代码复制并粘贴到index.js
文件中。
const express = require('express');
const app = express();
app.get('/', (req, res) => res.send('Home Route'));
const port = process.env.PORT || 5000;
app.listen(port, () => console.log(`Server running on port ${port}, http://localhost:${port}`));
现在将这些运行脚本添加到package.json
文件中。
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js"
},
在您的终端应用中,运行以下任一运行代码,即可在 Web 浏览器中查看应用的运行情况。第一个运行代码使用 Node,这意味着如果您想查看更改,需要重启服务器。第二个运行代码使用 Nodemon,它支持热加载,这意味着您只需重新加载 Web 浏览器即可查看新的更改。
npm run start
npm run dev
创建 MVC 控制器
现在该创建一些控制器了。创建两个文件,一个放在controllersadmin.js
文件夹下,另一个放在routes文件夹下。接下来,创建一个文件,放在models文件夹下。现在,创建一个文件,放在src/pages文件夹下。将以下代码添加到该文件中。AnimeData.json
index.ejs
index.ejs
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Home Route</title>
</head>
<body>
<h1>Home Route</h1>
</body>
</html>
将下面的代码放入AnimeData.json
文件中。
[
{
"id": "1",
"type": "Anime",
"name": "Boku no Hero Academia"
},
{
"id": "2",
"type": "Anime",
"name": "Jujutsu Kaisen"
},
{
"id": "3",
"type": "Anime",
"name": "Shingeki no Kyojin"
}
]
将以下代码添加到控制器admin.js
文件夹内的文件中。
const AnimeData = require('../models/AnimeData.json');
exports.getIndex = (req, res) => {
res.render('index');
};
exports.getAnime = (req, res) => {
res.json(AnimeData);
};
接下来将下面的代码添加到routesadmin.js
文件夹内的文件中。
const express = require('express');
const adminController = require('../controllers/admin');
const router = express.Router();
router.get('/', adminController.getIndex);
router.get('/anime', adminController.getAnime);
module.exports = router;
最后使用下面的代码更新index.js
根文件夹中的文件。
const express = require('express');
const path = require('path');
const adminRoute = require('./routes/admin');
const app = express();
// EJS template engine setup
app.set('view engine', 'ejs');
app.set('views', './src/pages');
// Setting up the directory on the server for CSS, JavaScript and media files
app.use('/static', express.static(path.join(__dirname + '/public')));
// Configuring the server to work with form submissions and json files
app.use(express.urlencoded({ extended: false }));
app.use(express.json());
// Connecting all of the routes
app.use('/', adminRoute);
const port = process.env.PORT || 5000;
app.listen(port, () => console.log(`Server running on port ${port}, http://localhost:${port}`));
您需要重新加载页面或重启服务器。现在,如果您访问主路由http://localhost:5000,它应该会加载该index.ejs
文件。如果您访问http://localhost:5000/anime,您应该会在浏览器中看到返回的 JSON 文件中的数据。
将 CSS 和 JavaScript 文件连接到前端
最后一步是将 CSS 样式表和 JavaScript 文件连接到该文件。在publicindex.ejs
文件夹中创建两个文件夹。一个名为css,另一个名为js。现在创建一个文件,并将其放入css文件夹中,并写入以下代码。styles.css
body {
background: #bada55;
}
接下来创建一个文件并将其放入jsscripts.js
文件夹中,其中包含以下代码。
console.log('Hello World');
最后使用下面的代码更新index.ejs
文件,该文件现在包含 CSS 和 JavaScript 文件的链接。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Home Route</title>
<link rel="stylesheet" href="http://localhost:5000/static/css/styles.css" />
</head>
<body>
<h1>Home Route</h1>
<script src="http://localhost:5000/static/js/scripts.js"></script>
</body>
</html>
刷新浏览器或重启服务器。如果返回主页,应该会看到绿色背景;如果返回浏览器控制台,应该会看到代码Hello World。以上就是使用 MVC 软件设计模式创建 Node 后端服务器的基础知识。如果打算将后端连接到 React 之类的框架,则不需要src文件夹。您可以使用models文件夹以 json 格式返回数据。此外,您还可以在models文件夹中编写用于将后端连接到 mongodb、postgresql 和 HarperDB 等数据库的编程逻辑。
最后的想法
我真心希望您喜欢这篇文章并从中有所收获。作为一名内容创作者和技术作家,我热衷于分享我的知识,帮助他人实现目标。让我们通过社交媒体建立联系吧!您可以在Linktree上找到我的所有社交媒体个人资料和博客。
和平✌️
文章来源:https://dev.to/andrewbaisden/creating-a-node-back-end-using-the-mvc-software-design-pattern-5d82