, het gebruik van gezamenlijke evenementen module,,,,,,,,,, 12, 27 - eenheid,,,,,,,, de delen van het netwerk, maandag wat in tuts + koers zal dalen tot slechts drie dollar.Niet' niet missen. En toen hoorde ik voor het eerst over Node.js, dacht ik dat het gewoon een javascript server.Maar eigenlijk is het veel meer dan dat: het met een ingebouwd, niet in je browser van de gastheer.Een van hen is de functie van de gebeurtenissen van modules met een EventEmitter klasse.We zullen zien, in deze handleiding,,,,, EventEmitter,: hoe en waarom, tot slot, de voordelen van gebeurtenissen: ze is een zeer los van de koppeling van de code, dus samen.,,, EventEmitter, klas?Simpel gezegd, het kan je luisteren naar de "gebeurtenissen", en in de verdeling van deze gebeurtenis.Als je bekend bent met de voorkant javascript, weet je de muis en het toetsenbord gebeurtenissen in bepaalde gebruikers.Dit zijn zeer vergelijkbaar, maar we kunnen in onze eigen zaak, als we willen, en niet op basis van de interactie tussen de gebruikers nodig.Op basis van de beginselen van EventEmitter, bekend als "de uitgeverij /model, omdat we de gebeurtenissen kan onderschrijven en zij worden gepubliceerd.De voorkant van een veel bibliotheek en BAR /steun, maar node hebben het werd opgericht, een andere belangrijke kwestie is: waarom zou je het geval model?- diep in het nest, call - back - alternatief.Veel - methode is asynchroon lopen, betekent dit dat de code na de voltooiing van de in de methode van, je moet door middel van een call - back - overdracht van functies.Uiteindelijk zal de code, je ziet eruit als een enorme krater.Om dit te voorkomen, zal je veel knooppunten van een gebeurtenis kan luisteren.Dit kan je je code, zoals je wilt, maar niet met de auditie.En ten slotte een voordeel: ze is een zeer losse manier, je code koppeling.Een gebeurtenis kan worden vrijgegeven, maar als er geen code, het is goed. Het zal worden genegeerd.Dit betekent dat het publiek (of de gebeurtenissen niet leidt tot emissies) javascript fout.,,,, we beginnen EventEmitter, in haar eigen soort EventEmitter.Het is heel eenvoudig: we moeten de gebeurtenissen van module:, de VAR - gebeurtenissen = ("incident");,, evenementen, object is één van de eigendom, het is EventEmitter soort zelf.Dus, laten we beginnen met een eenvoudig voorbeeld:, de VAR - EventEmitter = ("gebeurtenis"). EventEmitter; var - EE = nieuwe eventemitter (); ee, ("someevent" functies () {console logboek ("gebeurtenis"); de emissie (}); "; someevent"). We beginnen met het creëren van een nieuw doel EventEmitter.Het betreft zijn er twee belangrijke gebeurtenissen: de methode gebruiken we de lancering, en de,,.Ten eerste, we beginnen.Deze aanpak heeft twee parameters: we beginnen en we de naam van de gebeurtenissen: in dit geval is dat, "someevent".Maar natuurlijk, dat is wat je normaal zou een betere keuze.Het tweede argument is gebeurd is een functie.Dit is de oprichting van een gebeurtenis die nodig zijn.En nu, de brand, heb je de naam van een gebeurtenis, zoals de methode, EventEmitter,,.Dit is de code van de laatste regel.Als je de code, je vindt dat we de tekst zijn afdrukken op de console, dit is een van de meest fundamentele gebruik, EventEmitter,.Je kan ook met inbegrip van gegevens, voor geval: EE (". Een nieuwe gebruiker", userobj);,, slechts één parameter, maar je kan zijn wat je wilt.Gebruik ze in je gebeurtenis was om ze als parameter, EE, ("de nieuwe functie van de gebruiker" voor het gebruik van de gegevens (gegevens) {///////hier});, voordat we verder gaan, wil ik duidelijk stellen dat, EventEmitter deel van de functie.We kunnen er meer in elk geval de luisteraar; meer gebeurtenissen luisteraars kan worden toegekend (in alle,,) en alle functies worden genoemd, de gebeurtenissen worden ontslagen.Bij verstek, knopen kunnen worden toegestaan in het geval van een maximum van tien luisteraar, als er meer is - zal worden gecreëerd, een waarschuwing.Maar we kunnen veranderen door dit bedrag, setmaxlisteners,.For example, if you run this, you should see a warning printed out above the output:, ee.on("someEvent", function () { console.log("event 1"); }); ee.on("someEvent", function () { console.log("event 2"); }); ee.on("someEvent", function () { console.log("event 3"); }); ee.on("someEvent", function () { console.log("event 4"); }); ee.on("someEvent", function () { console.log("event 5"); }); ee.on("someEvent", function () { console.log("event 6"); }); ee.on("someEvent", function () { console.log("event 7"); }); ee.on("someEvent", function () { console.log("event 8"); }); ee.on("someEvent", function () { console.log("event 9"); }); ee.on("someEvent", function () { console.log("event 10"); }); Ee, ("someevent" functies () {console logboek ("11");}); ee. (een "someevent"), die het publiek; het maximale aantal, bij dit boven het publiek, ee. Setmaxlisteners (20), als je het niet, je krijgt een; waarschuwing.,, Andere methoden EventEmitter, er zijn andere manieren, je vindt het nuttig EventEmitter.En hier is een leuk een,.Dit is net als in, voor één keer, met uitzondering van het werk.De eerste keer genoemd, het publiek geschrapt. De, ee. Zodra de ("firstconnection" functies () {console logboek ("zie je nooit op dit punt");}); ee. (een "firstconnection"); ee. (een "firstconnection"); als je dit te doen, je ziet alleen het nieuws.De gebeurtenissen van de tweede emissie door geen een luisteraar (ook goed, want, zodra de worden gebruikt, worden geschrapt, worden geschrapt.Als het gaat om de opheffing van het publiek, we kunnen een manier om dit te doen.Ten eerste, we kunnen worden gebruikt, removelistener het schrappen van een luisteraar.Het moet van twee parameters: de naam en functie van de gebeurtenissen van luisteraars.Tot nu toe hebben we het gebruik van anonieme functioneren als we in het publiek.Als we willen dat later kan het schrappen van een luisteraar, het moet een kan verwijzen naar de naam van de functie.We kunnen gebruik maken van dit punt, removelistener, ik herhaal, een methode voor de gevolgen van,, de functie van: een () {console logboek ("zie je nooit op dit punt"); ee. Removelistener ("firstconnection", slechts één keer);} ee, ("firstconnection", een - emissie). ("firstconnection"); ee. (een "firstconnection"); als je dit te doen, vind je het erg als, hetzelfde effect.Als je wil schrappen van alle doelgroepen, gebonden aan een specifiek geval, kun je removealllisteners; alleen door middel van het,, de naam van het evenement:, ee. Removealllisteners ("firstconnection"); de afschaffing van alle gebeurtenissen alle luisteraars, bel de functie geen parameters, ee. Removealllisteners (); en tot slot Een methode, luisteraars.Deze methode voor het geval de naam van een reeks parameters en de terugkeer van alle functies, dit is luisteren naar de gebeurtenissen.Dit is een voorbeeld van, op basis van ons, maar een keer, maar één keer, bijvoorbeeld: functie () {console logboek (EE. Het publiek ("firstconnection"); ee). Removelistener ("firstconnection", slechts één keer); de console log (EE. Het publiek ("firstconnection");} in ee. ("firstconnection", maar een keer een) ee. ("firstconnection"); ee. (een "firstconnection"); een element van, en we zullen dit beëindigen.We branden, in feite twee voorbeelden zelf EventEmitter, eigen evenementen, kunnen we horen: als we het creëren van nieuwe publiek, en een als we ze verwijderen.Kijk hier, EE, ("newlistener" functies (evtname, FN) {console logboek ("een nieuw publiek:" + evtname);}); ee, ("removelistener" functies (evtname) {console logboek (schrappen van "het publiek" + evtname);}); de functie foo () {} ee, ("het behoud van gebruikers",...); - ee. Removelistener ("gebruiker",...); loopt, zie je ons publiek voor een nieuw publiek en het schrappen van het publiek heeft de operatie, en we verwachten bericht.Dus, nu we gezien hebben voor alle gevallen, EventEmitter, laten we zien hoe het werk in verband met andere modules.Sinds EventEmitter interne module,,,, EventEmitter, klasse gewoon javascript, maar ook op andere toepassing van de modules is logisch.In je eigen javascript modules, die kan je voorbeeld, en het gebruik van EventEmitter, ze aan interne zaken.Hoewel het heel eenvoudig.Wat interessant is, is dat het creëren van een module, erfenis, EventEmitter, dus kunnen we gebruik maken van het functioneren van een deel van de API - en ook in de module, doe het.Bijvoorbeeld, misschien ken je, http; dit is de module, ga je het gebruiken voor het creëren van een server.Een voorbeeld van een methode voor de EventEmitter,,,,,,, http.server, deel var http = ("http"); var = http server. Createserver (); de server ("het verzoek", de functie van zijn res.end (RES) {"is het antwoord");}); (30); de server. Luister, als je de code van het verzoek, wacht. Je kan gaan, HTTP://lokale: 3000, je krijgt antwoord.Als voorbeeld van de server te verzoeken uw Navigator, stuurt het een "verzoek", een gebeurtenis, een gebeurtenis, ons publiek zal kunnen optreden, dus hoe gaan we het creëren van een klasse, geërfd van EventEmitter,,???????Dat was niet zo moeilijk.We creëren een eenvoudige, van de lijst van categorieën gebruikers, het object.Dus, in een, userlist.js, documenten, laten we beginnen met: - = nodig, (de "instrumenten"); var EventEmitter = ("gebeurtenis"). EventEmitter; we moeten gebruik maken van modules en de erfenis,,, te helpen.De volgende stap, we hebben een database, in plaats van gebruik te maken van een echte databank, hoewel we alleen met behulp van een object: var id = 1; var, de database = {gebruikers: [{nummer: nummer + +, naam: "Joe Smith" beroep: "projectontwikkelaar"} {nummer: nummer + +, naam: "anoniem", de "data - analist"} {nummer: + + nummer, naam: "Henry". Beroep: "designer"}]}; en nu, creëren we de module.Als je niet vertrouwd zijn met de module, dit is hoe het werkt: een javascript schrijven we in dit dossier is onleesbaar, interne documenten, bij verstek.Als we willen dat het een van de gemeenschappelijke interface module, we maken een eigenschap van een module, de produktie of de toewijzing van een nieuwe voorwerpen of functionele module.Laten we dit doen: de lijst van functies () {EventEmitter. Tel. (de);}, dit is de fabrikant, maar dat is niet je gebruikelijke javascript aannemer.Wat doen we hier, de telefoon, de fabrikant, EventEmitter methoden, die in de nieuwe, de lijst, de methode, de voorwerp (en).Als we de andere zullen het voorwerp moeten doen, kunnen we het binnen doen functioneren, maar dit is alles wat we doen, de erfenis van de fabrikant is niet genoeg, maar we moeten ook de erfenis van het prototype.Het is waar, voor de module.(de lijst van de gebruikers, voor. De erfenis, zal dit een verhoging van EventEmitter);, alles op, eventemitter.prototype, de lijst van de gebruikers. Het prototype, nu we de lijst van gebruikers, het geval zal zijn voor alle EventEmitter, bijvoorbeeld.Maar we hebben nog een paar, natuurlijk.Zullen we nog een, de wijze van bewaring, kunnen we het toevoegen van nieuwe gebruikers, userlist.prototype.save = functie (DST) {obj.id = identiteit + +; gebruikers van de databank (Dst. Op een ("); het behoud van de gebruiker", de DST);}; deze methode een object nodig om ons te redden, een databank "het is toegenomen,: een id, en zet het in de generator.En dan geeft het, "het redden van de gebruiker", het geval, en door middel van de gegevens van een object.Als dit een echte databank voor het behoud van het mogelijk is een asynchrone taak, dit betekent dat de registratie en het behoud van het werk, we moeten aanvaarden dat een auditie.Een andere methode is de afgifte van een gebeurtenis, omdat we aan het doen zijn.Nu, als we willen dat de gegevens met behoud van te doen, kunnen we alleen maar luisteren naar deze gebeurtenissen.We zullen in een paar seconden om het te doen.Laten we de lijst gesloten, gebruikers,, userlist.prototype.all = functie () {terug database.users;}; module.exports = de lijst van de gebruikers; de, ik voeg een methode: een terugkeer van alle gebruikers.En dan, onze opdracht, de lijst van de module,,., laten we nu zien in gebruik; in een ander document, is zeggen dat de tests.Lijst van de gebruikers toe te voegen: var = nodig hebben ("/lijst van gebruikers"); var = nieuwe gebruikers userlist (); de gebruikers. In de ("gebruiker" functies (gebruikers) {console logboek ("red" + user.name + "(" + User.ID + ")");}); het behoud van de gebruikers. ({naam: "anoniem", de: "manager"}); de gebruikers. Red ({naam: "Jacob" beroep: "projectontwikkelaar"}); na de nieuwe module nodig hebben, en een voorbeeld van het, wij luisteren, "gebruiker" incident.Dan kunnen we verder gaan en het redden van een aantal gebruikers.Als we dit, zal je zien dat we 2 nieuws, het drukken van de registratie van de naam, we redden en identiteitskaarten, red: Jan Ministerie van energie van de Verenigde Staten (4): (5) behoud van Jacob, natuurlijk, dit kan werken op andere manieren: we kunnen gebruiken, in onze klassen en De interne of de methode.Maar dit is een goed voorbeeld, dat kan worden bereikt. De conclusies van dit,,, -, EventEmitter werkt.Hieronder vindt u de documenten in verband met de knooppunten van de dingen waar we het over gehad hebben.- het geval van module,,, - module, de bron - dat we een proxy -, met de erfenis.