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

Fre*_*ind 8 javascript fs node.js

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

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

const binding = process.binding('fs');
Run Code Online (Sandbox Code Playgroud)

然后,它被用作:

binding.open(pathModule._makeLong(path),
           stringToFlags(flag),
           0o666,
           req);
Run Code Online (Sandbox Code Playgroud)

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

我的问题是:

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

msc*_*dex 11

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