随着Node.js的发展,以及V8引擎的优秀性能,现在使用JavaScript进行Web后端开发也具有不错的效果。本文将介绍如何从零开始创建一个Web后端。

前期准备

安装Node.js

官网选择你心仪的版本进行安装即可,安装完成后在命令行窗口输入node -v,若出现版本号,说明安装成功。

修改npm包管理器相关配置

  • 修改包的全局缓存路径和安装路径
  • 配置相关环境变量
  • 配置镜像源

创建项目

新建项目文件夹,在命令行输入如下指令:

1
npm init --y

输入上述指令后,会在项目文件夹创建一个名为package.json的文件,此时再新建名为index.js的脚本文件,src文件夹存储开发源码,test文件夹存储测试代码,static文件夹存储项目静态资源。

安装相关依赖

要在Node.js项目进行后端开发,首先要安装以下依赖,然后启动一个web服务器:

1
2
3
4
5
npm install express
npm install body-parser
npm install express-formidable
npm install cors
npm install --save-dev nodemon

Express是一个Node.js框架,它可以帮助开发人员更快地构建Web应用程序和API。

body-parser是Express的一个中间件,其主要功能是解析HTTP请求体(request body)的数据。

express-formidable是Express的一个中间件它用于处理HTML表单和AJAX请求中的文件上传。

cors是一个Express中间件,它提供了一种简单的方法来启用跨域资源共享(CORS),并为Express应用程序配置CORS选项。

Nodemon是一款非常有用的开发工具,主要用于自动重启Node.js应用程序。当项目源码发生变化时,nodemon会自动检测到并重启您的应用程序,有效提高了开发效率。

安装相关依赖后,在package.json文件中的scripts添加如下dev指令:

1
2
3
4
5
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
...
"dev": "nodemon index.js"
}

完成以上操作后,就可以通过指令npm run dev进行项目测试。

进行开发

创建服务器

在安装相关依赖后,此时就可以在index.js创建一个Web服务器,并且为该服务器注册相关中间件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import express from 'express';
import bodyParser from 'body-parser';
import ExpressFormidable from 'express-formidable';
import Cors from 'cors';

const webServer = express();

// 注册中间件
webServer.use(bodyParser.json());
webServer.use(bodyParser.urlencoded({extended: true}));
webServer.use(ExpressFormidable());
webServer.use(Cors());

// 监听8200端口
webServer.listen(8200, () => {
console.log('the web server start at http://127.0.0.1:8200');
})

至此我们完成了Web服务器的创建。

注册路由

实际业务开发时,一个项目往往有多个模块,这就需要根据不同的路由访问不同的资源。使用Express注册路由非常简单,假设现在为项目添加用户(user)模块的路由,则新建一个js文件,注册模块下各个接口的路由,最后导出路由对象供服务器使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import express from 'express';

const router = express.Router();

router.get('/test', (req, res) => {
// 业务逻辑
res.send({
msg: 'test ok',
data: 'data',
...
})
})

// 导出路由对象
module.exports = router;

index.js中引入上面添加的用户模块,并且在服务器使用该路由模块,为其分配路由/user

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import express from 'express';
import bodyParser from 'body-parser';
import ExpressFormidable from 'express-formidable';
import Cors from 'cors';
import userRouter from './src/api/user/router';

const webServer = express();

// 注册中间件
webServer.use(bodyParser.json());
webServer.use(bodyParser.urlencoded({extended: true}));
webServer.use(ExpressFormidable());
webServer.use(Cors());

// 注册路由
webServer.use('/user',userRouter);

// 监听8200端口
webServer.listen(8200, () => {
console.log('the web server start at http://127.0.0.1:8200');
})

注册其它路由同理,首先要创建新的路由模块,并且导在服务器注册该路由模块,最后编写模块内相关接口。

数据库访问

编写后端项目少不了与数据打交道,因此接下来将介绍如何在Node.js中访问数据库。

mysql

mysql是一款开源的关系型数据库(好用爱用),在项目中引入mysql库:

1
npm install mysql

mysql相关配置如下以及基本操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import mysql from 'mysql';

const mysql_config = {
host: '114.51.41.91', // 服务器IP
user: 'root', // mysql用户名
password: '114514', // mysql用户密码
database: 'database_name', // 连接到的数据库
port: '3306' // mysql服务端口号
}

// 创建mysql连接池
const mysqlPool = mysql.createPool(mysql_config);

// 执行SQL语句
// SQL是待执行的SQL语句,data是一个数组,是SQL中占位符?需要填入的数据,最后是回调函数
mysqlPool.query(SQL, data, (err, result) => {
// 处理结果result/错误err
})

mongoDB

mongoDB是一款非关系型数据库,在项目中引入mongoDB库:

1
npm install mongoose

mongoDB相关配置如下以及基本操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import mongoose from 'mongoose';
// 创建用户的Schema
const UserSchema = new mongoose.Schema({
name: String,
age: Number,
phone: String,
password: String
})

// UserSchema对应数据库的表User
const user = mongoose.model("User", UserSchema);

// 连接数据库
mongoose.connect('mongodb://localhost:27017/oam_backend');

// 对User表执行数据库操作
user.findByID(id).exec();

redis

redis是一款非关系型数据库,在项目中引入redis库:

1
npm install ioredis

mongoDB相关配置如下以及基本操作:

1
2
3
4
5
6
7
8
9
10
11
import Redis from 'ioredis';

const redis_config = {
host: '114.51.41.91', // 服务器IP地址
port: 6379, // redis服务端口号
password: '1919810', // 密码
db: 3, // 连接到的数据库
}

// 新建redis实例
const redis = new Redis(redis_config);