Node.js后端开发 - 进阶篇 #10 express框架之封装handler.js模块

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/YuDBL/article/details/102606791

目录

一、前言

二、封装 handler.js 业务模块

步骤1:写业务模块 handler.js 

步骤2:路由模块 router.js 调用

步骤3:其他代码贴上

主模块app.js

配置模块 config.js

三、最终效果


一、前言

上一篇文章我们讲了相对安全的express路由模块的封装以及挂载路由的一些思路分析总结,详细可查看博文:Node.js后端开发 - 进阶篇 #9 express框架之路由模块的封装2(相对安全)这篇文章我们将介绍如何封装 handler.js 业务模块

二、封装 handler.js 业务模块

步骤1:写业务模块 handler.js 

上篇文章我们讲到路由模块的封装,但我们路由模块 router.js 文件只负责路由判断,不要写具体的业务处理代码。我们再新建一个 handler.js 来处理业务 


//业务模块

//暴露函数,并且需要传入req、res参数,
//才能处理相应的业务,向用户响应
module.exports.index = function (req, res) {
    res.send('这个是 handler.index 方法中的代码');
};

步骤2:路由模块 router.js 调用

写好上面的代码以后,我们需要在路由模块 router.js 里面进行调用,我们这样调用就行

router.get('/', function (req, res) {
    handler.index(req, res);
});

它有一种更简便的写法,可以这样写

router.get('/', handler.index);

router.js 的具体代码如下:


//路由模块:主要负责路由判断

//1. 创建一个 router 对象(router 对象既是一个对象,也是一个函数)
var express = require('express');
var router = express.Router();

//加载业务模块
var handler = require('./handler.js');

//2. 通过 router 对象设置(挂载)路由
// router.get('/', function (req, res) {
//     handler.index(req, res);
// });

// 理解的时候需要注意,不需要传req、res参数
// 因为 handler.index = function (req, res) { };
// 所以可以写成 handler.index
router.get('/', handler.index);
router.get('/index', handler.index);

//3. 返回 router 对象
module.exports = router;


步骤3:其他代码贴上

主模块app.js


// app.js 模块职责:负责启动服务

//1. 加载 express 模块
var express = require('express');
//加载 config.js 模块
var config = require('./config.js');
//加载路由模块
var router = require('./router.js');

//2. 创建 app 对象
var app = express();

//3. 启动路由
// 设置 app 和 router 相关联
// 这个 router,它既是一个对象也是一个函数
// 这个函数,它也是一个中间件
//app.use('/', router);
app.use(router);//与上面的等价

//4. 启动服务
app.listen(config.port, function () {
    console.log('http://localhost:' + config.port);
});

配置模块 config.js


// 配置模块: 主要职责是负责保存项目中的配置信息

module.exports = {
    port : 3000
};

三、最终效果

启动运行程序,然后我们在谷歌浏览器中输入地址:http://localhost:3000  或  http://localhost:3000/index

猜你喜欢

转载自blog.csdn.net/YuDBL/article/details/102606791