>> Oke dus we zijn terug, een paar doelen voor vandaag,
we halen waar we vorige keer gebleven,
herinneren dat we waardoor deze opeenvolging
van server gerelateerde toepassingen, super eenvoudig, maar met behulp van knooppunt JS
en dan ook nog het meest recent met behulp van express aanraking AS
en wat werd uitgedrukt JS de analoog van in de PHP wereld.
Express is zo meer ... sluiten,
dus express is in wezen de MBC kader dat is vrij
populair in het knooppunt js wereld,
Boekenplank die we zullen zien vandaag via Tim is een analoog
van de welsprekende dat is een ORM op een object relatie mapper
die eigenlijk gemakkelijker te laag niveau SQL-code te vermijden
en eigenlijk uitdrukken relaties tussen verschillende objecten.
Dus een van de coolste dingen op een eerlijke
over knooppunt js is gewoon hoe gemakkelijk leent het zich
tot het doen van real-time toepassingen, dingen zoals chat servers
of messaging servers, alles wat jullie nu gebruiken
zoals Google ... G-praatje of Google hangout
of Facebook status updates of zelfs Twitter als u
op hun webpagina alles is een soort van real-time
of geeft u de illusie van real time
en dat is eigenlijk een pijn in de nek te doen met iets
zoals PHP en mijn SQL rechts wat hebben wij voorstellen
op maandag de middelen zou zijn
door waardoor u de uitvoering van de illusie van real time gedrag
met een chat-server in PHP, wat zou je dan doen?
Alice stuurt een bericht, raakt betreden waar gaat het naartoe?
Yeah.
>> [Onhoorbaar section]
>> In een databank en vervolgens wat doet Bob's browser
te doen om daadwerkelijk te zien wat Alice heeft gezegd, ja?
>> [Onhoorbaar section]
>> Houd polling de data base, Oke, dus een ajax verzoek heeft
elke seconde schieten, om de paar seconden of we kort gesproken
maar niet kijken naar een voorbeeld van iets genaamd lange polling,
iedereen herinneren hoe
dat mechanisme ... op een hoog niveau werkt?
>> [Onhoorbaar section]
>> Precies, ja dus een browser maakt nog steeds een ajax verzoek
met een server, om een ​​foo dot php maar foo dot php net lijkt
hangen, het in wezen ligt in een while-lus voor zoveel
30 seconden typisch en slechts eenmaal de foo dot php-bestand
realiseert oh er is een nieuwe rij
in de data base doet het eigenlijk reageren
met een http reageren.
Dus jij denkt dat dit zou kunnen anders de server hangen
en het doet tot op zekere hoogte
maar het betekent dat er veel minder overhead
omdat je niet een nieuwe tcp nodig verbinding, een nieuwe verbinding htp
eigenlijk vragen gegevens van de server.
Maar knooppunt js geleverd met een zeer populaire bibliotheek genaamd socket
dot io die je kon nooit gebruikt is gebouwd op de top
van een technologie genaamd web socket die aanwezig is
in de meeste moderne browsers en wat socket io doet is je laat
in wezen creëren een permanente verbinding
tussen browser en server dat is een zeer lage overhead
zodat je per se niet hebben dezelfde schalingsproblemen
dat je zou als je constant raken van de server
in de wereld van PHP en mijn SQL en dergelijke.
Zelfs voor oudere browsers
dat niet ondersteunen web socket deze bibliotheek socket dot io kan
terugvallen op knippert uitvoering van stopcontacten
en stopcontacten is een netwerk ding van CS143 bijvoorbeeld.
Of het kan ook terugvallen op lange polling zelf, zodat zij uitvoeren
die hetzelfde soort werk
rond daadwerkelijk handhaven de illusie van die verbinding.
Dus socket [onverstaanbaar] io en dit in de vorm
van een java script bibliotheek, wezen als je het gebruikt
in de vorm van een knooppunt js toepassing die u niet alleen installeren
het als een pakket met behulp van iets zoals NPM die we gebruikten op maandag
en of u ook een strip-tag in uw HTML-bestand
dat zegt gebruik maken van de client-side library.
Dus er is twee helften te en wat we hier hebben gedaan
in de vierde iteratie van maandag opeenvolging
voorbeelden is de volgende.
Dus dit bestand structuur doet denken aan een zeer gemeenschappelijke set
voor uitgedrukt js en gelukkig is het veel eenvoudiger
dan lervo [fonetisch] werd, herinneren wanneer u
up lervo je hebt een enorme nare dumpen van een heleboel bestanden,
vendor directories, lib en zeer zwaar gewicht in vergelijking met deze.
Nu in alle eerlijkheid hebben we gestript weg spul dat is vrij veel een
afleiding maar alle sappige spul is echt
in knoop modules.
Gewoon om je geven een voorproefje als we kijken
bij knooppunt modules is er twee modules of bibliotheken
die ik heb gedownload, dit zou het equivalent zijn
van de directory leverancier, een wordt uitdrukkelijk genoemd die
zoals larevel maar in knooppunt
en socket io de degene die ik zojuist noemde.
Dus deze bestaan, zodat we kunnen het volgende doen als ik open
up laten we zeggen index dot html, laten we eerst eens kijken naar de html,
dit gaat componeren dit lichaam, mijn super,
super eenvoudige chatserver.
Dus er is blijkbaar een ul met een uniek idee berichten
en dat is waar een li in een tijd,
alle onmiddellijke berichten zal verschijnen tussen Alice
en Bob en dan is er een eenvoudige vorm met een tekstveld
en een submit knop waarbij Alice
of Bob kan eigenlijk elkaar berichten sturen.
Zodat het netto-effect als Ik deze toepassing uit te voeren
door het doen van knooppunt ruimte app dot js, als ik trek een paar
van browservensters is dat Alice zou kunnen zijn aan de rechterkant,
Bob zou kunnen worden op de links en net
duidelijk zijn dat er geen magische hier heb ik een venster kreeg
in incognito dus er is geen delen van cookies of iets
als dit, deze zijn twee verschillende gebruikers.
Ik moet in staat zijn om Alice hebben zeg hallo Bob, klik op verzenden
en nu zie je aan de linkerkant dat Alice bericht is verzonden
en bijna ogenblikkelijk aan de rechterkant.
Polling niet schijnbaar betrokken, Bob kreeg dezelfde boodschap.
Nu Bob zegt zeggen hey Alice zie je het tegenovergestelde effect.
Dus wat er werkelijk aan de hand, hoe veel code hebben we nodig om te schrijven
ter uitvoering van deze een chatserver
die u kunt nu extrapoleren mentaal dat iedereen
in deze kamer als dit waren niet op mijn [onverstaanbaar]
maar op foo dot com we konden alle beginnen met chatten ogenblikkelijk
met elkaar.
Dus wat is betrokken en voordat ik duidelijk dit scherm is dit
is gewoon socket io wordt een beetje luidruchtig, het is gewoon afdrukken
out debugging informatie naar het scherm,
er is echt niets anders aan de hand daar.
Dus laat me openstellen app dot js, dus als voordat we een paar dingen hebt
aan het begin van het bestand.
Een bos van eisen, zodat deze zijn zoals bibliotheken
of scherper aanwijzingen of eisen onces wat mentale model dat u
willen gewoon en samen te vatten FS wordt gebruikt
voor wat voor soort functionaliteit?
Dus bestanden systeem, zodat het lezen van bestanden potentieel en dat soort dingen
en ik gebruik deze in een plaatsen zoals u zult zien,
uitdrukkelijke natuurlijk is dit kader dat we gebruiken,
het is ten strengste niet noodzakelijk we konden
zoals op maandag helemaal maken onze eigen http server van kras
door dit te doen creëren server en alle van dat soort code van voor
maar zoals we zullen zien dit maakt dingen een beetje makkelijker
want alles wat ik moet doen is op lijn 3 hier instantiëren
en express object, bel ik het app, enigszins arbitrair,
Ik zal dan vertellen de app luisteren op willekeurig poort 1337,
die kunnen worden 80 volgens afspraak
en dan tot slot heb ik een nieuwe lijn van vandaag, die zegt
aan het stopcontact nodig io bibliotheek en vervolgens
door deze ketenaanpak zou deze operator punt ben ik gewoon
bellen naar een les luisteren dat is wezen vertellen het stopcontact
io bibliotheek ook luisteren naar dezelfde server
of web socketverbindingen.
Dus wat nu, dus wat is Daarbij deze vier lijnen
van hier code die moet kijk die doet denken aan larevel,
wat betekent dit voor?
>> [Onhoorbaar section]
>> Dit is een ... route, net een route dus in app dot js,
aka server dot js afhankelijk op wat mensen willen noemen
in hun eigen applicaties je hebt een conventie
van het doen van het definiëren van uw routes,
app dot get betekent dat wanneer krijg je een GET-verzoek om te gaan
om voor letterlijk slash ga je gang en noemen dit anonieme functie
en anonieme functie dit geval neemt door eis
of vraag en antwoord, mogelijk een aantal andere dingen
maar minimaal deze twee.
Het verzoek geeft u toegang om dingen zoals http parameters
en headers en andere sappige dingen
en vervolgens de respons is het mechanisme
waarmee je kunt reageren op de gebruiker.
Dus dit is super eenvoudig, zelfs hoewel we niet zien helemaal de
dezelfde code vorige keer, ik ben met behulp van het bestandssysteem modules,
creëren read stroom methode die doet in wezen dat,
maak een lees beek die betekent in wezen beginnen slurpen
de bytes uit de index dot zo efficiënt als je kan html
zonder af te wachten tot je leest de volledige bestand
en als je dat doet pijp hen letterlijk
in de verticale balk zin als u tevreden bent
met de Linux command line,
pijp aan de respons van het object.
Dus waren er twee voorbeelden verband met streams op maandag,
we alleen gekeken naar een, maar u bent welkom om terug te kijken bent
op stroom o en stream 1.
Stream 1 ... 0 deed iets dergelijks als dit,
stroom 1 deed iets dit bijna net zoals,
dit is gewoon een gladde one-liner van de soort te zeggen
iets van slurp in meer dan hier en dan beginnen met het verzenden hier
tegelijkertijd zonder het doen van een massa mee eens
en vervolgens een enorme recht,
deze benadering algemeen efficiënter.
Dus dat is een soort van oude spullen zelfs als het nieuw was op maandag,
dit is alles wat er nodig is om implementeren van een chat-server
met knooppunt js en meer specifiek socket dot io.
Dus hoe werkt dit, laat me gaan het een beetje,
dus io is gewoon een variabele die verwijst
de module we eerder nodig,
dot socket is gewoon een woning binnen van het
dat geeft me socket gerelateerde functionaliteit
op een gebruikelijke methode die heeft betrekking op wat algemeen begrip?
Een evenement enzovoort aka luisteren sommige bibliotheken het betekent gewoon
bij het horen van dit evenement welke verbinding wordt genoemd
en nu dit weet je alleen van kijken naar de documentatie
Wie schreef de bibliotheek een evenement genaamd gedefinieerd
verbinding die reageert wat je zou denken
wanneer Alice of Bob verbindt.
Ga je gang en noemen dit anonieme functie take passeren
in een betoog van de cliënt die blijkbaar een soort
object dat vertegenwoordigt Verbinding Alice
of aansluiting Bob's of Charlie of iemand anders
en nu doen we het volgende.
We vertellen de cliënt na hij is aangesloten
specifiek luisteren
voor een bericht dat is helemaal willekeurig genoemd bericht
colon client.
Dit is iets dat Tim en Ik kwam met, het kan foo zijn
of de bar, het is slechts enkele unieke string die we nodig hadden
om op te beslissen als de ontwikkelaars.
Wanneer Alice of Bob hoort
dat geval is deze anonieme functie moet worden aangeroepen
en de gegevens, de inhoud van Alice
of Bob's boodschap zou moeten zijn overgegaan in deze event handler
en nu wat moet de client doen goed je kunt soort
van lezen dit vrij intuïtief de klant moet uitzenden,
ook wel bekend als een emit bericht genaamd methode server
waardoor dit bericht betekenende is afkomstig van de server niet
vanuit de browser en welke zou die boodschap zijn,
het is blijkbaar de lading uit ongeacht van de cliënten kwam
en we gaan gewoon willekeurig noemen het bericht.
Dus veel van dit arbitrair
door redelijke naamgeving conventies, Tim en ik kwam
met, vooral Tim en toen we gewoon uiteindelijk tot een
chatten server die wat doet, wanneer Alice stuurt een bericht
en klappen voer welke gebeurtenis blijkbaar wordt ontslagen,
gewoon om samen te vatten.
Alice typen van een bericht, klappen invoert, wordt bericht cliënt ontslagen,
deze code hoort dat en nu de server uitzendt wat,
wat is het eindresultaat van dit echt?
Alice stuurt de boodschap nu de server stuurt die door
effectief voor iedereen, behalve voor Alice, waarom iedereen behalve
voor Alice als je gewoon kijkt
bij de documentatie cliënt dot dot uitzending toegeven,
letterlijk doet dat, zendt het bericht
iedereen behalve de client die u gezonden
dat de meest recente bericht.
Dus dit is de reden waarom alleen jij zie het een keer aan elke kant,
je niet ziet zowel Alice en Bob krijgt Alice's boodschap.
Dus dat is het, dit is een doorgeven middel
als u dat gewoon in berichten
en heruitzending ze uit
en het is opmerkelijk schaalbare Ik bedoel zelfs
met een super eenvoudig server en een paar regels
van code kon je zeker handvat honderden, zo niet duizenden
gelijktijdige eenvoudige boodschappen heen en weer als dit
en stel je de complexiteit dit nu doen in PHD
of Larevel of mijn SQL en hoeveel code je zou hebben
te schrijven om daadwerkelijk te realiseren dat.
Nu in alle eerlijkheid deze is niet persistent recht
als de server down gaat verliezen we de hele geschiedenis
dus het is niet helemaal een perfecte vertaling, maar het is
die recht naar voren.
Laten we eens kijken naar de Java-script code die we overgeslagen eerder,
Dit is Alice en Bob's cliënt,
de webpagina ze nu met behulp van laten we eens kijken hier voor een moment.
Er is een beetje meer code
maar het is vrijwel alleen jQuery hier dus mededeling
die in de web pagina dat trok ik
up een moment geleden hebben we zijn de jQuery bibliotheek,
het stopcontact io bibliotheek en als Terzijde merkt het verschil
hier, slash slash op het begin van een pad
deze trant betekent wat precies,
waar is jQuery dot js op welke server?
Yeah.
>> [Onhoorbaar section]
>> Het is op het internet ja letterlijk genoemd code dot jQuery
dot com dus waarom slash, slash, waarom niet gewoon een slash,
waar is de http of de dikke darm, wat betekent dit in het algemeen
als je slash slash op het begin van de url?
Het is eigenlijk nuttig.
Oke, dus wat is uiteraard ontbrekende http nu als we reden
door dit logisch, meestal je niet nodig hebt
een servers namen recht noemen
als als gewoon gebruik slash jQuery dot js wat wordt verondersteld
door de browser?
Dat het bestand op dezelfde server zo blijven dat soort
van de logica als je niet vertellen het welk protocol wat is de
browser te nemen, hetzelfde protocol zo als je ooit bezochte websites
dat u een foutmelding geven langs de lijnen van onveilige inhoud
Op deze pagina is het omdat iemand heeft hard gecodeerd een http
colon slash slash URL voor een afbeelding of een Java-script bestand
of CSS-bestand, zoiets in de broncode van de pagina
maar de pagina zelf in de browsers URL is http s.
Dus dit is gewoon de fancy manier
van te zeggen ik weet het niet wat het protocol is
dat deze eindgebruikers gaat gebruiken
maar zorg ervoor dat het wedstrijden zodat chroom
en andere browsers niet schreeuwen tegen de gebruiker.
De enige vangst wordt de jQuery mensen hadden betere set
up https op hun server.
Dus ze zijn eigenlijk notering op 443.
Oke ondertussen deze men hier dit soort
misleidende slash socket io suggereert
dat er een map met de naam socket dot io op mijn server
maar er is niet of we porren
rond is er de directory knooppunt module
maar er is niets publiek over deze,
toen we socket io geconfigureerd dezelfde poorten luisteren
1337 wezen die bibliotheek dat iemand anders geschreven is gaan
om een ​​soort van in te voegen wat code in knooppunt js milieu
en luister naar dit pad.
Die bibliotheek heeft net een route voor deze configuratie,
het is niet een echte directory.
Het zou in een zijn standaard locatie.
Oke, dus nu de interessante deel,
dus wanneer het document is klaar zoals aangegeven
door deze jQuery bouwen, Eerst ga ik om verder te gaan
en aansluiten op een stopcontact,
wat socket gewoon door ... keep it simpel ik ga verbinden
slash, dat is waar de gebruiker is,
Ik heb het voorbeeld eenvoudig gehouden we gaan gewoon aan te sluiten
exact dezelfde URL waarnaar gebruiker heeft bezocht daarna ga ik
het volgende doen, ik ga vertel browser Alice of Bob's
het luisteren bericht van de server.
Ook dit kan foo geweest
of bar wanneer u hoort een boodschap
van de server noemen het data en doe dan dit jQuery code
die ik gok de meeste, zo niet iedereen is vertrouwd
met deze dagen, maar in wezen een pin naar de lijst post
de bestaande UL die werd berichten genoemd
dat letterlijk zegt ongeacht de lading is
van het chatbericht gevolgd door een koppelteken, gevolgd door ontvangen,
gevolgd door een spatie en vervolgens een update tijd en dat is waarom
duidelijk te zijn als we terug gaan
deze krijg je deze extra kogels opnieuw en opnieuw
weer met datum tijd.
Ondertussen als we kijken neer hier hebben we net
aan het indienen van formulieren verwerken dus dat was de ontvangende
van een instant message, hier is het verzenden en dit is een soort
van niet verwant aan knooppunt js, luisteren om de formulieren in te dienen evenement.
Als het gebeurt default te voorkomen, dit betekent gewoon ook niet te verstrekken
de server op de gebruikelijke manier, herlaad de hele pagina,
we willen dit alles doen via ajax.
Hier is slechts enkele jQuery codes
om daadwerkelijk te krijgen van de ingang waarvan het type bericht,
wiens naam wordt bericht ga je gang
en krijgt zijn waarde dan ga je je gang
en als je eigenlijk een bericht, als Alice en Bob
of Bob eigenlijk kunnen sommige none 0 aantal toetsaanslagen uit te stoten
op de bus een bericht genoemd messaging client met die lading
en dan hier beneden is dit wat maakt het groen, in tegenstelling
naar rood, we gewoon uitgang apparaat kant [onverstaanbaar].
Dus dat is het, maar alle dit is gewoon de set-up,
de echte nieuwe dingen die ik zou doen argumenteren is gewoon deze drie
of vijf regels code hier en dat soort hints in de kracht
van knooppunt js en daarmee dit bibliotheek.
Dus laten we eens een snelle kijk op uitdrukkelijk dot js,
dus wat ik ga proberen te doen in de resterende paar
minuten hier is het opzetten van een weinig idee, een paar technieken
dat zal dan een paar minuten pauze, zal Tim opgezet
en dan gaan we duiken in diepere
een interessantere uitdrukkelijke aanvraag en ook
naar boekenplank, de bibliotheek Tim schreef zelfs
voor de open source gemeenschap
dat geeft ons welsprekende licht functionaliteit met mijn SQL
en transacties en andere dergelijke functies en hij zal ook duiken
in een beetje dieper de Java script zelf,
hoe zij tot doel of non-klasse model werkt anders weten
als prototype, wat meer op die te komen.
Dus laten we eens een kijkje nemen op twee laatste toepassingen hier, server vijf
en de server 6, die allemaal soort in dezelfde geest,
deze zijn niet servers chatten maar ze gebruiken express.
Dus laten we eens een kijkje nemen op wat dit eigenlijk doet,
Ik ga om te gaan en geopend ... Ik ga deze app draaien
met knooppunt app js, ik ga ga terug naar mijn browser en herladen
en dit is blijkbaar al deze server doet,
het is een super eenvoudige server dat is blijkbaar een zoekopdracht
motor dus als ik typ in foo en dienen, geen zoekresultaten
voor foo, heb ik niet rond te krijgen om de uitvoering van de geavanceerde
back-end, alle het gaat
te doen is echo ongeacht wat je geen resultaten typt voor foo,
geen resultaten voor bar Dus hoe kunnen we dit doen
want er is een paar stukken, een,
er is duidelijk wat ingangen voorzien
naar de server niet Larevel natuurlijk, maar het knooppunt js nu
dus moeten we een of andere manier krijgen op dat Q-parameter,
we duidelijk doen een soort van uitzicht hier,
we zijn het renderen van een uitzicht, dus misschien is er een kans
voor sjablonen of variabele interprelation [fonetisch]
dus laten we eens een kijkje nemen in het volgende.
In app js voor deze specifieke server dit is alles wat we hebben.
Degene die we nodig hebben uit te drukken zelf, twee het pad module
die gewoon doet wat nuttige dingen
om er bij strings samen enzovoort voor mij,
Ik luister op poort 1337 en nu dit is nieuw dus het blijkt
dat express als Larevel ondersteunt verschillende plug-ins
en technologieën en andere dingen en een
van de technologieën die u kan in de stekker is een weergave motor
hetgeen betekent gewoon wat templates motor wilt u gebruiken,
Larevel had een eigen ding, maar kunt u de stekker
in verschillende dingen, verschillende perzik P kaders
verschillende manieren van templates, EJS is een gewoon
en een vrij eenvoudige motor die net laat je dingen doen
zoals de accolades die u in Larevels syntax had
voor vervanging variabelen
het is een beetje anders syntactisch is alles.
Dus nu is er dit ding heet middleware dus zoals u zult zien
in je eigen teams knooppunt project een middleware is gewoon een soort van code
of bibliotheken die u injecteert
in de [onverstaanbaar] reactie levenscyclus van een applicatie,
met andere woorden deze twee lijnen vertellen uitdrukkelijke
om wat extra werk tussen doen de tijd die het een verzoek krijgt
en tussen de tijd stuurt dat verzoek om uw eigen route,
de code die je hebt geschreven.
Dus in het bijzonder deze lijn hier gebruik te uiten dot statisch en alle
deze complexiteit dit gewoon betekent dat als u een verzoek te zien
die wordt geleverd in een statisch bestand zoals foo dot jif of foo dot css
of foo dot js dus niet een dynamisch gegenereerde route
ga je gang en neem aan dat het leeft in de publieke subdirectory,
dat is alles wat doet.
Het is een soort van kartering in Larevel, alles om uw web
of uw openbare map veeleer in Larevel.
Dit volgende regel is gewoon zeggen dat ik wil gebruiken routes,
Ik wil dingen gebruiken achtige app dot krijgen
die we daarnet zagen en we zullen zien in slechts een seconde nu.
Dus app dot krijgen middelen luister naar deze route,
slash als je het zo noemen anonieme functie die rekening
een verzoek en een respons en nu slechts
zoals Larevel u een manier van het renderen van een sjabloon,
reactie dot maken, citeer unquote index,
maken is een sjabloon genaamd index,
dat is het dus laten schorsen dat draad voor slechts een moment blik
naar de inhoud van het uitzicht directory
en merken dit ook is super eenvoudig voor nu,
er index dot EJS en zoek dot EJS,
Ik willen natuurlijk de eerste
want dat is degene die ik net moe te maken en we zullen zien
in uitzicht index dot EJS meest feite volledig html
op het moment, er is eigenlijk geen template gaande.
Dus ik deed technisch niet zelfs nodig om het EJS noemen,
Ik denk niet dat de functionaliteit nodig maar ik hield het uniform,
dus dat is het, dit is wat geeft me dat super eenvoudige vorm.
Dus er is slechts een andere route, als we kijken hier beneden ik heb gezegd
dat dit is wat handvatten krijgen slash zoekopdracht zodat de werkelijke soort
van Google als handler voor de formulier indienen, als je
dat pad noemen dit anonieme functie
en maken de template riep zoekopdracht
en wat is de tweede argument vermoedelijk betekenen.
Het ziet eruit als een JSON object van soorten of Java script object.
Wat de plaats van die tweede argument vermoedelijk?
>> [Onhoorbaar section]
>> De werkelijke vraag dat de gebruiker ingetypt blijkbaar leeft
in het verzoek dot query, query- verwijst naar alles
na het vraagteken dot q dat is de willekeurige naam
dat Ik gaf het net als Google
en ondertussen q dikke darm is gewoon zeggen overgaan in de sjabloon,
zoeken dot EJS, een sleutel van q en een waarde
ongeacht q werkelijke waarde was.
Dus dat laat slechts een bestand van belang om van gedachten,
zoeken dot EJS Ik bleef deze super eenvoudig ook,
Het is meestal gewoon html behalve voor een enigszins opmerkelijke serie
dat is deze syntax hier die eruit ziet als een stelletje
verschillende templating motoren dit betekent gewoon plug
de waarde van q en maken het vet.
Dus er is geen echte zoek functionaliteit, maar het doet soort
van voorstellen hoe je zou structureren van een skelet
van een aanvraag als dat.
Ondertussen ... eigenlijk heb kan een ander ding laten zien,
merk dat ik toch ook wel html hier voor css-bestanden
en Java-script-bestanden, er is niets in deze bestanden
op het moment, maar merkt dat er is een openbare map
zoals ik al eerder zei voor statische bestanden dus als ik ga
daar is er mijn css directory,
als ik daar naar binnen gaan Er is stijlen dot css
en er is geen inhoud er
maar dat is hoe je zou hebben openbaar toegankelijke bestanden.
Oke laten we eens een kijkje in een andere variant here
en dan zullen we introduceren een idee en pauze.
Dus dit is de server 6 het laatste, dus Dit is bijna identiek, behalve
de onderste twee lijnen die er als volgt uitzien.
Dus eigenlijk is er een derde regel is dat anders
maar ik heb verborgen ... dus laat me terug iets omhoog dus heeft iemand wil
voor te stellen wat er gebeurt hier in lekentaal
of technische termen wat is anders aan deze versie
met betrekking tot die lijnen in de bovenste knooppunten.
Wat heb ik vermoedelijk hier en waarom gedaan?
Ja, Sharon.
>> [Onhoorbaar section]
>> Ja, het lijkt erop dat ik heb verplaatst index en zoeken
dus aparte directe of zoiets, Ik heb ze meegenomen uit
en dat is zo dat veel op in Larevel kon je al gezet
van je controller logica binnenkant van routes dot php
met anonieme functies opnieuw en opnieuw en opnieuw
maar dat bestand natuurlijk kan behoorlijk massief krijgen
dus in routes dot php wat de meeste
van jullie hebben gedaan is dat je de naam hebt opgegeven
van een controller klasse of ook de naam van een werkwijze
die moeten gecalled
dus hetzelfde idee hier zelfs hoewel de syntax is een beetje
anders dus hier mededeling
dat ik blijkbaar geïmplementeerd mijn eigen knooppunt js
module en een module is slechts een Java script bestand dat hecht
in wezen een overeenkomst dat we zullen zien in slechts een moment.
Zo veronderstellen dat al mijn functionaliteit voor index
en voor zoeken hebben blijkbaar in deze directory gezet
en nu ik bel dat hele module of pakket of bibliotheek,
wat je wilt te denken van het als,
als routes een variabele genoemd routes.
Dus blijkbaar zijn er routes dot index is een methode genaamd
index en blijkbaar is er een andere methode genaamd zoekopdracht
deze routes modules of bibliotheek
en ik ben gewoon te routeren gewoon zo dat ik niet alle zetten
mijn anonieme code binnenkant van mijn app bestand.
Dus laten we gaan naar routes merkt dat er is gewoon index dot js
en als ik kijk hier is dit de conventie ik eerder bedoelde
dus dit is vrij willekeurig maar het is het knooppunt conventie.
Elke keer dat je te implementeren uw eigen knooppunt js bibliotheek,
aka module je in wezen kan schrijf een Java-script code
wil in dit bestand, het zal worden zeer schoon zand boxed
zodat alle variabelen die je kiest zal niet botsen
met bibliotheek iemand anders, variabelen of methoden of iets
als dat maar iets u wilt blootstellen
naar de buitenwereld ala een openbare methode in Java script
of php of andere talen je moet binnen plop
van een globale object dat de auteur van node export.
Dus door het doen van de export dot index Ik bloot te stellen aan gebruikers
van deze module een methode genaamd index die is toegewezen aan deze functie
dus het is anoniem op de rechterkant
maar ik effectief geven een naam aan de linkerkant
en exporteren naar de wereld
zodat u kunt bellen dot index of dot zoekopdracht.
Dus om duidelijk te zijn als ik had ook iets als functie foo
hier dat er iets gedaan
die functie zou absoluut operationeel,
het kan worden ingeschakeld dit bestand, maar niemand
in de buitenwereld koude ooit foo noemen
omdat het niet zijn uitgevoerd via deze puntnotatie.
Dus dat is alles wat er gaande is,
alles is netjes naam verdeeld voor jou.
Dus het eindresultaat als ik knooppunt doen van de app en de pagina geladen is
dat als ik nu zoeken
voor bar ... functioneel deze apps zijn hetzelfde
maar het is gewoon een soort van stap in de richting van een schonere uitvoering,
zeker wanneer u begint schrijven meer en meer code
en dat is alles wat deze zijn.
Duidelijk niet bijzonder geavanceerde of complexe
maar in wezen een beginpunt
voor wat zal uw eerste knooppunt js app.
Wat we zullen waarschijnlijk later doen deze week of dit weekend
zoals je bent afwerking tot op het php-toepassingen zullen we volgen
met een vrij eenvoudige aanvraag voor het team om te duiken
in in de geest overeenkomen de warming-up oefening voor php
die op basis van de midden semester enquête,
mensen hebben nuttig gaan door de uitoefening
van iets vrij eenvoudig te doen
maar vrij geleide voordat u iets meer daadwerkelijk aan te pakken
op uw eigen, dus we zullen follow-up met dat
en zal voornamelijk als gevolg van een week en een half
vanaf nu lichtjes overlappen met php bewust.
Heeft u vragen dan op uiten, op socket io
of verwarring resterende van maandag misschien.
Oke dus hopelijk een van de take-a-ways tot nu toe is
dat er voor een aantal van deze dingen zeker een stuk minder
overhead dan je zou werden gebruikt.
Dus laat me even een laatste idee,
dus een veel voorkomende programmeren paradigma
in Java-script dat is eigenlijk in jQuery aanwezig
in recente versies zo zou kunnen hebben eigenlijk gezien deze techniek
voor, maar het is ook heel gebruikelijk in de knoop js wereld,
Het is gebruikelijk in Tim's eigen Bookshelf bibliotheek
dus we zullen deze opnieuw in een meer concreet voorbeeld
dadelijk een oplossing te coderen als dit,
Dit is representatief code we zagen op maandag, dus lees bestand
in deze context is geen echte methode is het in dezelfde geest
om dot lezen bestand fs maar aannemen dat dit slechts een aantal gemaakt
up methode die doet iets vergelijkbaars.
Dus kwamen we een paar vraagstukken op maandag in het algemeen
dus wat is een soort van ... waarom Dit is een hellend vlak,
dit terug te bellen paradigma van programmeertaal Java script
en door terug te bellen paradigma Ik bedoel alleen deze techniek
waar je niet terug waarden onmiddellijk
want dat zou kunnen blokkeren de server
van iets anders dat doet handig, je in plaats daarvan terug te bellen
zoals de zoemers op Shake Shack als je klaar bent
om terug te gaan een reactie als argument.
Dit is een hellend vlak
wanneer het zeer snel wordt vervelend waarom?
Yeah.
>> [Onhoorbaar section]
>> Ja, minimaal wordt soort onleesbaar recht
als je al deze oproep rug en als je vastzit
om goede stijl het wordt steeds vrij massaal ingesprongen
in de tijd en voor het geval ik dit punt Bijvoorbeeld als je een soort van magere
doorheen alleen bedoeld is open een json-bestand en afdrukken,
zoals dat is het en toch zijn we hebben ongeveer 8 of 10 regels hier
die al zijn soort van nastily ingesprongen,
we try catch gekregen die
als je niet bekend bent is een foutafhandeling techniek
die u toelaat om iets te proberen
en als het niet lukt dan je hopelijk vangen
zonder uw hele programma beëindigen, maar er is
zoveel complexiteit als je soort van moet dit door te denken
en God verhoede we doen een paar andere asynchrone methode noemt,
het ding is al gaan over hier te zijn,
je zou denken dat dit soort van een domme esthetisch maar dit
omdat het gesprek weer terug paradigma is zo vaak op zijn minst
in de native code knooppunt dit heel snel vervelend,
moeilijk te debuggen, de insprong begint uit te maken, zodat u kunt sorteren
van chase dingen naar beneden, het is gewoon niet een zeer gelukkige manier
van programmeren.
Dus wat mensen hebben gedaan
in verschillende context knooppunt tussen hen proberen te vereenvoudigen,
os bijvoorbeeld beloften is een andere manier van denken
over het schrijven van asynchrone code iets dat visueel wordt
als versie 1 in deze versie 2.
Ik eis en dit is weer gewoon soort van gemengd
tussen de werkelijke code en pseudo code, is representatief
van hoe je zou opnieuw te implementeren dat precies hetzelfde,
open een json-bestand, ontleden en af ​​te drukken
met behulp van iets riep beloften
en de sleutel syntactische detail is
dat er een chaining hier aan de hand.
Merk op dat de enige puntkomma
in het hele ... eigenlijk goed laten we ... Ik wil niet te misleiden.
Dit is niet strikt noodzakelijk maar laten we consistent zijn,
merken dat de puntkomma die verwijst naar de opening
van deze hele verklaring is helemaal hier beneden.
Dus terwijl ik heb geformatteerd deze ... soort van kijken
als drie verklaringen, drie uitspraken die je zou kunnen zien
in Java of een andere taal die proberen te vangen hebben
en exception handling meer in het algemeen.
Merk op dat ik gewoon keten de return waarde van elk
van deze methoden samen.
Dus wat is er aan de hand, lezen bestand als dit een methode die bestaat,
blijkbaar probeert om dit bestand te lezen,
dot dan dus dan is een zeer algemene naam in de wereld
van beloften voor de methode die moet worden uitgevoerd
Als de vorige ding geslaagd.
Dus het is net zoiets als het succes handler, dus dan json dot ontleden,
goed json dot parse is gewoon een methode
in de wereldwijde json bibliotheek en het schijnbaar hecht
in dit geval belofte model
dus we zeggen dat we kunnen gewoon gaan ervan uit dat gesprek deze kerel
en als hij slaagt dan noemen deze man en dan
als dat daadwerkelijk uitvoert gewoon console-log van de gegevens
in kwestie.
Dus waar is de fout handling, merk ik heb soort
van zeer blindelings gestapt off deze richel
en alleen deze zogenaamde methode en dan is deze methode
zonder ooit te controleren voor problemen.
Nou waar zijn deze probleem vermoedelijk verwerkt ... in deze
cache verklaringen zo anders bibliotheken verschillende gebruiken
conventies maar in dit geval is dan is een soort
van het succes handler, cache is een soort van de fout handler
en omdat we niet gebroken deze keten we gewoon blijven gebruiken
puntnotatie aan elkaar te koppelen de oorspronkelijke methode aanroep
van gelezen bestand en de functie aanroeping eventuele fouten soort
van bubble hun weg door de keten
totdat ze daadwerkelijk behandeld dat is veel schoner dan te proberen
om te gaan met het elke verdomd stap van de weg
zodat uw code zeer wordt al snel onwerkelijk gegevens.
In dit geval zijn we beweren dat we proberen
te vangen wat wordt genoemd een syntax error het is in wezen een
subklasse van een algemene fout en als dat gebeurt vordering
dat het ongeldig json anders als het een meer algemene fout
dat we niet hadden verwacht alleen maar meer in het algemeen zeggen dat kan niet
lezen bestand.
Nu is dit alleen bedoeld representatief code zijn
maar als je hebt geprogrammeerd in ruwe Java script of in Java
of andere talen is dit procedurele code in wezen,
Dit is een meer traditionele probeer het catch-statement
en dat is de esthetische en de functionaliteit die belooft
of probeer je te geven waarbij u kunt denken
als alleen het schrijven proberen en vervolgens vangen en vervolgens te vangen niet hebben
om bij elke druk enkele mogelijke punt
waar mogelijk een fout handvat ... gebeuren,
je kunt het allemaal aan op de end behoefte van een blokje
van de code, en je kunt zelfs onderscheid tussen fouten
als je kunt in dit geval.
Dus de nomenclatuur die u zult zien in de literatuur misschien
Tim presenteert een aantal van dit spul is ook
dat idealiter u wilt belooft op te lossen
en het oplossen van een belofte middel die uiteindelijk terug bij wijze van spreken
maar niet op een traditionele manier van waarde, zodat het ofwel slaagt
voor niet wezen.
Oke eventuele vragen die dan, het is niet bedoeld te volstaan
voor blootstelling aan beloften maar gewoon een mentaal model
voor de code zal beginnen te zien.