Node+Express快速搭建后台应用框架

1、项目基本框架搭建

1.1、项目初始化

1
复制代码npm init -y

1.2、安装Express框架生产依赖

1
复制代码npm i -S express

1.3、根目录下创建app.js文件作为入口文件,写入入口服务程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
复制代码//引入node框架
const express = require("express");
//创建服务对象
const app = express();
//监听get请求下的 '/'路由
app.get("/", function (req, res) {
res.send("hahah");
});

//开始服务对象的监听端口返回服务对象实例
const server = app.listen(5000, function () {
//通过服务对象实例调用address()获得当前服务程序的IP地址和端口号
const { address, port } = server.address();
console.log("服务已启动请访问http://%s:%s", address, port);
});

1.4、中间件函数(就相当于回调函数包含三个参数,回调时注入)必须放在app监听请求之前

1
2
3
4
5
复制代码function mylogger(req,res,next){
next();//必须调用次函数
}

app.use(mylogger);

1.5、路由

应用如何响应请求的一种规则
规则主要分两部分:
请求方法:get、post……
请求的路径:/、/user、/.*fly$/……

1
2
3
4
5
6
7
复制代码app.get('/', function(req, res) {
res.send('hello node')
})

app.post('/', function(req, res) {
res.send('hello node')
})

1.6、异常处理

通过自定义异常处理中间件处理请求中产生的异常

1
2
3
4
5
6
7
8
9
10
11
复制代码app.get('/', function(req, res) {
throw new Error('something has error...')
})

const errorHandler = function (err, req, res, next) {
console.log('errorHandler...')
res.status(500)
res.send('down...')
}

app.use(errorHandler)

使用时需要注意两点:

第一: 参数一个不能少,否则会视为普通的中间件
第二:异常处理中间件需要在请求之后引用

2、项目框架优化

2.1、自定义路由中间件

  • (1)在根目录下创建router文件夹并创建index.js文件
  • (2)在app.js文件中导入该自定义路由中间件,再通过app.use()使用中间件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
复制代码router/index.js

/* 自定义路由中间件 */

//引入express框架
const express = require("express");
//引入boom依赖快速生成浏览器错误信息
const boom = require("boom");
//导入二级路由
const userRouter = require("./map/user");
// 通过express框架创建路由实例来处理路由监听
const router = express.Router();

//监听get请求
router.get("/", (req, res) => {
res.send("中研在线");
});
//监听到一级路由是/user是使用自定义二级路由userRouter中间件
router.use("/user", userRouter);

//路由匹配是从上到下的,所以当前面所有的路由地址都不匹配时加载请求404错误中间件
router.use((req, res, next) => {
next(boom.notFound("接口不存在"));
});
//定义一个错误处理中间件 向客户端响应json格式的错误数据
router.use((err, req, res, next) => {
//获取错误信息
const msg = (err && err.message) || "系统错误";
//获取错误状态码
const statusCode = (err.output && err.output.statusCode) || 500;
//获取errorMsg
const errorMsg = (err.output && err.output.payload && err.output.payload.error) || err.message;
//返回状态码,并返回json格式错误异常信息
res.status(statusCode).json({
code: -1,
msg,
error: statusCode,
errorMsg,
});
});

module.exports = router;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
复制代码app.js

//引入node框架
const express = require("express");
//引入自定义路由中间件函数
const router = require("./router");
//创建服务对象
const app = express();
//使用路由中间件
app.use("/", router);

//开始服务对象的监听端口返回服务对象实例
const server = app.listen(5000, function () {
//通过服务对象实例调用address()获得当前服务程序的IP地址和端口号
const { address, port } = server.address();
console.log("服务已启动请访问http://%s:%s", address, port);
});

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%