Что такое `process.binding('fs')` в `fs.js`?

Я вижу над 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++?

person Freewind    schedule 20.06.2016    source источник


Ответы (1)


  1. process.binding() — это внутренний API, используемый узлом для получения ссылки на различные основные привязки C++.
  2. 'fs' в process.binding('fs') является ссылкой на привязку C++ (src/node_file.cc в исходном дереве узла) для модуля fs.
  3. Как уже упоминалось, process.binding() ссылается на привязки C++, поэтому в данном случае binding.open() экспортируется здесь и определен здесь.
person mscdex    schedule 20.06.2016