[Node.js]node.js中的module.exports使用(CommonJS规范)

背景:在node.js中,我们经常能在js文件中看到module.exports这句话,它是干嘛用的

要介绍module.exports,需要从CommonJS规范讲起,node.js是对CommonJS的一个实现:

Node应用由模块组成,采用CommonJS模块规范。

根据这个规范,每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见

CommonJS规范规定,每个模块内部,module变量代表当前模块。这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。

核心要点:

* 一个文件是一个module
* module.exports定义了module对外暴露的接口

所以module.exports起到的作用就是向其他模块暴露接口的作用

举例:
1.view.js文件内容如下:

module.exports.views = {
  engine: 'ejs',
  layout: 'layout',
  partials: false
};

2.另外一个模块可以通过require加载views模块:

const views = require("views")
console.log(views.engine)

module.exports除了可以暴露模块的属性,还可以暴露方法:
sample.js

module.exports={
    sayHelloWorld:function(){
      console.log("hello world")
    } 
}

另一个模块引用sample.js中暴露的方法:

const sample = require("sample")
sample.sayHelloWorld();
const sample = require("sample").sayHelloWorld()
sample();

二者产生的效果是相同的

你可能感兴趣的:([Node.js]node.js中的module.exports使用(CommonJS规范))