require
加载,module.exports
导出内容。Common.js 教程
Common.js 是一种用于 JavaScript 模块管理的规范,它定义了如何在 Node.js 环境中组织和使用模块,在 Common.js 规范中,每个文件被视为一个模块,通过require
函数可以引入其他模块,使用module.exports
可以将函数、对象或原始值从模块中导出,以便其他程序可以通过require
方法使用这些模块。
基本概念
模块:在 Common.js 中,模块是代码的基本单位,它可以是一个文件或一段代码块,包含了一些功能和数据。
导出(Export):将函数、对象或原始值从模块中导出,以便其他程序可以通过require
方法使用这些模块。
导入(Require):引入其他模块,以便在当前模块中使用它们提供的接口。
创建模块
要创建一个模块,你需要在一个文件中定义一些功能或数据,并使用module.exports
将其导出。
// 定义一个函数
function sayHello(name) {
returnHello, ${name}!
;
}
// 导出这个函数
module.exports = sayHello;
在上面的示例中,我们定义了一个名为sayHello
的函数,它接受一个参数name
并返回一个问候语,我们使用module.exports
将这个函数导出,这样其他文件就可以通过require
方法引入并使用它了。
引入模块
要引入一个模块,你可以使用require
函数。
const sayHello = require('./greeting.js'); console.log(sayHello('Alice')); // 输出 "Hello, Alice!"
在上面的示例中,我们使用require
函数引入了greeting.js
文件中的sayHello
函数,并将其赋值给sayHello
变量,我们可以像调用本地函数一样调用sayHello
函数。
核心对象和方法
在 Common.js 中,有几个核心对象和方法用于模块操作:
require
:用于引入其他模块。
module
:表示当前模块的对象,包含关于模块的信息以及导出模块的方法。
module.exports
的快捷方式,用于简化模块的导出。
__filename
:当前模块的文件名。
__dirname
:当前模块的目录名。
示例代码
以下是一个完整的示例,展示了如何创建和使用模块:
1、创建模块(mathModule.js
):
// mathModule.js // 定义两个函数 function add(a, b) { return a + b; } function subtract(a, b) { return a b; } // 导出这两个函数 module.exports = { add, subtract };
2、使用模块(app.js
):
// app.js // 引入 mathModule 模块 const mathModule = require('./mathModule'); // 使用模块中的函数 console.log(mathModule.add(5, 3)); // 输出 8 console.log(mathModule.subtract(5, 3)); // 输出 2
在上面的示例中,我们首先创建了一个名为mathModule.js
的模块文件,其中定义了两个数学函数add
和subtract
,并将它们作为对象的属性导出,我们在app.js
文件中使用require
函数引入了这个模块,并通过mathModule
对象访问和使用其中的函数。
相关问答FAQs
1. Common.js 和 ES6 模块有什么区别?
Common.js 是 Node.js 最初采用的模块系统,它基于require
和module.exports
,ES6 模块则是在 ES6(ECMAScript 2015)中引入的新的模块系统,它使用了import
和export
关键字来导入和导出模块,主要区别包括:
语法:Common.js 使用函数调用(require
和module.exports
),而 ES6 模块使用声明语法(import
和export
)。
作用域:Common.js 模块是运行时加载的,而 ES6 模块是编译时解析的。
默认导出:Common.js 只能有一个默认导出,而 ES6 模块可以有多个命名导出和一个默认导出。
循环依赖:Common.js 允许循环依赖,而 ES6 模块则不允许。
2. 如何在 Common.js 中处理异步模块?
在 Common.js 中处理异步模块时,通常需要使用回调函数或 Promise,以下是一个使用 Promise 的示例:
// asyncModule.js // 模拟一个异步操作 function asyncOperation() { return new Promise((resolve, reject) => { setTimeout(() => { resolve('Async operation completed'); }, 1000); }); } // 导出这个异步函数 module.exports = asyncOperation;
// app.js // 引入异步模块 const asyncOperation = require('./asyncModule'); // 使用异步函数 asyncOperation().then(result => { console.log(result); // 输出 "Async operation completed" }).catch(error => { console.error(error); });
在上面的示例中,我们定义了一个模拟异步操作的函数asyncOperation
,它返回一个 Promise,我们将这个函数导出,并在另一个文件中通过require
引入它,我们使用then
方法来处理 Promise 的结果。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1663771.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复