,,,,, Node.js - 127,,,,,,, 23 aandelen,,,,,,, het netwerk van delen van maandag wat in tuts + koers zal dalen tot slechts drie dollar.Niet' niet missen.,, Node.js is geweldig schrijft je achterkant javascript.Maar als je iets niet nodig, die de functie van of niet volledig, zelfs in het gebruik van de modules, maar in een c /C + + in de vorm van bibliotheken, kan gebruiken?Nou, erg genoeg, schrijf je een plug, kan je in de javascript code met behulp van de bibliotheek.Laten we kijken, kan je in de J 's dossier gelezen, is het gemeenschappelijke doel van de « plugin » dynamische banden, kan die lijm C /C + + bibliotheek.Dat betekent dat je kunt bijna alle C /C + + bibliotheek, het creëren van een « plugin », kan je het knooppunt. Js.,, als een voorbeeld, creëren we een standaard, verpakking:: touw.,,,,, voordat we beginnen, schrijven. En je moet zorgen dat je alles wat Je nodig hebt voor de opstelling van de module.- je moet, gips, en de afhankelijkheid van het.Je kan de installatie - gips, gebruik dan de volgende opdracht:,, de installatie - G - NPM, gips, voor afhankelijkheid, UNIX - systeem. Je moet de Python (2.7:,,,, 3 X zal niet werken),,,, C + + de instrumenten (zoals de G MP - of + +), en, bijvoorbeeld, kan je in de 'ubuntu' van het gebruik van deze beschikking het (Python 2.7 had geïnstalleerd): bouw, installatie, pseudo goed, ramen, moet de Python (2.7.3:,,,, 3 X zal niet werken), visuele studio, C + + 2010 (Windows XP /Vista) - de studio, zachte, C + + Bureau ramen 2012 (Windows 7 /8),,, visuele studio Express versie werkt.,,,, binding.gyp, dit dossier is door middel van node gips, zorgt voor de passende structuren.Als je het dossier van de « plugin » ld.Een, gips, dossier. Het dossier kan op hun website te vinden, maar voor ons, deze eenvoudige documenten zal doen:,, ("doelstelling": [{"target_name": "stdstring", "van oorsprong": ["plug - ins. CC", "stdstring. CC"]}]},,, target_name, kan alles worden wat je wilt.De bron van alle bronnen, met inbegrip van. De documenten kunnen worden gebruikt.In ons geval, is er, plug - ins. CC, die zal worden opgenomen die nodig zijn voor de opstelling van de code de plug, stdstring. CC, waarin we de verpakking,,,,, stdstringwrapper, klasse, we beginnen in onze klas, de definitie van documenten stdstring H.De eerste twee regels moeten als je ooit in C + + vertrouwd te zijn met je,stdstring_h #., is de definitie van stdstring_h,, het is een standaard, met inbegrip van de bescherming.We moeten met deze twee rubrieken:,,met inbegrip van < snaren >met inbegrip van < knooppunt. H >,, de eerste en tweede klasse is, std::string, met inbegrip van is - en van alle relevante zaken, V8, na. Zo kunnen we onze klas, stdstringwrapper, verklaard: categorie: openbare -:: objectwrap (,, voor alle klassen, en we hopen dat we, met inbegrip van de « plugin » in, we moeten worden uitgebreid, objectwrap, klasse -::,,, kunnen we nu beginnen met de definitie, privé, onze klas van aard:,, particuliere: std::string s_; duidelijk stdstringwrapper (std::string s = ""); - stdstringwrapper ();,, met uitzondering van fabrikant en verschrikkelijke, we ook de definitie van een aanwijzing, std::string,.Dit is de kern van de technologie kan worden gebruikt voor de lijm, C /C + + bibliotheek - - de definitie van een aanwijzing van de C /C + + en later van de operatie, de aanwijzing in alle methoden, en we hebben aangekondigd,., constructeurs, statische eigenschappen, en dit zal in functie zal creëren we V8:,, verwerking < statische V8:::: - waarde (totaal:% GT% nieuwe V8: het argument & dringt erop);,, zie, V8: voor meer informatie: aanhoudende, printmateriaal.,, en nu hebben we een nieuwe methode voor de,,, wordt toegewezen aan de fabrikant, of, als, - onze klas:,, - statische V8: de behandeling van de nieuwe (totaal::: - argument & dringt erop);,, elke functie V8 zal uitzien: het zou instemmen met een V8: Referentie: het debat over de dst.ECT en terugkeer A, v8:: Handle> v8:: Value>, - dit is, hoe we met een V8 betreft weak-typed javascript als programma in strong-typed C.,, na dat, we hebben twee methoden zal dat zal worden ingevoegd in de aan het prototype van ons, sayid, statische v8:: Handle< v8: Value> Voeg (totaal: v8:: Arguments& dringt erop v8:); statische: Handle< v8:: Value> tostring (totaal: Arguments& dringt erop v8:); de,,, tostring (), zal je die voor ons de waarde van, s_, in plaats van, [Object object], als we het met gebruik van normale javascript strings.,,. We zal hebben voor de initialisatie (dit zal worden door de fabrikant te geven -, en we kunnen de functie). Ook de - -,, statische leegte ervan (v8:: Handle< v8: Object> waarvan:S);}, dat deed #,,, de uitvoer gelijkwaardig zijn, module.exports javascript module,.,,,, stdstring.cc, de documentatie, de fabrikant en de verschrikkelijke,, nu, stdstring.cc, documenten.Ten eerste moeten we ons hoofd, #, met inbegrip van: "stdstring. H", en de definitie van de fabrikant, de eigenschappen, want het is statisch):,, V8:::: de voortdurende < - functionele > stdstringwrapper: fabrikant;, voor onze van de constructeurs worden toegewezen, s_,,, stdstringwrapper eigenschap::: stdstringwrapper (std::string s) {std::string s_ = nieuwe (');}, en de verschrikkelijke, te schrappen, om te voorkomen dat het lek:,, stdstringwrapper:: ~ stdstringwrapper (geschrapt) (s_;}, ook al moet je schrappen, je nieuwe opdracht. Elke keer als een kans, een uitzondering, dus onthoud of het gebruik van gemeenschappelijke punten.,,,,,,,, deze methode zal worden gestart (verdeling van onze klas V8 - motor,Fabrikant, zet alles in. We willen het gebruik van in de uitvoer, het object):,,, nietig STDStringWrapper:: de ondernemers (v8:: Handle< v8:: Object> de uitvoer) (,,, we hebben een functie model creëren voor onze nieuwe, Captain,, v8:: Local< v8:: FunctionTemplate> TPL = v8:: FunctionTemplate:: New (New); dit is soort van als,,, nieuwe functie in staat ons te rijden. - het onze javascript.,, kunnen we dit function's nu een naam als we willen, als je omit dit, je de fabrikant zal anoniem, het zou hebben, de functie someName () {}, versus, functie () {}):,, tpl-> SetClassName (v8:: serie: NewSymbol ("STDString");,, we gebruikt, v8:: serie: NewSymbol (), die creates een speciale soort touw gebruikt voor een van deze namen - SAVEIs de motor van een beetje van dat. En, na. - hoeveel mensen die elk van ons een eerlijk, voorzichtig, will, tpl-> InstanceTemplate (), -> SetInternalFieldCount (2); en we hebben twee methoden - en, voeg (), en, tostring (), en dat we die dit te, 2.,,, nu kunnen we bij onze methoden aan de function's prototype:,, tpl-> PrototypeTemplate () -> set (v8:: serie: NewSymbol ("toevoegen"), v8:: FunctionTemplate:: New (nog) -> GetFunction ()); tpl-> PrototypeTemplate () vastgesteld (v8:: serie -> NewSymbol (": tostring"), v8:: FunctionTemplate:: New (tostring) -> GetFunction ()); dit lijkt als,, de code, maar als je ze die je zal zien, dat we gebruik there: A, tpl-> PrototypeTemplate () (), -> te voegen, die elk van de methods.We houden ook van elk van hen nog een naam (met, v8:: serie: NewSymbol ()) en A, FunctionTemplate,.,, kunnen we eindelijk, zet de fabrikant de fabrikant in de,, eigendom van onze klasse en de uitvoer in de,, sayid, fabrikant, Persistent< v8: = v8:::: Function>: New (tpl-> GetFunction ()); exports-> set (v8:: serie: NewSymbol ("STDString"), de fabrikant);},,, de nieuwe, voor nu, we zullen zien, en van de methode die zal handelen als een Object.prototype.constructor javascript:,,,, v8:: Handle< v8:: Value>; STDStringWrapper:: New (totaal: Arguments& dringt erop v8:) (,, eerste we hebben ruimte creëren voor A - HandleScope toepassingsgebied; v8::,,,, na dat, we kunnen het gebruik van de methode,.IsConstructCall (), sprake van de,, voorwerp te controleren als de fabrikant funcHet nieuwe wachtwoord:,,, als (sprake. Isconstructcall () {, en, indien dit het geval is, laten we eerst de levering van parameters voor, std::string, zoals:,,:::: utf8value V8 - string STR (sprake [0] - > tostring ()); een soa: s (n); en, en, en...Dus, kunnen we het ons door de verpakking van de constructeurs, stdstringwrapper * dst:, = nieuwe stdstringwrapper (s);, na dat wij kunnen gebruiken,. WRAP (), creëren we de methode van de objecten (dit is de erfenis, knoop:: objectwrap,) voor, dat de variabelen:,, De dst - > Pack (sprake. Dit ()); en, tot slot, we kunnen terug, nieuwe objecten:,, terug naar de parameters. Dit (); en, indien de functie niet gebruik, nieuwe, zullen we de constructeur, want dat is het wel.De volgende, zullen we dit argument - create a voor de,, int argc {}) Totaal = 1;,, laten we nu eens kijken naar een installatie wordt met onze v8:: Handle<:,,; v8:: Value> STDStringWrapper:: voeg (totaal: Arguments& dringt erop v8:) (,, en niet Het resultaat van de constructor->, - NewInstance, te scope.Close, dus het doel, en later kan worden gebruikt, scope.Close, basically staat je te houden aan een object door een van de aan het aan de hogere toepassingsgebied - dit is, hoe te werken):,, de terugkeer scope.Close (constructor-> NewInstance (argc, argv));}},,, - aan de,,,, laten we nu eens kijken naar de voor het creëren van toevoegen, die zullen maken je te voegen iets aan de interne, SOA: touw, sayid, van ons, v8:: Handle< v8:: Value> STDStringWrapper:: aDd (totaal V8: argumenten & dringt erop) (,, in de eerste plaats moeten we de oprichting van een bereik van onze functie en de omrekening van het argument, std::string, zoals wij zojuist handlescope bereik, V8,::::::; - Str. (utf8value sprake [0] en GT; tostring) std::string (s); (n); en, nu moeten we het openen van de objecten.Dit de omgekeerde van de verpakking kunnen we deze tijd heeft de eerdere - we will get de punten aan onze object van de,, blijven deze,, STDStringWrapper* dst = ObjectWrap:: Unwrap< STDStringWrapper> (args.This ());,, dan kunnen we s_, de toegang tot de eigendom en het gebruik van de,, voegt (), Captain. En obj-> s_-> voegt (s); ten slotte,,, we de terugkeer van de huidige waarde van de goederen, s_, je scope.Close, met behulp van,,):,, de terugkeer scope.Close (v8:: serie: New (obj-> s_-> c_str ());}, de v8:: serie, nee. Voor: New (), accepts alleen, CHAR punten, zoals a VALUE, we hebben gebruik te s_->, obj->; c_str (), je de,,.,,, - tostring, de laatste methode nodig, die ons zal de voorwerp te JavaScript's te bekeren, touw,,, v8:: Handle<: v8:: Value&;GT; stdstringwrapper tostring (totaal:::: - argument & dringt erop aan dat soortgelijke) (,, voor een, we moeten het toepassingsgebied:,, handlescope V8::;:,,,, open de voorwerpen stdstringwrapper * dst = objectwrap: open < stdstringwrapper > dringt erop aan. Deze ());,, en de terugkeer van s_, eigendom, als, V8:::,, snaren terug. Gesloten (V8:::: de nieuwe reeks (Dst - > s_ - > c_str ());},,,,, we doen het op onze - nog één ding, natuurlijk is het verzamelen en het verband.Het heeft alleen betrekking op de twee bevelen.Ten eerste: de toewijzing van steen, gips,,, dit zal leiden tot de bouw van een passende toewijzing van uw systeem en de verwerker (eigen - en ramen, in, vcxproj,).De opstelling en de bibliotheek, bel gewoon stenen gebouwd:,, pasta, als alles goed gaat, moet je je op de console in zulke dingen zien:,,,,, moet er een , gebouwd, in de « plugin » MAP gemaakt catalogus.,,, testen, nu kunnen we ons testen Plug - ins.Het creëren van een, test.js, in de « plugin » MAP dossier moet worden opgesteld, de bibliotheek (kan worden weggelaten. - uitgebreid):,, var - = nodig hebben ("een /« /gepubliceerd. /"); de volgende,,, creëren we de doelstellingen van de nieuwe voorbeelden:,, var test = nieuwe plug - ins. Stdstring (test);, en het gebruik van doen, zoals het toevoegen of omzetten in een string:,, de test. De toevoeging van ("!")LOGBOEK (inhoud van de tests; de console:% - test);,, die moeten leiden tot een soortgelijke werking op grond van het paneel, na:,,,,, conclusies, en ik hoop dat bij het lezen van deze handleiding, zal je niet langer van je dat het moeilijk is, de bouw en De test op het C /C + + bibliotheek - basis is.Het gebruik van deze technologie kan ik bijna alle C /C + +. Node.js ontspannen.Als je wilt, kan je nog meer taken, creëren we plug - ins.Zijn er veel manieren, seksueel overdraagbare ziekten: touw, je oefenen.,,, nuttige links, kijk onder de Node.js plug - in de ontwikkeling van de informatie - en meer middelen, C - het geval rond de bibliotheek.Is de dossiers,,,,,,, libuv V8 van documenten, (C - gebeurtenissen in github bibliotheek),
- schrijven, schrijven is
Next Page:De generator en ingevoerd; koa.js:1