PS: Veuillez d'abord mettre à niveau le nœud 6.2.1. La commande de mise à niveau du nœud NPM Install -GN; n stable.node.js Extension est une bibliothèque de liens dynamiques écrite en C / C ++ et chargé via la fonction Node.js requis (). C'est comme utiliser un module Node.js ordinaire. Il fournit principalement des interfaces entre les bibliothèques Node et C / C ++.
De cette manière, si une méthode ou une fonction est implémentée via l'extension du nœud, elle devient assez complexe, impliquant la connaissance de plusieurs modules et interfaces:
• V8: un javascript.v8 qui implémente l'implémentation via la bibliothèque C ++ fournit un mécanisme de création d'objet, une fonction de rappel, etc. La plupart des documents V8API se trouvent dans le fichier d'en-tête V8.H. Cliquez sur mon document V8 en ligne
• Libuv: une bibliothèque pour les boucles d'événements qui implémente les threads de travailleurs Node.js et le comportement asynchrone. Il agit également comme une bibliothèque abstraite multiplateforme qui peut simplement accorder un accès de type Posix à tous les principaux systèmes d'exploitation de nombreuses tâches courantes, telles que l'interaction avec les systèmes de fichiers, les prises, les minuteries et les événements système. Libuv fournit également un fil de type pthreads abstrait qui peut être utilisé pour des asynchrones plus complexes. L'extension Node.js C / C ++ doit aller au-delà de la boucle d'événement standard. L'auteur du plug-in encourage la réflexion sur la façon d'éviter de bloquer les boucles d'événements d'E / S et de terminer le travail à forte tâche via les opérations du système non bloquant Libuv, les threads de travail et les threads définis par l'utilisateur.
• Node.js Bibliothèque intégrée: Node.js lui-même utilise un grand nombre d'API d'extension C / C ++. La classe la plus importante pour le nœud d'extension C / C ++: objetwrap
• Les nombreuses bibliothèques de liens statiques de Node.js, telles que OpenSSL: les autres bibliothèques de Node.js sont dans le répertoire DEPS sous son arborescence de répertoire source. Pour plus de détails, veuillez consulter les propres dépendances de Node.js pour plus d'informations. Cliquez sur mon exemple de bibliothèque d'extension node.js officielle, qui peut être le point de départ pour vous d'écrire une bibliothèque d'extension C / C ++ pour node.js. Seules les classes V8 et OpenSSL sont souvent utilisées fréquemment dans les extensions du nœud C / C ++.
Node C / C ++ Extension Bombe - Dernier exemple Hello World
Cet exemple s'applique au numéro de version Node.js v5.0 ou supérieur.
// hello.jsconst addon = require ('./ build / release / addon'); console.log (addon.hello ()); // 'world' // hello.cc # include <node.h> #include <v8.h> Demo de l'espace de noms {utilisant v8 :: functioncallbackinfo; en utilisant v8 :: isolat; en utilisant v8 :: local; en utilisant v8 :: objet; en utilisant v8: string; usol args.getisolate (); args.getReturnValue (). set (string :: newFromUtf8 (isolate, "world"));} void init (local <objet> exports) {node_set_method (exports, "hello", méthode);} node_module (addon, init)} // nom [{"Target_name": "addon", "sources": ["hello.cc"]}]}Commande nœud-gyp
La copie de code est la suivante:
Node-Gyp Configurer la construction
Ce qui précède est la connaissance pertinente de la traduction des addons Node.js (extension C / C ++) présentée par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!