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 服务器的。需要在 http 模块中定义的 createServer() 函数来启动 Node.js 服务器。因此,在调用 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文件都有一个特殊的模块对象。它的 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中使用这些导出的函数。首先导入本地函数模块,然后调用从中导入的函数。


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