前言

Node中,每个模块都有一个exports接口对象,我们需要把公共的方法或者字符串挂载在这个接口对象中,其他的模块才可以使用。

Node.js中只有模块作用域,默认两个模块之间的变量,方法互不冲突,互不影响,这样就导致一个问题,我们怎样使用加载进来的模块中的方法呢?这就需要在另外一个模块exports接口对象中挂载模块中公共的方法。

  1. exports

我们在a.js中有以下代码:

let foo = 'hello'
function add (x, y) {return x+y
}
exports.add = add // 在接口对象中挂载公共的add方法
exports.foo = foo // 在接口对象中挂载foo属性
复制代码

此时,在b.js中如果需要使用add方法,只需引入a.js即可。b.js代码如下:


let a = require('./a.js')  // a.js和b.js在同级目录下,注意:同级目录必须加“./”console.log(a.add(20,30)) // 使用a.js中的add方法
复制代码

最后我们看到的效果如下:

相反,如果我们没有在a.jsexports接口对象中挂载add方法,那么这里就得不到结果。

  1. module.exports

对于1中的例子,我们同样可以利用module.exports来写,只需把暴露的方式改成如下:

module.exports.add = add  module.exports.foo = foo
复制代码

最终得到的效果是一样的:

总结

  1. Node中每个模块都有一个module对象,module对象中的有一个exports属性为一个接口对象,我们需要把模块之间公共的方法或属性挂载在这个接口对象中,方便其他的模块使用这些公共的方法或属性。

  2. Node中每个模块的最后,都会return: module.exports

  3. Node中每个模块都会把module.exports指向的对象赋值给一个变量exports,也就是说:exports = module.exports

  4. module.exports = XXX,表示当前模块导出一个单一成员,结果就是XXX。

  5. 如果需要导出多个成员时必须使用exports.add = XXX; exports.foo = XXX;或者使用module.exports.add = XXX; module.export.foo = XXX;

说明

本仓库是自己Node.js学习过程的真实记录,以后会每天更新一些新的知识点,希望可以对想要学Node.js的同学有一些帮助,欢迎star,你们的点赞是我更新的持久动力。同时如果你觉得本仓库中的一些知识点有错误也可以issue我,方便后期我订正!

本仓库同时在博客园和掘金更新,欢迎写博客的朋友一起学习交流。

博客园

找我

掘金

找我

GitHub

找我

Node.js学习之(第二章:exports和module.exports)相关推荐

  1. 《写给PHP开发者的Node.js学习指南》一2.2 预定义的PHP变量

    本节书摘来自异步社区<写给PHP开发者的Node.js学习指南>一书中的第2章,第2.1节,作者[美]Daniel Howard,更多章节内容可以访问云栖社区"异步社区" ...

  2. node.js学习总结:node.js的内置模块,模块化,npm与包 express,前后端身份认证 JWT认证机制

    node.js学习总结 什么是node.js node.js的内置模块 fs系统模块 path路径模块 http模块 模块化 npm与包 express express路由 express+mysql ...

  3. Node Js 学习笔记

    Node 为什么要学习Node.js 企业需求 具有服务端开发经验更改 front-end back-end 全栈开发工程师 基本的网站开发能力 服务端 前端 运维部署 多人社区 Node.js是什么 ...

  4. 千锋Node.js学习笔记

    千锋Node.js学习笔记 文章目录 千锋Node.js学习笔记 写在前面 1. 认识Node.js 2. NVM 3. NPM 4. NRM 5. NPX 6. 模块/包与CommonJS 7. 常 ...

  5. Node.js基础入门第二天

    经过第一天的学习,对Node.js有了一个初步的认识,今天继续学习Node.js,加以整理并分享,如有不足之处,还请指正. require函数 作用:在当前模块中加载另外一个模块 语法:require ...

  6. node.js学习笔记

    # node.js学习笔记标签(空格分隔): node.js---## 一 内置模块学习 ### 1. http 模块 ``` //1 导入http模块 const http =require('ht ...

  7. Node.js学习笔记8

    Node.js学习笔记8 HTTP服务器与客户端 Node.js的http模块,封装了一个高效的HTTP服务器和一个简易的HTTP客户端 http.server是一个基于事件的HTTP服务器,核心由N ...

  8. node.js学习笔记5——核心模块1

    node.js学习笔记5--核心模块1 Node.js核心模块主要内容包括:(1)全局对象 (2)常用工具 (3)事件机制 (4)文件系统访问 (5)HTTP服务器与客户端 一: 全局对象 Node. ...

  9. node.js 学习笔记(二)模板引擎和C/S渲染

    node.js 学习笔记(二)模板引擎和C/S渲染 文章目录 node.js 学习笔记(二)模板引擎和C/S渲染 一.初步实现Apache功能 1.1 使用模板引擎 1.2 在 node 中使用模板引 ...

最新文章

  1. 手写体识别代码_Python识别图片中的文字
  2. Java synchronized解析
  3. CentOS6.4之图解SSH无验证双向登陆配置
  4. 23、MySQL如何处理无效数据值
  5. BootStrap 学习笔记(一)
  6. 杀死应用进程 android,如何杀死Android应用程序启动的logcat进程?
  7. 网络爬虫--8.编码趣闻
  8. FastMM FastCode FastMove的使用
  9. 怎样快速提高新站权重收录
  10. 放在请求头目的_YSLOW性能测试前端调优23大规则(三)添加Expires头
  11. 《编写有效用例》阅读笔记04
  12. windows编程之GDI基础--设备内容(二)
  13. Android自动化测试在多种屏幕下的注意事项
  14. HCIA-IoT V2.5物联网初级考试总结(附题库,历年真题,刷题软件)
  15. CF1042A Benches
  16. android布局详解
  17. 百度关键词排名查询源码_推荐4个Google关键词排名查询工具
  18. C++核心准则T.10:为所有的模板参数定义概念
  19. uview 瀑布流_最简单的微信小程序瀑布流布局方法
  20. mldonkey安装

热门文章

  1. rtmp协议分析(三次握手)
  2. python函数 global_Python global全局变量函数详解
  3. uva 10140——Prime Distance
  4. LeetCode单链表题目测试代码(只需添加对应题目,本地即可debug)
  5. LeetCode上读不懂题!看不懂测试用例的那些题(有生之年更新。。。)
  6. redis源码剖析(十一)—— Redis字符串相关函数实现
  7. Mysql5.7后的password加密和md5
  8. SetConsoleCursorPosition光标的位置控制
  9. linux线程学习初步02
  10. linux 与信号集操作相关的函数