, introduktion til generatorer og koa.js: del 1,,,,, 63,,,,,,,,, 22,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss. denne post er en del af en serie, "introduktion til generatorer & koa.js.introduction til generatorer & koa.js: 2, koa.js er et udtryk for næste generation af net ramme skrevet til node.js af folkene bag den udtrykkelige og forbinde rammer.koa.js udnytter generatorer, som er et blødende kant præget af javascript og er endnu ikke blevet til en stabil versioner af node.js.koa sigter mod at anvende generatorer til at redde udviklere af spaghetti på callbacks, som gør det mindre fejl udsat og dermed mere overskuelige.,,, med 550 linjer kode, koa er en meget lys rammer.selv efter, at koa pakninger i en stor suite af metoder som indhold, forhandling, redirections: indirekte støtte osv. giver dig lette og hurtige udvikling sammen med granuleret kontrol over din node anvendelse.,, at installere node, nu, inden vi går i gang, skal du have mindst node version, 11). eller mere, kan du installere den seneste version af node ved hjælp af n - modul:,, sudo new public management installere - g n sudo n stabil, kan man også anvende andre ef - moduler, som nvm eller bygge det fra kilden.bemærk venligst, at n er også et fælles modul.,, at køre en det dossier, som gør brug af generatorer, du er nødt til at give, - - harmoni, flag, når du løber., f.eks. til at løbe, app. js, ind i følgende kommando:,, node... harmoni app. js, eller for at redde dig selv ind i dette flag, hver gang, du kan skabe et alias, ved anvendelse af følgende kommando:,, alias node = "knudepunkt - harmony", nu til at styre deres anvendelse ved hjælp af generatorer, bare ind:,, node app.js, meget godt!også huske på, at alle koden i denne artikel er tilgængelig på github.det er gratis at gaffel og leger med det. nu forstår koa, må man forstå, generatorer, som udgør rygraden i den ramme,.,,,,, hvad der er en nødgenerator?,,, med es-6, generatorer har omsider landede i den magiske land af javascript.hvis du ikke har tidligere erfaring med elproducenter i ere, slange, ordning, smalltalk osv., så vil du blive glad for at høre, at en meget lignende ting er blevet gennemført i javascript. ,, generatorer er første klasse med rutiner i javascript som enkelt, indfører en pause og spille grænseflade i sprog.for generatorer, hele manuskriptet, der anvendes til at udføre , normalt i en top til bund, for uden en let måde at stoppe kode gennemførelse og genoptage med samme stak senere. nu, lad os få fat i nogle eksempler, som det nuværende udkast es-6 specifikation, skal vi bruge en anden version. for at skabe en generator funktion definition funktion.det ser sådan ud:,, var generator_func = funktion * () {}, her , generator_func, er bare en tom generator funktion.,, så vi kan bruge den, udbytte, nøgleord i den funktion at standse henrettelsen og redde den nuværende stak.,, her er en simpel eksempel viser summen af en uendelig ap:,, var f = 3; funktion * infinite_ap (a) (for (;) (= a + r; giver en;}} var beløb = infinite_ap (5); - konsollen. log (sum. next()); //afkast (værdi: 8. gjort: falske} konsol. log (sum. next()); //afkast (værdi: 11, gjort: falske}, i ovennævnte kode, vi i første omgang skabe en iterator instans ved navn, infinite_ap, som omfatter en sløjfe, og hvis drift under normale betingelser, kan fastfryse execution.,, det næste butik et iterator instans i summen, variable.,, når vi kalder, sum. next(), det vender tilbage, (værdi: 8, gjort: falske}, hvilket betyder, at det er holdt op med at dets gennemførelse på, udbytte, erklæring tilbage, værdi, som en ", og gjort, som" falske ".,,,, returnerer falske indtil henrettelsen er færdigt.Once the execution is complete (in the aforementioned case, it never happens) the function returns ,{value: undefined, done: true}, ., ,Here is a small modification of the previous code to demonstrate the end of execution:,,var r = 3; function* infinite_ap(a) { for( var i = 0; i < 3; i++) { a = a + r; yield a; } } var sum = infinite_ap(5); console.log(sum.next()); //returns { value : 8, done : false } console.log(sum.next()); //returns { value : 11, done: false } console.log(sum.next()); //returns { value : 14, done: false } console.log(sum.next()); //return { value: undefined, done: true } , ,In more complex programs, you would check and use the values returned and the ,done, status., note: ved hjælp af,,, udbytte, uden funktion *, vil føre til en snarlig fejl.,,, der er til rådighed, generatorer metoder, her er nogle fælles metoder, der vil komme i handy, når man har at gøre med vanilje generatorer, hver af metoderne nedenfor er kun til rådighed i en generator funktion og ville smide en fejl ellers next().,,,,,,,, det er anvendes til at genoptage udførelsen og passerer et argument.hvis der ikke er vedtaget, så ikke bliver vedtaget, som det første argument,.,, f.eks.:, sum. næste (5);,,,,, throw(),,,, det er vant til at smide en fejl eller en undtagelse på alle trin.det gør fejlhåndtering meget lettere.- en fejl kan resultere i, at gennemførelsen af den fil, hvis det ikke er behandlet, et eller andet sted.den nemmeste måde at håndtere en fejl ved at anvende og prøve at fange erklæring.denne metode tager ét argument, som kan være hvad som helst.,, f.eks.: , sum. smid (nye fejl ("det er en fejl"), ,,,,,,,,, at uddelegere, udbytte,,,, generator delegation bruges til at give en generator fra inden for en eksisterende generator og kan bruges til at komponere generatorer eller endog iterate over en generator,.,, om delegering til en generator, den nuværende generator ophører med at producere en værdi i sig selv og begynder at give værdier af de delegerede generator, indtil det er opbrugt.efter udtømning af de delegerede generator, generatoren genoptager vender tilbage til sin egen værdi. det er meget som at bruge en, i loop over en generator, men nogle af de delegerede generator er dyrket og smidt via de ydre generator, kaste, metode og bør behandles på samme måde.her er et eksempel:,, var consolelogthunk = funktion (msg) {tilbage function() (konsol. log (msg)}} var generator = funktion * () (udbytte consolelogthunk ("yo"), udbytte consolelogthunk ("kammerat"), udbytte consolelogthunk ("!! ");) var delegator_function = funktion * () (udbytte consolelogthunk ("jeg gav efter for delegerede udbytte"); udbytte * generator(), udbytte consolelogthunk ("jeg gav efter delegerede udbytte");} var k = delegator_function(); k. next(). value(); k. next(). value(); k. next(). value(); konsol. log (k. next()); //hvis du kalder k. next(), det vil kaste en type fejl, hvis værdi er defineret som ikke er en funktion, nu, at du har en kort forståelse af generatorer i javascript, du kan bruge dem til at skrive meget tydeligere og mindre fejl har anvendelser, hvor du kan blokere den i /o, uden en blokering af processen. , lad os nu videre til montering af koa og en meget enkel anvendelse på grundlag af koa. js,.,, koa. js:,,, koa er et objekt, der indeholder en bred vifte af middleware generator funktioner, som alle er sammensat og udføres på en stak ligesom måde på hver anmodning.,,, installation af koa,,, i deres projekt, fortegnelse, udføre følgende kommando.,, new public management installere koa - red, koa automatisk downloades og reddede en, package.json, fil, hvis den findes, på trods af koa er meget små fodaftryk, der omfatter metoder til opgaver, som lager friskhed, indhold, forhandling, redirections: indirekte støtte osv. med middleware bundtet.,, her er et eksempel - verden anvendelse:,, var koa = kræver ('koa) var app = koa(); app. brug (funktion * () (this.body = "hej verden!! "; '); ca. hør (3);,, koa kontrol strøm, nu, , koa også gennemfører downstreaming efterfulgt af upstreaming kontrol strøm.først, det kan være svært at gisper, men når du går gennem nedenstående eksempel, bliver det klarere.,, her er et eksempel på kontrol strøm i koa:,, var koa = kræver ('koa ') (); koa. brug (funktion * () (//gør noget før fremstilling /passage til næste generator funktion i linje, som vil være første arrangement i downstream - konsollen. log (""); give næste; //gøre noget, når gennemførelsen tilbage tidligere, vil dette være sidste begivenhed i opstrøms konsol. log ("b");}); koa. brug (funktion * (næste) (//gør noget før fremstilling /at gå videre til næste generator funktion i overensstemmelse, skal dette andet tilfælde downstream - konsollen. log ("c") giver næste; //gøre noget, når gennemførelsen afkast opstrøms og det.d anden begivenhed opstrøms konsol. log ("d");}); koa. brug (funktion * () (//gør noget før fremstilling /passage til næste generator funktion i køen.her ville det være sidste funktion downstream - konsollen. log ("e"); this.body = "hej" konsol. log ("f"); //første tilfælde af leverandører (fra den sidste første)}); koa. hør (3), koden er ret enkelt.bemærk, at ikke alle, console.log, erklæringer, er nødvendige, men de vil hjælpe dig med at forstå det før og efter gennemførelsen strøm af koa.js.,, forståelse af eksempler henrettelse flow ", når vi kører denne ansøgning og åbne, localhost: 3000 i browseren, kan vi konstatere, at , console.logs i terminalen er ikke i orden, a-b-c-d-e-f,.de er heller ikke i den rækkefølge, a-c-e-b-d-f,.,, for faktisk er, a-c-e-f-d-b, som viser nedstrøms for udbyttet og tidligere opførsel af gennemførelsen i et koa - app.,,, du ville lægge mærke til, at det er trykt to gange.det er på grund af en dobbelt anmodning sendes af den - for at hente favicon.,,,,, tip: , koa. brug (funktion), tilføjer middleware funktion til anvendelsen.,,, så er det en del af denne forelæsning om javascript generatorer og koa.js.du har lært om de fleste af de forudsætninger, såsom hvad elværkerne er, hvordan de skal bruge dem, hvordan man bruger uddelegering af udbytte, og hvor kontrol strøm fungerer i koa. det, i den næste del af denne forelæsning, vi vil dykke dybere ned i koa og lære at opbygge et æsel anvendelse.hvis du har spørgsmål eller kommentarer, er du velkommen til at kontakte mig, eller bare en bemærkning nedenfor. ,
indledning til generatorer & koa.js: del 1
Previous:skriftlig node.js addons