PD: Actualice el nodo 6.2.1 primero. El comando de actualización de nodo npm install -gn; n stable.node.js Extension es una biblioteca de enlaces dinámico escrita en C/C ++ y se cargó a través de la función Node.js requerir (). Es como usar un módulo Node.js ordinario. Proporciona principalmente interfaces entre el nodo y las bibliotecas C/C ++.
De esta manera, si se implementa un método o función a través de la extensión del nodo, se vuelve bastante complejo, lo que implica el conocimiento de varios módulos e interfaces:
• V8: un JavaScript.v8 que implementa la implementación a través de la biblioteca C ++ proporciona un mecanismo de creación de objetos, función de devolución de llamada, etc. La mayoría de los documentos V8API están en el archivo de encabezado V8.H. Haga clic en mi documento en línea V8
• Libuv: una biblioteca para bucles de eventos que implementan hilos de trabajadores Node.js y comportamiento asincrónico. También actúa como una biblioteca abstracta multiplataforma que puede simplemente un acceso similar a POSIX a todos los principales sistemas de sistemas operativos, muchas tareas comunes, como la interacción con sistemas de archivos, sockets, temporizadores y eventos del sistema. Libuv también proporciona un hilo abstracto similar a PTHreads que puede usarse para asíncrono más complejo. La extensión C/C ++ de Node.js debe ir más allá del bucle de evento estándar. El autor enchufable alienta a pensar en cómo evitar bloquear los bucles de E/S de E/S y completar el trabajo intensivo de tareas a través de operaciones de sistema sin bloqueo Libuv, hilos de trabajadores y subprocesos definidos por el usuario.
• Node.js Biblioteca incorporada: Node.js en sí utiliza una gran cantidad de API de extensión C/C ++. La clase más importante para el nodo de extensión C/C ++: ObjectWrap
• Las numerosas bibliotecas de enlaces estáticos de Node.js, como OpenSSL: Node.js, las otras bibliotecas están en el directorio DEPS en su árbol de directorio de origen. Para más detalles, consulte las propias dependencias de Node.js para obtener información adicional. Haga clic en mi ejemplo de biblioteca de extensión node.js oficial, que puede ser el punto de partida para que escriba una biblioteca de extensión C/C ++ para Node.js. Solo las clases V8 y OpenSSL a menudo se usan con frecuencia en las extensiones de nodo C/C ++.
Nodo C/C ++ Extensión Primera bomba - Último ejemplo Hello World
Este ejemplo se aplica al número de versión Node.js v5.0 o superior.
// hello.jsconst addon = request ('./ build/rotes/addon'); console.log (addon.hello ()); // 'World' // hello.cc#include <node.h> #include <v8.h> namespace demoss {usando v8 :: functionCallbackInfo; usando v8 :: aisole; usando v8 :: local; usando v8 :: object; usando v8 :: string; usando v8 :: valor; void método (const functionCallbackInfo <value> & args) {isolate {isole {isole {sole {ibations) args.getIsolate (); args.getReturnValue (). set (string :: newFromUtf8 (aisolado, "mundo"));} void init (local <ject> exports) {node_set_method (exports, "hola", método);} node_module (addon, init)} // namespace // bings.gyp {"" "" "node_module (addon, init)} // namespace // bindering.gyp {" "" " [{"Target_name": "Addon", "Fuentes": ["Hello.cc"]}]}comando nodo-gyp
La copia del código es la siguiente:
nodo-gyp configurar compilación
Lo anterior es el conocimiento relevante de Node.js Addons Translation (Extensión C/C ++) introducido por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!