什么是`fs.js`中的`process.binding(' fs')`?

时间:2016-06-20 07:38:32

标签: javascript node.js fs

我在fs.js的顶部看到有一个process.binding('fs')

https://github.com/nodejs/node/blob/master/lib/fs.js#L10

const binding = process.binding('fs');

然后,它被用作:

binding.open(pathModule._makeLong(path),
           stringToFlags(flag),
           0o666,
           req);

(在https://github.com/nodejs/node/blob/master/lib/fs.js#L303-L306

我的问题是:

  • process.binding('fs')是什么意思?
  • 这里有什么fs(我们已经在fs.js)?
  • 我在哪里可以找到binding.open的源代码?是Javascript代码还是c / c ++代码?

1 个答案:

答案 0 :(得分:11)

  1. process.binding()是节点用来获取对各种核心C ++绑定的引用的内部API。
  2. 'fs'中的
  3. process.binding('fs')是对fs模块中 C ++绑定(节点源代码树中的src/node_file.cc)的引用。 / LI>
  4. 如上所述,process.binding()引用了C ++绑定,因此在这种情况下binding.open()导出here并定义here