如何在项目中使用外部模块和 NPM?
需要外部模块:对于大型 JavaScript 应用程序,仅在一个 JavaScript 文件中编写整个代码变得困难且混乱。这就是 CommonJS 发挥作用的地方,这种 CommonJS 格式定义了一种模块格式,可用于将您的 JS 应用程序分解为多个文件。 Node.js 采用这种 CommonJS 格式将我们的 JS 应用程序组织成多个文件。在这个 Node.js 应用程序中,我们有 module.exports 属性,用于确定从当前模块导出。
Node 模块的类型: Node.js 中的模块是一个简单或复杂的功能,组织成单个或多个 JS 文件,可以在整个 Node.js 应用程序中再次使用。 Node.js 模块分为三种类型:
- 本地/基于文件的模块:它在我们的应用程序的文件中定义节点模块,并在我们的应用程序中使用。
- 核心模块:核心模块是 Node.js 中的内置模块。这些模块提供了足够的功能,以便外部模块设计人员可以添加他们自己的功能,这些功能可以在开发 Node 应用程序时使用。核心模块包括路径、文件系统、操作系统、实用程序等。
- 第三方模块:第三方模块是外部 Node 模块。这些是 Node 开发人员开发的第三方 Node 模块,可通过 Node 生态系统使用。但是我们需要一个包管理器来维护所有模块,以便可以轻松访问它们。这就是 NPM 发挥作用的地方。
NPM(Node Package Manager) : NPM 是 Node.js 中 JavaScript 运行时环境的默认包管理器。 Node.js 包管理器 (npm) 是 Node.js 生态系统中默认且最受欢迎的包管理器,主要用于安装和维护 Node.js 应用程序中的外部模块。用户基本上可以使用 npm 安装其应用程序所需的节点模块。
如何导出模块?
首先,通过在命令提示符/终端中键入npm init来初始化 node.js 应用程序(确保您存在于当前项目文件夹中)。它将创建一个 package.json 文件。
使用以下语法在 Node.js 项目中添加模块。
句法:
var module = require("module_name");
创建自己的模块并使用它:首先,通过在命令提示符/终端中键入npm init来初始化目录中的节点。
- 创建一个 Node.js 模块(rectange.js):
javascript
module.exports = (length, breadth, callback) => {
if (length <= 0 || breadth <= 0)
setTimeout(() => callback(new Error(
"Dimensions cannot be negative: length = "
+ length + ", and breadth = "
+ breadth), null), 5000);
else
setTimeout(() => callback(null, {
Perimeter: () => (2*(length+breadth)),
Area:() => (length*breadth) }), 5000);
}
javascript
var rect = require('./rectangle');
module.exports.Rect = function Rect(l, b) {
rect(l, b, (err, rectangle) => {
if (err)
console.log("There is an ERROR!!: ", err.message);
else {
console.log("Area of rectangle with dimensions length = "
+ l + " and breadth = " + b + " : " + rectangle.Area());
console.log("Perimeter of the rectangle with dimensions length = "
+ l + " and breadth = " + b + " : " + rectangle.Perimeter());
}
console.log("\n\n");
});
};
javascript
var rect = require("./module");
rect.Rect(5, 2);
rect.Rect(-1, 0);
rect.Rect(12, 4);
rect.Rect(8, 6);
rect.Rect(3, 4);
- 在您的应用程序 (module.js) 中使用 Node 模块:
javascript
var rect = require('./rectangle');
module.exports.Rect = function Rect(l, b) {
rect(l, b, (err, rectangle) => {
if (err)
console.log("There is an ERROR!!: ", err.message);
else {
console.log("Area of rectangle with dimensions length = "
+ l + " and breadth = " + b + " : " + rectangle.Area());
console.log("Perimeter of the rectangle with dimensions length = "
+ l + " and breadth = " + b + " : " + rectangle.Perimeter());
}
console.log("\n\n");
});
};
- 初始化主文件(index.js):
javascript
var rect = require("./module");
rect.Rect(5, 2);
rect.Rect(-1, 0);
rect.Rect(12, 4);
rect.Rect(8, 6);
rect.Rect(3, 4);
输出: