[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是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    w_zhuan阅读 3,644评论 2 41
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    Myselfyan阅读 4,115评论 2 58
  • 1 Node.js模块的实现 之前在网上查阅了许多介绍Node.js的文章,可惜对于Node.js的模块机制大都着...
    zlx_2017阅读 1,308评论 0 1
  • 1 Node.js模块的实现# 之前在网上查阅了许多介绍Node.js的文章,可惜对于Node.js的模块机制大都...
    七寸知架构阅读 2,093评论 1 50
  • 总会隔了那么一段时间 便找个陌生的地方 待上几天 孤独静坐 置身于人来人往之外 便没有任何牵挂、束缚、烦恼地 将自...
    Derek_Kun阅读 301评论 0 1