1. module应该是require方法中,上下文中的对象

2. exports对象应该是上下文中引用module.exports的新对象

3. exports.a = xxx 会将修改更新到module.exports对象中

4. exports = xxx 直接改变了 exports的指向,

module.js的474行代码:

module._compile(stripBOM(content), filename);

module.js的437行代码:

var wrapper = Module.wrap(content);

再往下跟:

进入node.js文件的879行:

return NativeModule.wrapper[0] + script + NativeModule.wrapper[1];

wrapper[0]是字符串:"(function (exports, require, module, __filename, __dirname) { "

wrapper[1]是字符串:" });"

看到经过wrap这一步,整个自己写的index.js被包装成了一个function,而exports, require, module等等,其实都是外部传进来的对象而已

在index.js中自然可以使用

而且在module.js的439行:

var compiledWrapper = runInThisContext(wrapper, filename, true);

可见通过runInThisContext方法,将上述wrapper代码按照filename的路径生成了一个新的匿名function文件(index.js)

继续调试到达module.js的456行:

var args = [self.exports, require, self, filename, dirname];
return compiledWrapper.apply(self.exports, args);

我们的匿名 function : index.js终于被调用!

args对应匿名function参数:exports, require, module, __filename, __dirname

可以参考的文章:

http://stackoverflow.com/questions/7137397/module-exports-vs-exports-in-nodejs/7142924#7142924

http://cnodejs.org/topic/4f7523168a04d82a3d4446df

http://cnodejs.org/topic/52308842101e574521c16e06

最新文章

  1. 移动端IOS点击事件失效解决方案
  2. Emacs 16进制模式
  3. 8款适合乐队、歌手和音乐家免费 WordPress 主题
  4. 用计算器计算“异或CRC”
  5. caffe简易上手指南(三)—— 使用模型进行fine tune
  6. linux网络配置正确,能够ping通内网地址,无法打开外网网页
  7. 读写Excel
  8. maven学习3,如何创建一个web项目
  9. Oracle 12cR1 RAC 在VMware Workstation上安装(下)—静默安装
  10. Storm+HBase实时实践
  11. uva 10288 gailv
  12. Oracle EBS when-validate-record 个性化无效果
  13. hadoop 有那些发行版本
  14. js跳转页面方法实现汇总
  15. Linux查看当前网卡流量
  16. [py]django模板继承
  17. “吃神么,买神么”的第一个Sprint计划(第二天)
  18. VS2010下配置Winpcap 开发环境
  19. selenium初探:WebDriverException解决方法探索(以Chrome浏览器|IE浏览器|Edge浏览器为例)
  20. html5弹性布局两则,有交互。

热门文章

  1. java web开发环境配置系列(一)安装JDK
  2. mac 安装secureCRT
  3. ethereumjs/ethereumjs-account-2-test
  4. golden gate 加initial load 在rac 上的配置
  5. PyCharm编辑HTML文件时输入{%不能自动补全
  6. hadoop体系架构
  7. 2018-11-26 BIG DATA ANALYSIS
  8. CMap使用方法总结
  9. 泰坦尼克(Titanic)生存因素可视化
  10. 大数据入门第五天——离线计算之hadoop(上)概述与集群安装