• Node.js Video Tutorials

Node.js - 模块



Node.js 中的模块是独立且可重用的代码集合,可以导入到任何 Node.js 应用程序中。顾名思义,模块支持 Node.js 应用程序开发的模块化和结构化方法。与其将应用程序的所有函数、类和方法都放在单个 .js 文件中,不如根据其相关性将这些资源排列在单独的文件(称为模块)中。这样可以更好地控制 Node.js 应用程序的维护和故障排除。

Node.js 运行在 V8 JavaScript 引擎上,该引擎解释 JavaScript 代码。所有服务器端进程都由应用程序通过 require() 函数导入的相关 Node.js 模块处理。Node.js 模块是一个函数、类和其他可重用代码库,存储在一个或多个 .js 文件中。

导入 Node.js 模块的一个典型示例是如何启动 Node.js 服务器。启动 Node.js 服务器需要 http 模块中定义的 createServer() 函数。因此,在调用之前需要导入 http 模块。

http = require('node:http');
listener = function (request, response) {
   ...
   ...
};

server = http.createServer(listener);
server.listen(3000);

模块类型

Node.js 中的每个模块都有其自己的上下文,并实现 CommonJS 模块标准。Node.js 中的模块可以是以下三种类型之一:

第三方模块

这些模块由独立开发者开发,可在 NPM 仓库中使用。如果要在应用程序中整合其功能,则应全局或本地安装模块到 Node.js 项目文件夹中。

Express 模块就是这样一个模块的示例。要安装,请使用以下任何命令:

npm install express -g //install globally
or
npm install express –save //install locally

然后,您可以在应用程序中导入已安装的模块。例如:

var express = require('express');

内置模块

Node.js 运行时软件附带 V8 JavaScript 引擎,捆绑了许多核心模块,这些模块执行重要的服务器端任务,例如管理事件循环、执行文件 IO 和特定于操作系统的函数等。内置或核心模块的示例包括 http、fs、console 等。这些模块是预安装的,但必须使用 require() 函数导入它们(除了少数模块,如 process、buffer 和 console 模块,它们是全局对象)。例如:

var fs = require('fs');

本地模块

本地模块是一个 .js 文件,其中存储 Node.js 应用程序所需的一个或多个函数或类的定义。此类模块存在于相同的 Node.js 应用程序文件夹中,也应使用 require() 函数包含在应用程序中。

Node.js 应用程序中的每个 .js 文件都有一个特殊的 module 对象。它的 exports 属性将 .js 文件中的某个函数、对象或变量暴露给外部代码。

示例

以下 functions.js 文件包含三个函数,它们返回 x 的 y 次幂的值、x 的平方根和 x 的对数值。这些函数是为外部使用而导出的。

exports.power = function powerval( x, y) {
   var val = Math.pow(x,y);
   return val;
}

exports.root = function rootval(x,y) {
   var val = Math.sqrt(x);
   return val;
}

exports.log = function logval(x) {
   var val = Math.log10(x);
   return val;
}

现在,我们将在另一个 Node.js 应用程序 main.js 中使用这些导出的函数。首先导入本地 functions 模块,然后调用从中导入的函数。

const mymodule = require('./mathfunctions');

console.log("10 Raised to 3:" + mymodule.power(10,3));
console.log("Square root of 10: "+ mymodule.root(10));
console.log("Log of 1000: " + mymodule.log(1000));

输出

10 Raised to 3:1000
Square root of 10: 3.1622776601683795
Log of 1000: 3
广告