在实际工做中,编写稍大一点的程序时通常都会将代码模块化。在NodeJS中,通常将代码合理拆分到不一样的JS文件中,每个文件就是一个模块,而文件路径就是模块名。html
在编写每一个模块时,都有require
、exports
、module
三个预先定义好的变量可供使用。node
内置模块
Node.js有一组内置模块,无需进一步安装便可使用。例如assert、buffer、child_process、cluster等。 固然除了内置模块,咱们也能够经过 NPM 命令安装第三方模块。浏览器
模块的使用
在使用一个模块以前,咱们须要使用require()指令来载入模块,以下所示:服务器
var http = require('模块名');
示例:
例如使用应用程序访问HTTP模块,并建立服务器:模块化
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'}); res.end('侠课岛'); }).listen(8888);
启动文件后,在浏览器中访问http://127.0.0.1:8888/ ,页面会显示"侠课岛"三个字(这里我就不截图了,你们能够本身试一下)。函数
如何建立模块
除了可使用Node.js中的内置模块,或者使用第三方模块。咱们还能够建立本身的模块,而后将之包含在应用程序中。这其实很简单,由于咱们知道文件和模块是一一对应的,一个 Node.js 文件就是一个模块。ui
示例:
建立一个返回日期和时间对象的模块,保存为mymodule.js中。其中 mymodule
是我给文件自定义的名字,这也是模块的模块名。以下所示:编码
exports.myDateTime = function () { return Date(); };
上述代码中,Date()
就是用于获取当前日期和时间的函数,exports
关键字的做用是使模块文件外部的属性和方法可用。这个也好理解,好比说如今有两个js文件 one.js 和 two.js,若是咱们想要 two.js 中访问 one.js 中的方法是不能够的,那么咱们要怎么作呢? 就可使用 exports
把模块接口公开,让咱们能够在另外一个文件中访问这个模块。3d
要在另外一个Node.js文件中使用上面建立的 mymodule
模块,首先要作的就是引入这个mymodule
模块,而后再使用,以下所示:code
var http = require('http'); var dt = require('./mymodule'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'}); res.write("当前日期和时间为: " + dt.myDateTime()); res.end(); }).listen(8888);
将代码保存到test_module.js文件中,而后运行文件,运行文件的命令以下所示:
node test_module.js
在浏览器中访问http://127.0.0.1:8888/ ,页面会显示以下内容:
当前日期和时间为: Thu Apr 02 2020 16:50:19 GMT+0800 (中国标准时间)
如图所示:
注意一下上述代码中使用了./
来定位模块,表示该模块与Node.js文件位于同一文件夹中。必定要注意引入模块时,模块的路径,不然查找不到模块,则会报错。
乱码问题
若是咱们在代码中使用中文,出现了乱码问题,须要添加下面这句:
res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
charset=utf-8
用于设置编码,表示当前文档的字符集是采用utf-8的字符。utf-8是针对Unicode的一种可变长度字符编码,能够用来表示Unicode标准中的任何字符。