Какой опыт работы с Node API для подключения кода других языков в Node.js

«Какой опыт работы с Node API для подключения кода других языков в Node.js» — вопрос из категории Архитектура, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Node.js позволяет интегрировать код на других языках (C++, Rust, Python и т.д.) через механизмы Native Addons и Child Process.

Native Addons (N-API):

  • Использует C/C++ для написания расширений
  • Требует компиляции (node-gyp, cmake-js)
  • Высокая производительность (работает в том же процессе)

Пример простого Native Addon:

#include <node_api.h>
napi_value Method(napi_env env, napi_callback_info args) {
  napi_value greeting;
  napi_create_string_utf8(env, "Hello from C++!", NAPI_AUTO_LENGTH, &greeting);
  return greeting;
}

Child Process:

  • Запуск внешних скриптов через spawn, exec
  • Подходит для Python, Bash и других интерпретируемых языков
  • Медленнее из-за IPC, но проще в реализации

Пример вызова Python:

const { spawn } = require('child_process');
const pyProcess = spawn('python', ['script.py']);

Выбор зависит от требований к производительности и сложности интеграции.