`
rainsilence
  • 浏览: 160794 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

NodeJS module.exports VS exports

 
阅读更多

 

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; // 如果还需要加入其他属性则这样写
 

 

分享到:
评论

相关推荐

    详解nodejs中exports和module.exports的区别

    在Node.js模块化编程中,经常使用的两个核心概念是exports和module.exports。了解这两个概念的区别和使用场景对于编写可维护和可复用的Node.js代码非常关键。 首先,需要明确一点,exports和module.exports虽然看似...

    node.js中module.exports与exports用法上的区别

    在上面的例子中,`exports.myName = myName`等同于`module.exports.myName = myName`,我们为`module.exports`对象添加了一个`myName`属性,使得其他模块可以引入并使用这个函数。 然而,当直接将`exports`赋值给一...

    nodejs中exports与module.exports的区别详细介绍

    exports.name = function() { console.log('My name is Lemmy Kilmister'); }; ``` 然后在其他文件中引用这个模块: ```javascript var rocker = require('./rocker.js'); rocker.name(); // 'My name is Lemmy ...

    详解Node.js中exports和module.exports的区别

    这里,`moduleA.js` 使用 `module.exports` 导出的是一个函数,而不是之前的 `exports.log` 函数,因此 `moduleA` 现在是一个函数,而不是一个带有 `log` 方法的对象。 现在我们来总结一下 `exports` 和 `module....

    nodejs(node-v16.13.2-x64.msi)-(node-v18.12.1-x64.msi)

    2. **模块系统**:Node.js 使用 CommonJS 规范,通过 `require` 导入模块,`module.exports` 或 `exports` 导出模块。 3. **npm**:全球最大的开源软件包仓库,用于管理和分享Node.js模块。 4. **V8引擎**:Node.js ...

    浅谈node中的exports与module.exports的关系

    exports.myFunction = function() { console.log('Hello, World!'); }; ``` 这相当于向`module.exports`添加了一个`myFunction`属性。然而,如果直接赋值给`exports`: ```javascript exports = { myFunction: ...

    浅谈webpack 四个核心概念之Entry

    exports 变量是在模块的文件级作用域内可用的,且在模块执行之前赋值给 module.exports在nodejs中,提供了exports 和 require 两个对象,其中 exports 是模块公开的接口,require 用于从外部获取一个模块的接口,即...

    nodejs复习.pdf

    - **`exports`**:作为`module.exports`的一个简写。 - **`__filename`** 和 **`__dirname`**:分别表示当前文件的完整路径和所在目录的完整路径。 ### 包和npm - **npm**(Node Package Manager)是Node.js的官方...

    node中modules.exports与exports导出的区别

    exports.foo = function() { console.log('foo'); }; ``` 注意事项 * `module.exports` 和 `exports` 都是 Node.js 中的模块导出对象,但它们的使用场景不同。`module.exports` 用于导出整个模块的所有成员,而 `...

    node-v16.18.1-x64.msi

    `require`函数用于导入模块,`module.exports`或`exports`用于导出模块。 5. **npm(Node Package Manager)**:与Node.js一同提供的npm是全球最大的开源库生态系统,拥有数百万个第三方模块,可以方便地进行依赖...

    NodeJS教程.rar

    3. **模块系统**:NodeJS的模块系统允许代码组织和重用,理解`require`和`exports`或`module.exports`对于构建大型应用至关重要。 4. **文件系统操作**:NodeJS提供了强大的文件系统模块,可以用来读取、写入、创建...

    nodejs入门教程三:调用内部和外部方法示例.docx

    `exports`和`module.exports`都是用来导出模块的接口,但通常推荐使用`module.exports`,因为它更直接,可以覆盖已有的导出内容,而`exports`则是向`module.exports`添加属性或方法。 此外,本教程还提到了其他Node...

    作业 nodejs oneday.rar

    5. **模块化**:学习如何创建自定义模块,使用 `exports` 或 `module.exports` 导出功能,以及如何导入其他模块。 6. **事件与回调**:了解 Node.js 的事件驱动模型,包括事件发射器(EventEmitter)类和事件监听器...

    JavaScript_成为一个Nodejs开发者.zip

    通过`require`函数,开发者可以轻松地导入和使用外部模块,同时也能通过`module.exports`或`exports`导出模块供其他文件使用。Node.js还内置了丰富的核心模块,如HTTP模块,用于创建服务器和客户端请求,以及FS模块...

    详解Sea.js中Module.exports和exports的区别

    一、官方解释 因为SeaJs和Nodejs都是基于CommonJS,所以直接看的Node的官方文档解释 Module.exports The module.exports ... To do this, assign the desired export object to module.exports. Note that assigning

    nodejs服务器.rar

    1. 自定义模块:通过`module.exports`或`exports`导出模块,`require`导入模块。 2. 全局模块:Node.js内置了一些全局模块,如`path`用于处理路径,`os`用于获取操作系统信息。 3. npm(Node Package Manager):...

    nodejs入门教程一:概念与用法简介.docx

    在上面的例子中,`fool.js` 中的 `exports.a` 和 `exports.b` 都被覆盖了,因为 `module.exports` 被重新赋值。在 `test.js` 中,我们通过 `require()` 获取到了 `fool.js` 中经过 `module.exports` 处理后的模块。 ...

    node笔记第一天

    重点 : 导出 module.exports exports.变量 = 导出的对象 不能让exports直接指向一个对象, 因为,exports 就 不再指向module.exports了, 指向新对象了 导入 require("模块的路径") 不仅能引入模块,也能够...

Global site tag (gtag.js) - Google Analytics