>> Bine deci ne-am întors, o serie de obiective pentru ziua de azi,
vom ridica în cazul în care am rămas ultima dată,
amintesc că am fost face acest succesiune
de aplicații server legate, super-simplu, dar cu ajutorul nodului JS
și apoi, de asemenea, cel mai recent, folosind atingere expres AS
și ceea ce a fost exprimată JS analog de la lume PHP.
Deci, în mod expres este mai mult ... aproape,
deci expres este, în esență, Cadru MBC că e destul de
popular în js lume nod,
Raft pe care vom vedea astăzi, prin intermediul Tim este un analog
de elocvent care este un ORM pe un mapper relație obiect
care de fapt face mai ușor pentru a evita nivel scăzut de cod SQL
și de fapt exprima relații între diverse obiecte.
Deci, una din cea mai tare lucrurile sincer
despre nod js este doar modul în care ușor se pretează
de a face aplicații în timp real, lucruri cum ar fi servere de chat
sau serverele de mesagerie, ceva că voi folosi acum
cum ar fi Google ... G-chat-ul sau hangout Google
sau actualizări de stare pe Facebook sau chiar Twitter dacă sunteți
pe pagina web lor tot este un fel de timp real
sau tu dă iluzia de timp real
și că este de fapt o durere în gât de a face cu ceva
cum ar fi PHP si SQL meu chiar ceea ce ne-am propus
pe luni ar fi mijloacele de
prin care ar putea pune în aplicare iluzia de comportament în timp real
cu un server de chat în PHP, ceea ce ar trebuie să faci?
Alice trimite un mesaj, hit-uri intra unde se duce?
Da.
>> [Secțiunea inaudibil]
>> Într-o bază de date și apoi ce browser-ul lui Bob au
să facă pentru a vedea de fapt, ceea ce Alice a spus, da?
>> [Secțiunea inaudibil]
>> Păstrați votare baza de date, Bine, deci o cerere de ajax are
la foc în fiecare secundă, la fiecare câteva secunde sau am vorbit pe scurt
dar nu se uita la un exemplu de ceva numit de votare lung,
oricine amintesc cum
acest mecanism ... pe un nivel ridicat de lucrări?
>> [Secțiunea inaudibil]
>> Exact, da astfel un browser încă face o cerere de ajax
la un server, pentru un php foo punct dar foo punct php doar pare
să stea, ea stă, în esență, într-o buclă în timp ce pentru cât mai multe
ca de obicei, și 30 secunde doar o singură dată foo fișierul punct php
își dă seama oh există un rând nou
în baza de date nu el răspunde de fapt
cu un răspund http.
Deci, credeți că acest lucru ar putea altfel atârnă pe server
și o face într-o oarecare măsură
dar aceasta înseamnă că este mult mai puțin deasupra capului
pentru că nu aveți nevoie de un nou TCP conexiune, o nouă conexiune HTP
să solicite efectiv date de la server.
Dar js nod vine cu o foarte bibliotecă popular numit socket
punct io pe care ai putea nu a folosit niciodată este construit pe partea de sus
de o tehnologie numită web soclu care este prezent
în cele mai moderne browsere și ce io socket nu este ce permite
pentru a crea, în esență, o conexiune permanentă
între browser și server de care este deasupra capului foarte scăzut
astfel încât să nu neapărat au aceleași probleme de scalare
care s-ar putea, dacă sunteți lovind constant serverul
în lumea de PHP și SQL mea și altele asemenea.
Chiar și pentru browsere mai vechi
care nu acceptă socket web această bibliotecă soclu punct io poate
cădea înapoi pe flash-uri punerea în aplicare a prize
și prize este o rețea lucru de la CS143, de exemplu.
Sau poate cădea chiar înapoi la timp de votare în sine, astfel încât acestea să pună în aplicare
că același tip de activitate
în jur de fapt menținerea iluzia de această privință.
Deci, socket [inaudibil] io și acest lucru este în forma
de o bibliotecă script java, în esență, dacă îl folosiți
sub forma unui nod js cerere de a instala nu numai
ca un pachet cu ajutorul ceva ca NPM care ne-am folosit pe luni
și sau să includă, de asemenea, un benzi tag în fișierul html
care spune că utilizează bibliotecă partea de client.
Deci, există două jumătăți de ea și ceea ce am făcut aici
în a patra iterație de secventa de luni
de exemple este următoarea.
Deci, această structură fișier este amintind de un set foarte frecvente
pentru js exprimate și din fericire, este mai simplu
decât lervo [fonetic] a fost, amintesc când setați
up lervo ai un imens urât benă de o mulțime de fișiere,
directoare furnizor, lib și foarte greutate mare în comparație cu acest lucru.
Acum, în corectitudine ne-am dezbrăcat departe chestia asta e destul de mult o
distragere a atenției, dar toate chestii suculent este este într-adevăr
în module de nod.
Doar pentru a vă oferi un gust dacă ne uităm
la module de nod nu e două module sau biblioteci
pe care le-am descărcat, acest ar fi echivalentul
din directorul de furnizor, un este numit expres care este
ca larevel dar în nodul
și soclu IO una tocmai am menționat.
Astfel, cei exista astfel încât să putem efectuați următoarele dacă am deschis
până să spunem index dot html, hai mai întâi ne uităm la html,
acest lucru se întâmplă pentru a compune acest corp, super-meu,
server de chat super-simplu.
Deci, există un aparent ul cu o idee unica de mesaje
și că este în cazul în care una li la un moment dat,
toate mesajele instant sunt O să apară între Alice
și Bob și apoi există o formular simplu, cu un câmp de text
și un buton de trimitere prin care Alice
sau Bob poate de fapt, Mesajul reciproc.
Astfel încât efectul net, dacă Am rula această aplicație
de a face nod app spațiu dot js, dacă am trage un cuplu
de ferestre de browser este că Alice ar putea fi pe dreapta,
Bob ar putea fi pe stânga și doar
să fie clar nu există nici o magie aici am o singură fereastră
în incognito astfel încât nu există nici o schimbul de cookie-uri sau orice
cum ar fi acest lucru, acestea sunt doi utilizatori distincte.
Eu ar trebui să poată să aibă Alice salut Bob, faceți clic pe prezinte
și acum veți vedea pe partea stângă că mesajul lui Alice a fost trimis
și aproape instantaneu din dreapta.
Nu votare implicat aparent, Bob a primit același mesaj.
Acum Bob spune salut Alice veți vedea efectul opus.
Deci, ce se întâmplă cu adevărat, cum mult cod avem nevoie pentru a scrie
să pună în aplicare acest lucru un server de chat
pe care le puteți extrapola acum mental că toată lumea
în această cameră în cazul în care acest lucru nu au fost în mea [inaudibil]
dar pe foo dot com am putea toți începe chat instantaneu
unele cu altele.
Deci, ceea ce este implicat și înainte de a mă clar acest ecran este aceasta
este doar socket io fi o puțin zgomotos, e doar de imprimare
de informații de depanare a ecranului,
nu e nimic mai întâmplă pe acolo.
Deci, lasă-mă să deschid app js punct, așa ca și mai înainte ne-am luat câteva lucruri
în partea de sus a fișierului.
O grămadă de cerințe, astfel încât acestea sunt ca bibliotecile
sau accentua indicii sau necesita decurga orice mental modelul pe care îl
doresc să aibă și doar trecerea în revistă FS este utilizat
pentru ce fel de funcționalitate?
Astfel încât sistemul de fișiere așa citirea fișierelor potențial și chestii de genul asta
și am folosi acest lucru într-o singură loc după cum veți vedea,
Express este, desigur, acest lucru cadru pe care le utilizați,
nu este strict necesar am putea
ca pe luni crea total propriul nostru server http de la zero
de a face crearea de server și toate de acest tip de cod de la înainte
dar așa cum vom vedea acest lucru face lucrurile un pic mai ușor
pentru că tot ce trebuie să faceți este să pe linia 3 aici instantiate
și exprima obiect, voi suna aceasta aplicatie, oarecum arbitrar,
Voi spune apoi aplicația de asculta pe portul 1337 arbitrar,
care ar putea fi 80 de convenție
și apoi în cele din urmă am un nou linie de astăzi, care este de a spune
să solicite priza bibliotecă IO și apoi
prin această abordare ar fi lanț acest operator de punct sunt doar
de asteptare o lecție asculta care este spune, în esență, priza
bibliotecă IO de asemenea, asculta la același server de
sau web conexiuni socket.
Deci, acum, ceea ce, așa cum este Făcând acest lucru, aceste patru linii
de cod aici care ar trebui să uita-te amintește de larevel,
Ce reprezintă acest lucru?
>> [Secțiunea inaudibil]
>> Aceasta este o ... traseu, doar un traseu atât în ​​app js dot,
aka js server de punct, în funcție pe ceea ce oamenii doresc să-l numesc
în propriile aplicații aveți o convenție
de a face definire traseele dumneavoastră,
app get dot înseamnă ori de câte ori veți obține o cerere GET pentru a merge
a pentru literalmente reduce merge mai departe și apelul această funcție anonim
și funcția de anonim în acest caz are de cerință
sau de cerere și un răspuns, potential alte lucruri
dar minim aceste două.
Cererea vă oferă acces la lucruri cum ar fi parametrii http
și antetele și alte lucruri suculent
și apoi reacția este mecanismul
prin care se poate răspunde la utilizator.
Deci, acest lucru este foarte simplu, chiar deși nu am vedea destul de
același cod ultima dată, eu sunt folosind modulele de sistem de fișiere,
a crea metoda de flux de citire care, în esență, face asta,
a crea un flux de citire care înseamnă, în esență, începe slurping
up bytes din index dot html la fel de eficient ca tine poate
fără a fi necesar în așteptare până dvs. citi întregul dosar
și cum să faci asta țeavă le literalmente
în sensul bară verticală dacă sunteți confortabil
cu linia de comandă Linux,
țeavă l la răspunsul de obiect.
Deci, au existat două exemple legate de fluxuri de luni,
ne-am uitat doar la una, ci ești binevenit să te uiți înapoi
la curent și o flux 1.
Stream 1 ... 0 făcut ceva similar cu acest lucru,
flux de 1 făcut ceva aproape la fel ca aceasta,
acest lucru este doar un șmecher o linie de a spune un fel
de Slurp ceva în aici și apoi începe să trimiteți-l aici
în același timp, fără a face o masă de acord
și apoi un drept masiv,
această abordare este în general mai eficient.
Deci, asta e un fel de lucruri vechi chiar dacă a fost nou, luni,
acest lucru este tot ce trebuie pentru a implementa un server de chat
cu js nod și mai mult în special socket dot IO.
Deci, cum face acest lucru, permiteți-mi să-l muta un pic,
deci io este doar o variabilă care se referă
la WE modulul necesar mai devreme,
socket punct este doar o proprietate în interiorul de ea
care îmi dă socket funcționalitate legate de
pe este o metodă comună care se referă la ceea ce noțiune general?
Un eveniment așa mai departe asculta aka în unele biblioteci Aceasta înseamnă doar
Auzind acest eveniment care se numește conexiune
și acum știți acest lucru doar de la uita la documentația,
oricine a scris biblioteca definit un eveniment numit
conexiune care nu ceea ce dvs. s-ar crede
atunci când Alice sau Bob conectează.
Du-te și numesc acest Funcția anonim ia de trecere
într-un singur argument client care este aparent un fel
de obiect care reprezintă Conexiune Alice
sau conexiune Bob sau Charlie sau oricine altcineva
iar acum vom face următoarele.
Ne spun clientului după el sau ea este conectat
pentru a asculta în mod special
pentru un mesaj care este complet numit arbitrar mesaj
client colon.
Acest lucru este ceva care Tim și Am venit cu, ar putea fi foo
sau bar, e doar ceva șir unic de care aveam nevoie
pentru a decide ca dezvoltatorii.
Ori de câte ori Alice sau Bob aude
că acest eveniment anonim Funcția ar trebui să fie numit
iar datele, conținutul lui Alice
sau un mesaj lui Bob ar trebui să fie a trecut în acest handler eveniment
și acum ce ar trebui să client face bine poti fel
de citit acest destul de intuitiv clientul ar trebui difuzate,
altfel cunoscut ca emit un Mesajul numit server de metodă
semnificând astfel acest mesaj vine de la serverul nu
de la browser-ul și ce ar fi acest mesaj,
e pare că sarcina utilă de la oricare ar fi venit de la clienti
și suntem doar de gând să arbitrar numesc mesaj.
Deci, o mulțime de acest lucru este arbitrară
prin denumire rezonabil convenții, Tim și am venit
cu, cea mai mare parte Tim și apoi ne-am pur și simplu se creează în cele din urmă o
chat-ul server care face ceea ce, atunci când Alice trimite un mesaj
și hit-uri ce intra eveniment se pare că este concediat,
doar trecerea în revistă.
Tipuri de Alice un mesaj, hit-uri intra, client mesaj este concediat,
acest cod aude că și acum serverul transmite ceea ce,
ceea ce este rezultatul final din acest adevăr?
Alice trimite mesajul acum server se retransmite
în mod eficient la toată lumea, cu excepția pentru Alice, de ce toată lumea cu excepția
pentru Alice, dacă te uiți doar
la client documentare dot difuzare punct recunosc,
literalmente face asta, transmite mesajul
pentru toată lumea, cu excepția client care te-a trimis
că mesajul cel mai recent.
Deci, aceasta este motivul pentru care doar vedea-o o dată pe fiecare parte,
tu nu vezi atât Alice și Bob obtinerea mesajul lui Alice.
Deci asta e, acest este un agent de relocare
daca va e doar luând în mesaje
și retransmiterea le
și este remarcabil scalabil Vreau să spun chiar
cu o super-simplu de server și câteva linii
de cod ai putea cu siguranță se ocupe de sute, dacă nu mii de
de mesaje simple concurente merge înainte și înapoi ca aceasta
și doar imagina complexitatea acum de a face acest lucru în PHD
sau Larevel sau SQL mea și cât de mult cod ar trebui
să scrie, în scopul de a realiza că de fapt.
Acum, în această corectitudine nu este corect persistent
dacă serverul se duce în jos vom pierde întreaga istorie
deci nu este destul de traducere perfectă, dar este
că drept înainte.
Să ne uităm la script-ul Java Cod am sarit peste mai devreme,
aceasta este a lui Alice și Client Bob,
pagina de web pe care îl folosesc acum să ne uităm aici pentru o clipă.
Există un cod mai puțin
dar e destul de mult doar jQuery aici atât de aviz
că în pagina de web că am tras
în urmă cu o clipă am includ biblioteca jQuery,
priza IO bibliotecă și ca o parte observa diferența
aici, slash slash la începutul unui traseu
ca acest lucru înseamnă exact ceea ce,
unde este jQuery dot js pe ce sistem?
Da.
>> [Secțiunea inaudibil]
>> E pe internet da Codul literalmente numit punct jQuery
dot com asa ca de ce slash, slash, de ce nu doar un slash,
în cazul în care este HTTP sau de colon, Ce înseamnă acest lucru, în general,
dacă nu slash slash la începutul URL-ul?
Este de fapt util.
Ok deci ceea ce este, evident, lipsește http acum dacă am un motiv
prin aceasta în mod logic, de obicei, nu aveți nevoie de
pentru a menționa un nume de servere corect
cum ar fi în cazul în care folosiți doar bară oblică jQuery punct JS ceea ce se presupune
de către browser-ul?
Că dosarul este pe aceeași server, astfel încât să continue un fel
de logică, dacă nu-i spui ea ce protocol ceea ce este
Browser-ul presupune, același protocol așa dacă le-ați vizitat vreodată site-uri web
care vă oferă o eroare de-a lungul liniile de conținut nesigur
pe această pagină este pentru că cineva a codificat greu un http
slash colon URL slash pentru o imagine sau un fișier script Java
sau fișier CSS, ceva de genul asta în codul sursă al paginii
dar pagina în sine, în browsere URL-ul este http s.
Deci, aceasta este doar mod fantezie puțin
de a spune Nu știu ceea ce este protocolul
că acești utilizatori finali de gând să utilizeze
dar doar asigurați-vă că meciuri, astfel încât Chrome
și alte browsere Nu tipa la utilizator.
Doar captura este oameni jQuery a stabilit o mai bună
up https pe serverul lor.
Deci, ele sunt de fapt listarea la 443.
În regulă între timp această unul aici este un fel
de slash înșelătoare socket io sugerează
că există un director numit io socket punct de pe serverul meu
dar nu e dacă am scormoni
în jurul valorii de acolo este directorul modul nod
dar nu este nimic publicului cu privire la acest lucru,
când ne-am configurat io socket pentru a asculta pe aceleași porturi,
1337, în esență, că biblioteca că altcineva a scris este de a merge
la fel de a introduce un cod în mediu js nodului
și doar pentru a asculta pentru această cale.
Că biblioteca are doar configurat un traseu pentru aceasta,
nu este un director adevărat.
Ar fi într-o Locul de amplasare standard.
Bine, asa ca acum interesante parte,
asa ca atunci cand documentul este pregătit așa cum este indicat
prin acest jQuery construi, în primul rând am de gând să merg mai departe
și conectarea la o priză,
ceea ce priza doar ... l păstrați simplu am de gând să se conecteze
de a reduce, asta e cazul în care utilizatorul este,
Am păstrat exemplu simplu suntem doar de gând să se conecteze
la același URL-ul exact care utilizator a vizitat apoi voi
pentru a face următoarele, am de gând spune browser-ul lui Alice sau Bob
pentru a asculta mesaj de pe server.
Din nou, acest lucru ar fi putut fi foo
sau bar în orice moment auzi un mesaj
de la ea datele de apel de server și apoi face acest cod jQuery
care Cred că cel mai mult în cazul în care nu toată lumea este familiarizat
cu aceste zile, dar în esență, un ac pentru a lista item
la UL existent care a fost numit de mesaje
care spune literalmente indiferent de sarcina utilă este
a mesajului de chat urmat de o cratimă, urmat de a primi,
urmat de un spațiu și apoi un timp de actualizare și de aceea
pentru a fi clar dacă ne întoarcem
pentru aceasta le ai suplimentare gloanțe din nou și din nou
și din nou, cu timpi Data.
Între timp, dacă ne uităm aici ne-am avea
să se ocupe de depunerea formularului astfel că a fost primirea
de un mesaj instant, aici e trimiterea și acest lucru este un fel
de legătură cu js nod, asculta la formele prezinte eveniment.
Când se întâmplă preveni implicit, acest lucru înseamnă pur și simplu nu-l prezintă
la serverul de obicei în Astfel, reîncărcați întreaga pagină,
vrem să facem acest lucru tot prin ajax.
Iată doar câteva coduri jQuery
pentru a obține de fapt, intrarea al cărui tip este mesajul,
al cărui nume este mesajul merge mai departe
și să-l este valoarea apoi merge mai departe
și, dacă aveți de fapt o mesaj, în cazul în care Alice și Bob
sau Bob fapt, unele tipuri de nimeni 0 Numărul intrarile de la tastatura emite
pe soclu un mesaj numit client mesaj cu care sarcină utilă
și apoi în jos aici este ceea ce face verde, spre deosebire de
la roșu, noi pur și simplu de ieșire partea de aparat [neauzit].
Deci, asta e, dar toate aceasta este doar înființarea,
lucruri noi reală mi-ar argumenta este doar aceste trei
sau cinci linii de cod aici și ca un fel de indicii de la putere
de js nod și cu ea această bibliotecă special.
Deci, haideți să aruncăm o rapid uita-te la dot expres js,
Deci, ce am de gând să încerc să face în cuplu rămas
de minute, aici este configurat un câteva idei, câteva tehnici
care va avea apoi un cuplu pauză minut, Tim va înființa
și apoi vom arunca cu capul adânc în
pentru o mai interesant exprima aplicare și, de asemenea,
la rafturi, biblioteca Tim a scris de fapt
pentru comunitatea open source
care ne dă lumină elocvent funcționalitate cu SQL meu
și tranzacții și alte astfel de caracteristici și el va arunca cu capul, de asemenea,
într-un pic mai adânc la script limbajul Java în sine,
cum obiect sau non-clasă Modelul funcționează altfel știu
ca model prototip, unele mai mult pe faptul că de vină.
Deci, haideți să aruncăm o privire la două trecut aplicațiile de aici, server de cinci
și serverul 6 care sunt toate fel de similare în spirit,
acestea nu sunt servere de chat dar ei folosesc în mod expres.
Deci, haideți să aruncăm o privire la ceea ce face de fapt acest lucru,
Am de gând să merg mai departe și deschis ... Am de gând pentru a rula această aplicație
cu js app nod, am de gând să du-te inapoi la browser-ul meu și reîncărcați
iar acest lucru este aparent tot acest server este de a face,
este un server de super-simplu care este aparent o căutare
motor, deci, dacă am tip în foo și să prezinte, nici un rezultat de căutare
pentru foo, nu am ajunge în jurul valorii de punere în aplicare a sofisticate
capătul din spate, tot ce se întâmplă
să faceți este să ecou, ​​indiferent de ce tastați nici un rezultat pentru foo,
nici un rezultat pentru bar așa cum facem acest lucru
pentru că există o piese de cuplu, unul,
există în mod clar o anumită intrări fiind oferite
la server nu Larevel desigur, dar js nod acum
așa că trebuie să cumva ajunge la acest parametru Q,
suntem în mod clar facem un fel de vedere aici,
ne făcând o vedere atât poate exista o oportunitate
pentru template-uri sau variabilă interprelation [fonetic]
așa că haideți să aruncăm o privire în cele ce urmează.
În js app pentru acest special server de acest lucru este tot ce avem.
Avem nevoie de o exprima în sine, două modulul cale
care are doar câteva lucruri utile
cum ar fi aderarea la siruri de caractere împreună și așa mai departe pentru mine,
Am asculta pe portul 1337 și acum acest lucru este nou, astfel încât se pare
că, în mod expres ca Larevel acceptă diferite plug-in-uri
și tehnologii și alte lucruri și unul
a tehnologiilor pe care le se pot conecta este un motor de vedere
ceea ce înseamnă doar ceea ce templating motor nu doriți să utilizați,
Larevel avut-o propriu lucru, dar vă puteți conecta
în lucruri diferite, diferite cadrele piersic P au
moduri diferite de templating, Ejs este doar un comun
și un motor destul de simplu că doar va permite sa faci lucruri
ca acolade care ați avut în sintaxă Larevels
pentru substituirea variabile,
e un pic diferit sintactic este tot.
Deci, acum există acest lucru numit Articole de mijloc, astfel încât veți vedea
în propriul echipe nod proiect o Articole de mijloc este doar un fel de cod
sau biblioteci pe care le injectează
în [inaudibil] răspunsul ciclul de viață al unei aplicații,
cu alte cuvinte aceste două Liniile se spune în mod expres
de a face ceva de lucru suplimentar între în momentul în care primește o cerere de
și între timp se trimite că cererea pentru propriul traseu,
codul pe care le-ați scris.
Deci, în special această linie aici utilizați punct expres static și toate
din aceasta complexitate acest lucru doar înseamnă că dacă vezi o cerere
care vine într-un fișier static cum ar fi foo punct Jif sau foo punct css
sau foo punct nu js așa o traseu generat dinamic,
mergeți mai departe și să își asume trăiește în subdirectorul publice,
asta e tot ce face.
Este un fel de cartografiere în Larevel, totul pentru dvs. de web
sau directorul publice mai degrabă în Larevel.
Această linie următor este doar spunând Vreau folosesc rute,
Vreau să folosesc lucrurile ca app dot obține
pe care am văzut în urmă cu o clipă și vom vedea în doar o secundă acum.
Dot astfel app obține mijloace asculta pentru acest traseu,
slash atunci când vei ajunge o numesc acest Funcția anonim care ia
într-o cerere și o răspuns și acum doar
ca Larevel aveți un fel de redare un șablon,
răspuns dot face, cita index unquote,
face este un șablon numit index,
asta e asa ca hai sa suspende că fir pentru doar o privire clipă
la conținutul directorul vizualizări
și observați acest lucru este de asemenea super-simplu de acum,
există index Ejs dot și de căutare Ejs punct,
Evident, am dori primul
pentru că asta e cea pe care am doar obosit de a face și vom vedea
în index vizualizări Ejs dot cele mai multe, de fapt în întregime html
în acest moment, nu există de fapt, nu templating întâmplă.
Deci, eu punct de vedere tehnic nu chiar trebuie să-l numesc Ejs,
Nu am nevoie de această funcționalitate dar am păstrat-o uniformă,
Deci asta este, asta este ceea ce dă-mi că forma super-simplu.
Deci, nu e doar o altă cale, dacă ne uităm aici, am spus
că aceasta este ceea ce se ocupă de a obține slash de căutare, astfel genul real
de Google ca handler pentru formularul de depunere, atunci când te
că cale numesc acest Funcția anonim
și face șablonul numit de căutare
și ceea ce este de-a doua argument înseamnă probabil.
Se pare ca un obiect JSON de felul sau Java obiect script.
Care este rolul pe care al doilea argument probabil?
>> [Secțiunea inaudibil]
>> Interogarea real pe care tastat de utilizator aparent trăiește
în cererea de interogare punct, interogare referindu-se la tot ceea ce
după punctul semn de întrebare q care este numele arbitrară
pe care l-am dat la fel ca Google
și între timp colon q este doar spunând trece în șablonul,
Ejs căutare dot, un cheie de q și o valoare
de orice q lui real valoare a fost.
Deci, care lasă doar o fișier de interes pentru opinii,
Ejs căutare dot-am pastrat acest super-simplu prea,
Este cea mai mare parte doar html cu excepția pentru o linie oarecum remarcabil
care este această sintaxă aici care arată ca un buchet
de diferite templating Motoarele acest lucru înseamnă doar plug-
în valoare a lui q și să-l îndrăzneț.
Deci, nu există nici o căutare real funcționalitate, dar o face un fel
a sugera modul în care v-ar structureze un schelet
a unei cereri de genul asta.
Între timp ... de fapt am poate indica un alt lucru,
observa că eu nu au unele html aici pentru fișiere CSS
și fișiere script Java, nu e nimic în aceste fișiere
în acest moment, dar observați că există un director publică
așa cum am spus mai devreme pentru fișiere statice așa că dacă mă duc
acolo nu e directorul meu css,
dacă mă duc acolo acolo a stiluri de dot css
și nu există nici un conținut acolo
dar asta e modul în care ar fi aveți fișiere publice accesibile.
Bine, haideți să aruncăm o privire puțin o altă variantă aici
și apoi vom introduce o idee și pauză.
Deci, acest lucru este server de 6 ultimul, așa acest lucru este aproape identic cu excepția
pentru ultimele două linii care arata ca acest lucru.
Deci, de fapt, nu există o a treia linie care este diferit
dar m-am ascuns ... asa ca lasa-mă înapoi up ușor așa vrea cineva
să propună ceea ce se întâmplă aici în termeni de nespecialist
sau termeni tehnici ce e diferit despre această versiune
în raport cu cele linii în nodurile de top.
Ce am eu, probabil, făcut aici și de ce?
Da, Sharon.
>> [Secțiunea inaudibil]
>> Da, se pare ca am index sa mutat și de căutare
astfel separată direct sau ceva, Le-am luat din
și care este atât de atât de mult ca în Larevel ai putea pune toate
de logica controler în interiorul de rute dot php
cu funcții anonime din nou și din nou și din nou
dar acel fișier, desigur, se poate obține destul de masiv
atât în ​​traseele dot php ce mai
dintre voi au făcut este ați specificat numele
a unei clase de control sau chiar numele unei metode
care ar trebui sa numit
astfel încât aceeași idee chiar aici deși sintaxa este un pic
diferite, astfel încât aici aviz
că am aparent implementat propriile mele js nod
module și un modul este doar o Fișier script java care adera
a, în esență, o convenție că vom vedea într-o clipă.
Deci, presupunem că toate mea funcționalitate de index
și de căutare au aparent a fost pus în acest director
și acum am sunat ca întreg modul sau pachet sau o bibliotecă,
ce vrei să se gândească la ea ca,
ca rute o variabilă numit rute.
Deci, se pare că în acolo rute Indicele punct este o metoda numita
index și, aparent, nu există o altă metodă numită căutare
în acest rute module sau o bibliotecă
și eu sunt doar o rutare doar pentru ca nu-mi pun toate
de codul meu anonim interiorul dosarul meu app.
Deci, haideți să mergem în rute observa există doar index js dot
și dacă mă uit aici acest lucru este convenția am vrut să spun mai devreme
astfel încât acest lucru este destul de arbitrară dar este convenția nod.
De fiecare dată când pune în aplicare propria biblioteca js nod,
aka modulul în esență, se poate scrie orice cod de script Java tine
Vreau în acest dosar, se va fi nisip foarte curat în cutie
astfel încât orice variabile te alege nu va ciocni
cu biblioteca altcuiva, variabile sau metode sau orice altceva
genul asta, dar nimic pe care doriți să expuneți
la lumea exterioară ala o Metoda publică în script Java
sau php sau alte limbi trebuie să plop interior
de un obiect global care autor de nod numit exporturilor.
Deci, de a face exporturi dot index Sunt expunerea la utilizatori
a acestui modul o metoda numita index care hărți pentru această funcție
asa ca este anonim pe partea dreaptă
dar ti-o dau în mod eficient un nume de pe partea stângă
și exportul l la lumea
astfel încât să puteți apela index punct sau punct de căutare.
Astfel încât să fie clar dacă, de asemenea, am avut ceva de genul funcție foo
de aici că a făcut ceva
această funcție ar fi absolut fi operațional,
ar putea fi numit în acest dosar, dar nimeni nu a
în lumea exterioară rece apela vreodată foo
pentru că nu a fost exportat cu titlu de această notație punct.
Deci, asta e tot ce se întâmplă,
totul este frumos nume distanțate pentru tine.
Deci, rezultatul final dacă eu fac nodul de app și reîncărcați pagina este
că dacă acum caut
pentru bar ... funcțional aceste aplicații sunt aceleași
dar e doar un fel de pas spre o implementare mai curat,
cu siguranță, atunci când începe scrie mai mult și mai mult cod
și asta e tot acestea sunt.
Evident, nu deosebit de sofisticate sau complexe
dar, în esență, un punct de plecare
pentru ceea ce va fi dvs. primul nod js app.
Ce vom face probabil mai târziu în această săptămână sau în acest weekend
ca tine sunt de finisare pe aplicatii php vom urma
cu o destul de simplu cerere pentru echipa să se scufunde
în similară în spirit de exercitarea warm up pentru php
care bazat pe studiu semestru la mijlocul,
oameni buni au găsit ajutor trece prin exercițiul
de a face ceva destul de simplu
dar destul de ghidat, înainte de aborda de fapt ceva mai mult
pe cont propriu, așa că va fi urmări cu care
și va fi în mod esențial cauza o săptămână și jumătate
de acum se suprapun ușor cu php în mod deliberat.
Orice întrebări, apoi pe exprima, pe Io socket
sau confuzie rămas de luni, poate.
Bine deci sperăm că unul dintre ia-o-moduri de până acum este
că există pentru unele dintre acestea lucrurile cu siguranță mult mai puțin
deasupra capului decât s-ar putea au fost utilizate pentru a.
Deci, permiteți-mi să introducă o ultimă idee,
deci o foarte frecvente paradigmă de programare
în script Java care este de fapt prezent în jQuery
în versiunile recente așa s-ar putea avea de fapt văzut aceasta tehnica
înainte, dar este, de asemenea, destul de comun în js lume nod,
este comună în Tim propria bibliotecă Bookshelf
așa că vom revizita acest lucru în un exemplu mai concret
într-un moment este o soluție pentru ca acest cod,
aceasta este reprezentativ de cod am văzut pe luni, așa că citiți fișierul
în acest context, nu este un adevărat Metoda este similară în spirit
la fs punct citit dosarul, dar presupun că aceasta este doar o parte a făcut
Metoda up care face ceva foarte asemănător.
Așa că am fugit într-o câteva probleme legate de luni, în general,
Deci, ce este un fel de ... de ce este aceasta o pantă alunecoasă,
acest apel înapoi paradigmă de programare Java script
și de apel înapoi paradigmă Vreau să spun doar aceasta tehnica
în cazul în care nu se mai întorc Valorile imediat
pentru că s-ar putea bloca serverul
de la a face ceva care este util, în loc să te sun înapoi
cum ar fi sonerii de la Shake Shack atunci când sunteți gata
să treacă înapoi un răspuns ca un argument.
Aceasta este o pantă alunecoasă
în cazul în care foarte repede devine enervant de ce?
Da.
>> [Secțiunea inaudibil]
>> Da, minim devine un fel de drept ilizibil
dacă aveți toate aceste apel spatele și dacă sunteți care aderă
de stil bun se face destul de masiv indentat
în timp și caz I punctul asta exemplu, dacă un fel de degresat
prin aceasta este pur și simplu menit să deschide un fișier JSON și imprimați-l,
ca asta e și totuși noi au unele 8 sau 10 linii de aici
care sunt deja un fel de nastily indentat,
ne-am luat încerca captură care este
Dacă nu sunteți familiarizat este un tehnica de eroare de manipulare
care vă permite să încercați ceva
și dacă nu reușește, atunci -l prind, sperăm,
fără întreg programul de încheiere, dar nu e
atât de mult complexitate ca tine fel a trebuie să se gândească la asta
și Doamne ferește, vom face un cuplu de altă metodă asincron apeluri,
lucru este deja O să fie aici,
ai putea crede că acest lucru este un fel de un estetic prostie, dar acest lucru
deoarece apelul înapoi paradigmă este atât de comună, cel puțin
în cod nativ acest nod deveni foarte repede plictisitor,
greu de depanare, indentare începe să conteze, astfel încât să puteți sorta
de lucruri Chase jos, e doar nu un mod foarte fericit
de programare.
Deci, ce au făcut oameni
în diverse nod context printre le este să încercați pentru a simplifica acest lucru,
os de exemplu, promisiuni este un alt mod de gândire
despre scrierea de cod asincron care transformă vizual ceva
ca versiunea 1 în această versiune 2.
Eu susțin și acest lucru este din nou, doar un fel de amestec
între codul actual și pseudo cod, acest lucru este reprezentativ
de modul în care s-ar re-pune în aplicare că același lucru exact,
deschide un fișier JSON, analiza ea și imprima
folosind ceva numit promisiuni
si piese sintactic cheie este
că există o înlănțuire întâmplă pe aici.
Observați că singurul punct și virgulă
în întreaga ... de fapt bine hai ... Nu vreau să inducă în eroare.
Acest lucru nu este strict necesar dar să fie în concordanță,
observa ca punct și virgulă care se referă la deschiderea
din toată această declarație este tot drumul până aici.
Deci, în timp ce am formatat acest tip de ... uite
cum ar fi trei declarații, trei declarațiile pe care le-ar putea vedea
în Java sau alte limbi care au try și catch
și de manipulare excepție mai general.
Observați că am lanț valoarea de returnare a fiecărui
dintre aceste metode împreună.
Deci, ce se întâmplă, dosar citit dacă aceasta este o metodă care există,
aparent încearcă pentru a citi acest fișier,
dot atunci da, atunci este o foarte nume comun dat din lume
de promisiuni pentru metoda care ar trebui să execute
dacă ceea ce anterior a reușit.
Deci e un fel de succes manipulare, astfel încât atunci JSON punct parse,
și JSON punct Parse este doar o metodă de
în biblioteca JSON global și se pare că aderă
în acest caz Modelul promisiune
astfel încât să putem spune doar presupune că acest tip de apel
și dacă el reușește, atunci numesc acest tip și apoi
în cazul în care este de fapt execută pur și simplu consola jurnal de date
în cauză.
Deci, unde este eroarea manipulare, observa am un fel
de foarte orbește în trepte de pe această margine
și chiar a numit acest Metoda și apoi această metodă
fără a verifica pentru probleme.
Ei bine, în cazul în care sunt cele problemă probabil manipulate ... în aceste
declarații cache atât de diferite biblioteci folosesc diferite
convenții, dar, în acest caz, atunci este un fel
de manipulare succes, cache este un fel de tratare a erorilor
și pentru că noi nu am rupt acest lanț ne-am continuați să utilizați
punct notație pentru a lega împreună metoda invocarea originală
de fișier de citire și funcția invocare orice erori de sortare
de bule modul lor prin lanțul
până când acestea sunt de fapt tratate care este mult mai curat decât încercarea
să se ocupe de ea în fiecare naibii pas din drum
, astfel încât codul dvs. foarte devine rapid de date nereale.
În acest caz suntem susținând că încercăm
pentru a prinde ceea ce se numește un eroare de sintaxă este, în esență, o
subclasă de o mai generic eroare și dacă acest lucru se întâmplă cerere
că este JSON invalid altfel daca este o eroare mai generic
că nu ne așteptam doar spun mai multe, în general, nu se poate
citit dosarul.
Acum, acest lucru este doar a însemnat pentru a fi codul de reprezentant
dar dacă le-ați programat în script brut Java sau în Java
sau alte limbi aceasta este cod de procedură, în esență,
aceasta este o tradiție mai mult încercați declarație captură
și că este estetic și funcționalitatea care promite
sau încercarea de a vă oferi prin care vă puteți gândi de ea
ca scris doar încercare și apoi prinde și apoi să prinzi nu au
să vă faceți griji la fiecare posibil singur punct
în cazul în care o eroare s-ar putea mâner ... se întâmplă,
vă puteți ocupa de toate la termina ca este necesar de un bloc mic
de cod, și puteți chiar distinge între erori
ca tine poate în acest caz aici.
Astfel nomenclatura care veți a se vedea în literatura de specialitate, poate
ca Tim prezintă unele din aceste lucruri este de asemenea
care în mod ideal, vrei promite să rezolve
și rezolvarea un mijloc de promisiune care a reveni în cele din urmă ca să spunem așa
dar nu într-un mod tradițional de valoare, astfel că nici reușește
pentru eșuează în esență.
Bine întrebări, atunci, nu este menit să fie suficient
pentru expunerea la promisiuni ci doar un model mental
pentru codul pe care îl va începe să vadă.