本文已参与「新人创作礼」活动,一起开启掘金创作之路。
上一篇文章我们介绍了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 模块