node.js通过实现CommonJS的Modules/1.0标准引入了模块(module)概念,一个模块可以通过module.exports或exports将函数、变量等导出,以使其它JavaScript脚本通过require()函数引入并使用。
现在有一个问题:到底应该用module.exports还是用exports呢?
console.log(module.exports === exports);
代码比较,其实两者是一样的
node在执行的时候,实际上是有一个全局变量module,但是,exports却是通过动态生成一个function,作为此function的参数传进来的。
那么exports = function() {};之后,只是地址改变。exports的内容并没有改变
那么,如果要实现类似于var assert = require("assert"); assert();这样的代码如何实现?看以下代码:
moduleTest.js
var exports = module.exports = function(param) {
console.log(param);
};
exports.print = function(param) {
console.log(param + ",we are printing.");
};
simple.js
var test = require("./moduleTest");
test("I'm John.");
test.print("444");
So...如果要实现assert的调用,必须
exports = module.exports = someObject;
exports.sth = sobj; // 如果还需要加入其他属性则这样写
分享到:
相关推荐
在Node.js模块化编程中,经常使用的两个核心概念是exports和module.exports。了解这两个概念的区别和使用场景对于编写可维护和可复用的Node.js代码非常关键。 首先,需要明确一点,exports和module.exports虽然看似...
在上面的例子中,`exports.myName = myName`等同于`module.exports.myName = myName`,我们为`module.exports`对象添加了一个`myName`属性,使得其他模块可以引入并使用这个函数。 然而,当直接将`exports`赋值给一...
exports.name = function() { console.log('My name is Lemmy Kilmister'); }; ``` 然后在其他文件中引用这个模块: ```javascript var rocker = require('./rocker.js'); rocker.name(); // 'My name is Lemmy ...
这里,`moduleA.js` 使用 `module.exports` 导出的是一个函数,而不是之前的 `exports.log` 函数,因此 `moduleA` 现在是一个函数,而不是一个带有 `log` 方法的对象。 现在我们来总结一下 `exports` 和 `module....
exports.myFunction = function() { console.log('Hello, World!'); }; ``` 这相当于向`module.exports`添加了一个`myFunction`属性。然而,如果直接赋值给`exports`: ```javascript exports = { myFunction: ...
2. **模块系统**:Node.js 使用 CommonJS 规范,通过 `require` 导入模块,`module.exports` 或 `exports` 导出模块。 3. **npm**:全球最大的开源软件包仓库,用于管理和分享Node.js模块。 4. **V8引擎**:Node.js ...
exports 变量是在模块的文件级作用域内可用的,且在模块执行之前赋值给 module.exports在nodejs中,提供了exports 和 require 两个对象,其中 exports 是模块公开的接口,require 用于从外部获取一个模块的接口,即...
- **`exports`**:作为`module.exports`的一个简写。 - **`__filename`** 和 **`__dirname`**:分别表示当前文件的完整路径和所在目录的完整路径。 ### 包和npm - **npm**(Node Package Manager)是Node.js的官方...
exports.foo = function() { console.log('foo'); }; ``` 注意事项 * `module.exports` 和 `exports` 都是 Node.js 中的模块导出对象,但它们的使用场景不同。`module.exports` 用于导出整个模块的所有成员,而 `...
`require`函数用于导入模块,`module.exports`或`exports`用于导出模块。 5. **npm(Node Package Manager)**:与Node.js一同提供的npm是全球最大的开源库生态系统,拥有数百万个第三方模块,可以方便地进行依赖...
3. **模块系统**:NodeJS的模块系统允许代码组织和重用,理解`require`和`exports`或`module.exports`对于构建大型应用至关重要。 4. **文件系统操作**:NodeJS提供了强大的文件系统模块,可以用来读取、写入、创建...
`exports`和`module.exports`都是用来导出模块的接口,但通常推荐使用`module.exports`,因为它更直接,可以覆盖已有的导出内容,而`exports`则是向`module.exports`添加属性或方法。 此外,本教程还提到了其他Node...
5. **模块化**:学习如何创建自定义模块,使用 `exports` 或 `module.exports` 导出功能,以及如何导入其他模块。 6. **事件与回调**:了解 Node.js 的事件驱动模型,包括事件发射器(EventEmitter)类和事件监听器...
通过`require`函数,开发者可以轻松地导入和使用外部模块,同时也能通过`module.exports`或`exports`导出模块供其他文件使用。Node.js还内置了丰富的核心模块,如HTTP模块,用于创建服务器和客户端请求,以及FS模块...
一、官方解释 因为SeaJs和Nodejs都是基于CommonJS,所以直接看的Node的官方文档解释 Module.exports The module.exports ... To do this, assign the desired export object to module.exports. Note that assigning
1. 自定义模块:通过`module.exports`或`exports`导出模块,`require`导入模块。 2. 全局模块:Node.js内置了一些全局模块,如`path`用于处理路径,`os`用于获取操作系统信息。 3. npm(Node Package Manager):...
在上面的例子中,`fool.js` 中的 `exports.a` 和 `exports.b` 都被覆盖了,因为 `module.exports` 被重新赋值。在 `test.js` 中,我们通过 `require()` 获取到了 `fool.js` 中经过 `module.exports` 处理后的模块。 ...
重点 : 导出 module.exports exports.变量 = 导出的对象 不能让exports直接指向一个对象, 因为,exports 就 不再指向module.exports了, 指向新对象了 导入 require("模块的路径") 不仅能引入模块,也能够...