nodejs exports和module.exports的区别

php web开发的过程中,前端js需要引用另一个js的代码,常常看到用exports的方式。那么 exports和module.exports有什么不同呢?

先通过实例来体会一下,这里使用runoob上的sample来介绍。

module.exports示例

创建hello.js文件如下:

创建main.js文件如下:

然后运行node main.js ,则打印出下面的语句,表明Hello函数正常执行

执行对象主题代码

简单解读

require函数会将参数里的文件加载,并将Hello函数的代码赋值给exports,然后exports又赋值给外面的Hello变量,也即hello.js的Hello函数实体代码 赋值给了变量Hello,使用Hello()来执行这个函数

外部执行对象的方法

因为js代码,函数也即是对象。上面的hello.js中,Hello对象有两个方法,但是我们只是把它当函数来运行,将对象定义的主体的代码执行了。

如果要执行定义体里定义的函数,则需要创建成对象来调用,见下图的main.js

然后运行node main.js ,则打印出下面的语句,表明创建的hello对象的成员函数正常执行

执行对象主题代码

Hello BYVoid

再使用exports的方式导出

上面展示的是module.exports的方式导出文件代码,实则导出的就是一个函数。下面看看exports的方式,先把hello.js改成exports的方式

main.js改成下面两行,运行node main.js, 则打印出下面的语句,表明Hello函数正常执行

执行对象主题代码

原因解析:require将hello.js的代码载入,exports的代码赋值给了hello变量,即exports和hello是对等的。而exports下挂了一个Hello函数,那么要执行这个函数的话,就需要hello.Hello()调用即可。

把函数转换成对象来调用其中的方法

现在把main.js改成下面的方式,就可以将hello.js转换成对象,并访问对象的方法了


简言之,被require的文件中的exports相当于 主文件中的被赋值的那个变量。

你可能感兴趣的:(nodejs exports和module.exports的区别)