huangtaoya
侠客
侠客
  • 最后登录2020-03-26
  • 发帖数10
阅读:6572回复:0

[nodejs]exports 与 module.exports的区别

楼主#
更多 发布于:2019-04-01 17:34
1.exports的用法说明Nodejs使用模块化工具管理的原理,每个独立的js文件都可以看做是一个模块,每个模块中都隐含着exports和和module.exports两个对象,下边说一下个人在学习中对其的理解。

首先,举个例子,编写一个exports_test.js模块,代码如下:
var name="我是var声明的name变量";
exports.name="我是exports下的属性name";
function sayName(){    console.log("我是function 声明的sayName()方法!");}
exports.sayName1=function(){    console.log("我是exports下的一个方法!");};

然后新建一个test.js,将上面的模块引入:
var exports_test=require('./exports_test.js');
console.log(exports_test);//输出

执行test.js后,可以看到输出的结果是:
{ name: '我是exports下的属性name', sayName1: [Function] }
可以看出,任何exports属性和方法都可以再外部访问,而var声明和funciton直接定义方法都是私有的,只有在exports暴露后才是共有的。外部才可以通过exports_test.name类型获取,如下:
console.log(exports_test.name);console.log(exports_test.sayName1());

2.module.exports说明
module.exports也可以像exports的用法那样,可以替代exports的用处。module.exports包含exports,反过来exports不能替代module.exports。


3.module.exports和exports的区别
module.exports可以单独的定义,返回数据类型,而export只能是返回一个object对象。如
module.exports=['劳黑炭','百度经验','module.exports'];//正确
exports=['劳黑炭','百度经验','module.exports'];//报错


require引用的是module.exports,不是引用的exports
可以使用 module.exports = exports = {};



-----------
作者:劳黑炭
来源:百度经验
原文:https://jingyan.baidu.com/article/a17d5285185bfb8098c8f204.html
[huangtaoya于2019-04-02 09:56编辑了帖子]

最新喜欢:

doubleyongdouble...
游客


返回顶部

公众号

公众号