模块

Node.js中的模块免费看

内置模块、模块的使用、创建模块、乱码问题解决

2020-04-06侠课岛    基础入门       

后端/Node.js/Node.js简明入门 17     0     1066

在实际工作中,编写稍大一点的程序时一般都会将代码模块化。在NodeJS中,一般将代码合理拆分到不同的JS文件中,每一个文件就是一个模块,而文件路径就是模块名。

在编写每个模块时,都有requireexportsmodule三个预先定义好的变量可供使用。

内置模块

Node.js有一组内置模块,无需进一步安装即可使用。有同学可能还搞不清楚什么是内置模块,内置模块顾名思义就是 Node 本身提供的模块,因为是 Node 本来就有的所以不用下载安装,只要直接使用 require 引入就可以使用内置模块。例如assert(用于断定)、path(用于处理文件路径)、fs(文件操作系统的API)等就是Node中的内置模块。
与内置模块相对应的,就是第三方模块。第三方模块是由 NodeJS 社区或第三方个人开发的功能模块,这些功能模块以软件包的形式存在。我们可以通过使用 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 文件就是一个模块。

示例:

创建一个返回日期和时间对象的模块,保存为mymodule.js中。其中 mymodule 是我给文件自定义的名字,这也是模块的模块名。如下所示:

exports.myDateTime = function () {
  return Date();
};

上述代码中,Date()就是用于获取当前日期和时间的函数,exports 关键字的作用是使模块文件外部的属性和方法可用。这个也好理解,比如说现在有两个js文件 one.js 和 two.js,如果我们想要 two.js 中访问 one.js 中的方法是不可以的,那么我们要怎么做呢? 就可以使用 exports 把模块接口公开,让我们可以在另一个文件中访问这个模块。

要在另一个Node.js文件中使用上面创建的 mymodule 模块,首先要做的就是引入这个mymodule模块,然后再使用,如下所示:

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标准中的任何字符。

本教程图文或视频等内容版权归侠课岛所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、转贴或以其他方式复制发布或发表。

评价

17

本课评分:
  •     非常好
难易程度:
  •     适中的

内容目录


本文索引


|
教程
粉丝
主页

签到有礼

已签到2天,连续签到7天即可领取7天全站VIP

  • 1
    +2 金币
  • 2
    +3 金币
  • 3
    +5 金币
  • 6
    +7 金币
  • 5
    +6 金币
  • 4
    暖心福利
    自选分类VIP ×1天
  • 7
    惊喜大礼

    自选分类VIP ×3天 +20金币
  • 持续签到 +8 金币

金币可以用来做什么?