Node.js后端开发 - 基础篇 #12 web 服务器 part 4 用模块化思想组织代码

107 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 ​

 上一篇文章我们介绍了nodejs的web 服务器 part 3 响应HTML页面,详见: Node.js后端开发 - 基础篇 #11 web 服务器 part 3 响应 HTML 页面,这篇文章我们将来介绍一下怎么把我们以前写的代码给重构一下,就是用更好的方式把他们给组织一下,之前我们讲过一个概念叫模块,也就是说用一些exports、require语句把我们的代码变得可读性更强一些、更模块化一些,这样我们写的代码更像一些web框架,

我们也能更好理解一些web框架,它们的代码是怎么组织的。我希望我们以后学习到一些知识点,我们一边写代码也顺便把代码进行一些模块化的重构!下面我们来重构一下上篇文章app.js里面的代码,如下:

var http = require('http');
var fs = require('fs');

//把启动server、响应客户端的代码,放在一个函数里面
function startServer() {
    var onRequest = function (request, response) {
        console.log('Request received');
        response.writeHead(200, { 'Content-Type': 'text/html' });
        var myReadStream = fs.createReadStream(__dirname + '/index.html', 'utf8');
        myReadStream.pipe(response);
    }

    var server = http.createServer(onRequest);

    server.listen(3000, '127.0.0.1');
    console.log('Server started on localhost port 3000');
}

// 暴露startServer函数
//下面的代码,等同于 module.exports.startServer = startServer;
exports.startServer = startServer;

然后我们把app.js文件的名字修改为server.js,然后新建一个app.js文件,这时候的app.js文件里面写入以下代码,如下:

//require导入server.js模块
var server = require('./server');

//调用server.js模块的startServer函数
server.startServer();

这里我们把 server.js 里面的代码当做一个模块,入口文件依然是 app.js 文件!我们启动sever

MacBook-Pro:hello-nodejs luminal$ node app
Server started on localhost port 3000

然后在浏览器中输入:http://localhost:3000/,它的效果和上篇文章代码运行的效果一样,这里就不演示了!

我们以后学习到一些知识点,我们一边写代码也顺便把代码进行一些模块化的重构,这样我们也能更好理解一些框架,它们是怎么来组织一些文件的!一些模块的知识点可参考我前面的博文:Node.js后端开发 - 基础篇 #4 模块