среди прочих — c abi, что даёт возможность напрямую вызывать из того же раста без промежуточных обёрток; до napi всем проектам типа того же neon приходилось каждый раз велосипедить, грубо говоря, свой napi на C++ с extern "C"
функциями, и мейнтейнить его
плюс стабильность и abi-совместимость между версиями ноды, можно один раз скомпилировать для каждой платформы, а не для каждой платформы умножить на для каждой поддерживаемой версии ноды
А зачем екстерн? Я писал классы/фции, затем байндил макросом NODE_MODULE()