>> Molt bé, així que estem de tornada, un parell de gols d'avui,
anem a recollir on el deixem l'última vegada,
Recordem que estàvem fent d'aquesta successió
de les aplicacions relacionades amb el servidor, super simple però utilitzant node JS
i després també més recentment usant toc exprés AS
i el que es va expressar el JS anàleg al món PHP.
Així que expresso és més ... de prop,
pel que expresso és essencialment el Marc MBC que és bastant
popular al món js node,
Prestatgeria de llibres que ja veurem avui a través de Tim és un anàleg
l'eloqüent que és un ORM en una relació objectal mapper
que en realitat fa que sigui més fàcil per evitar que el codi SQL de baix nivell
i en realitat expressar les relacions entre els diversos objectes.
Així que una de les més fredes coses amb honestedat
sobre js node és el fàcilment es presta
per fer aplicacions en temps real, coses com a servidors de xat
o servidors de missatgeria, qualsevol cosa que vostès fan servir ara
com Google ... G-xat o Google hangout
o actualitzacions d'estat de Facebook o fins i tot si vostè és Twitter
a la seva pàgina web tot és una espècie de temps real
o si la dóna il · lusió de temps real
i això és realment un dolor el coll a veure amb alguna cosa
com PHP i My SQL just el que ens proposem
dilluns seria el medi
pel qual es podria posar en pràctica el il · lusió de comportament en temps real
amb un servidor de xat en PHP, Què he de fer?
Alice envia un missatge, colpeja entrar a on va?
Sí
>> [Secció Inaudible]
>> En una base de dades i després ¿Què fa el navegador de l'Bob té
de fer per veure en realitat Alice ho ha dit, no?
>> [Secció Inaudible]
>> Segueix sondeig de la base de dades, dret, de manera que una petició ajax té
per disparar cada segon, cada pocs segon o parlem breument
però no veia un exemple de cosa que es diu temps de votació,
ningú recorda com
aquest mecanisme ... en un alt nivell treballa?
>> [Secció Inaudible]
>> Exactament, sí de manera que un navegador encara fa una petició ajax
a un servidor, a un punt foo php però amb una c dot php només sembla
per passar l'estona, s'assenta essencialment en un bucle while per tant
com 30 segons i normalment només una vegada que l'arxiu php punt foo
s'adona oh hi ha una nova fila
a la base de dades fa que en realitat respondre
amb un responen HTTP.
Així que vostè pensa que això podria en cas contrari penjar el servidor
i ho fa fins a cert punt
però significa que hi ha molt menys sobrecàrrega
perquè vostè no necessita un nou tcp connexió, una nova connexió HTP
per sol · licitar realitat dades des del servidor.
Però js node ve amb una molt biblioteca popular anomenada socket
dot io que vostè podria mai utilitzat està construït a la part superior
d'una tecnologia anomenada web sòcol que està present
en els navegadors més moderns i ho pren io que fa és que permet
per crear essencialment una connexió persistent
entre el navegador i el servidor això és molt baixa sobrecàrrega
pel que no necessàriament tenen els mateixos problemes d'escala
que és possible que si vostè és constantment colpejant el servidor
en el món de PHP i el meu SQL i similars.
Fins i tot per als navegadors més antics
que no són compatibles amb socket web aquesta biblioteca socket punt io pot
recórrer als flaixos aplicació de preses
i preses de corrent és una xarxa cosa de CS143 per exemple.
O fins i tot pot caure de nou en la llarga sondeig en si de manera que implementen
el mateix tipus de treball
voltant per efectivament al seu càrrec la il · lusió que la connexió.
Així que pren [inaudible] io i això és en la forma
d'una biblioteca de scripts de Java, essencialment Si el vostre
en la forma d'un node de JS aplicació que no només instal
com un paquet amb alguna cosa com a mecanisme nacional de prevenció que fem servir el dilluns
i o també inclou un despullar tag al fitxer HTML
que diu que l'ús de la Biblioteca del costat del client.
Així que hi ha dues meitats a i el que hem fet aquí
en la quarta iteració de la seqüència de dilluns
d'exemples és la següent.
Així que aquesta estructura d'arxius és una reminiscència d'un conjunt molt comú
per js i expressades per sort, és la forma més simple
que lervo [fonètic] va ser, recordar en configurar
fins lervo que tens un enorme desagradable bolcat d'una gran quantitat d'arxius,
directoris lib venedor, i molt pes pesat en comparació amb això.
Ara per ser justos hem despullat elimina allò que és més o menys un
distracció, però tot el coses sucoses és realment
en mòduls de node.
Només per donar un gust si mirem
en mòduls de nodes que hi ha dos mòduls o biblioteques
que he descarregat, aquest seria l'equivalent
del directori de proveïdors, un es diu exprés que és
com larevel però en el node
i el sòcol io el que acabo d'esmentar.
Així que aquests existeixen perquè puguem fer el següent si obro
fins diguem html a punt índex, primer anem a mirar al html,
això va a compondre aquest cos, el meu súper,
super simple servidor de xat.
Així que hi ha pel que sembla un ul amb una idea única de missatges
i aquí és on Li un alhora,
tots els missatges instantanis són va aparèixer entre Alice
i Bob i després hi ha un senzill formulari amb un camp de text
i un botó d'enviament pel qual Alice
o Bob pot en realitat missatge d'un a l'altre.
De manera que l'efecte net si Dirigeixo aquesta aplicació
fent node d'aplicació espacial de punts js, si tir un parell
de les finestres del navegador és que Alice podria estar a la dreta,
Bob podria ser en la esquerra i només
tenir clar que no hi ha màgia aquí tinc una finestra
en incògnit perquè no hi hagi intercanvi de galetes o qualsevol cosa
així, aquests són dos usuaris diferents.
Jo hauria de ser capaç de tenir Alice saludar Bob, feu clic a Envia
i ara que es veu a l'esquerra que el missatge d'Alice va ser enviat
i gairebé instantàniament a la dreta.
No de votació aparentment implicats, Bob rebut el mateix missatge.
Ara Bob diu sent dir Alice que vegi l'efecte contrari.
Llavors, què està passant en realitat, com tant codi què necessitem per escriure
per implementar aquest un servidor de xat
que ara es pot extrapolar mentalment que tothom
en aquesta sala si aquest no estaven en el meu [inaudible]
però en foo punt com tots podríem començar a xatejar instantàniament
un amb l'altre.
Així que el que està involucrat i abans que esborrar aquesta pantalla és aquesta
s'acaba de port IO de ser un poc sorollós, és la impressió només
informació sobre depuració a la pantalla,
no hi ha realment res més que fer.
Així que permetin-me obro js punt d'aplicacions, de manera que com abans tenim algunes coses
a la part superior de l'arxiu.
Un munt de requisits, de manera que aquests són com biblioteques
o esmolar pistes o requerir onzes qualsevol model mental que
desitja tenir i només per recapitular FS s'utilitza
per a quin tipus de funcionalitat?
Així que el sistema d'arxius el que la lectura d'arxius potencialment, i coses per l'estil
i jo faig això en una col · locar com es veurà,
exprés, per descomptat, és aquesta marc en el que estem utilitzant,
que no és estrictament Cal que vam poder
com dilluns totalment crear nostre propi servidor http des de zero
fent crear servidor i tots els d'aquest tipus de codi d'abans
però com veurem això fa les coses una mica més fàcil
perquè tot el que he de fer és a la línia 3 aquí instanciar
i expressar objecte, vaig a trucar que l'aplicació, una mica arbitràriament,
Jo llavors vaig dir que l'aplicació escoltar al port 1337 de forma arbitrària,
que podria ser 80 per convenció
i després, finalment, tinc un nou línia d'avui que ja és dir
per requerir la presa biblioteca io i després
aquest enfocament de la cadena seria aquest operador punt només sóc
cridant a una lliçó escolta això és essencialment dient la presa
biblioteca io també escoltar aquesta mateix servidor
o Web connexions de socket.
I ara què, i què és aquesta fent, aquestes quatre línies
de codi amb el qual ha buscar una reminiscència de larevel,
Què representa això?
>> [Secció Inaudible]
>> Aquesta és una ruta ..., només una ruta de manera que en js punt d'aplicacions,
aka js de punts depenent del servidor en el que la gent vol dir
en les seves pròpies aplicacions vostè té una convenció
de fer la definició de les seves rutes,
significa app Aconsegueix punts cada vegada que rebi una sol · licitud per arribar a anar
a per retallar literalment seguir endavant i cridar a aquesta funció anònima
i la funció anònima en aquest cas porta per requeriment
o petició i una resposta, potencialment algunes altres coses
però mínimament aquests dos.
La sol · licitud li dóna accés a coses com paràmetres http
i les capçaleres i altres coses sucoses
i després la resposta és el mecanisme
pel qual es pot respondre a l'usuari.
Així que això és súper simple, fins i tot encara que no hem vist tot el
mateix codi de l'última vegada, jo sóc utilitzant els mòduls del sistema d'arxius,
crear el mètode corrent de lectura que essencialment fa que,
crear un flux de lectura que significa essencialment començar xuclar
els bytes del punt índex html tan eficientment com sigui possible
sense que sigui necessari esperar fins que el teu llegir tot l'arxiu
i com es fa això canonada de manera literal
en el sentit de barra vertical si se sent còmode
amb la línia d'ordres de Linux,
canonada a la resposta l'objecte.
Així que hi va haver dos exemples en relació amb els corrents de dilluns,
només ens fixem en un, sinó us convidem a mirar cap enrere
en o corrent i la corrent 1.
Flux 1 ... 0 fer alguna cosa similar a això,
corrent 1 va fer alguna cosa gairebé exactament igual que aquest,
això és només una taca un traçador de línies de dir espècie
de xuclar alguna cosa per aquí i després començar a enviar des d'aquí
al mateix temps, sense fent una massa d'acord
i després a la dreta massiva,
aquest enfocament és generalment més eficient.
Així que això és una cosa de la vell fins i tot si era nou el dilluns,
això és tot el que es necessita per implementar un servidor de xat
amb JS de node i més socket específicament dot io.
Llavors, com funciona això, m'ho dius a mi moc una mica,
així io és només una variable que es refereix
al mòdul ens requerida anteriorment,
presa de punts és només un propietat dins d'ella
això em fa socket funcionalitat relacionada
On és un mètode comú que es refereix al que la noció general?
Un esdeveniment així successivament escoltar àlies en algunes biblioteques només significa
en sentir aquest esdeveniment que es diu connexió
i ara vostè sap que això només des mirant a la documentació,
qui va escriure la biblioteca defineix un esdeveniment anomenat
la connexió que fa que la seva pensaria
quan Alice o Bob connecta.
Seguir endavant i trucar a aquest funció anònima presa mort
en un argument del client que pel que sembla és una espècie
l'objecte que representa Connexió d'Alice
o la connexió de Bob o Charlie o qualsevol altra persona
i ara fem el següent.
Li diem al client després de ell o ella està connectat
per escoltar específicament
per a un missatge que és completament arbitràriament anomenada missatge
client de còlon.
Això és una cosa que Tim i Es va acudir, podria ser foo
o al bar, que és només una mica de cadena única que necessitàvem
per decidir com els desenvolupadors.
Cada vegada que Alice o Bob sent
que aquest esdeveniment anònim funció ha de ser anomenada
i les dades, la contingut d'Alicia de
o missatge de Bob ha de ser passat a aquest controlador d'esdeveniments
i ara el que deu el client bé que pugui espècie
de llegir això bastant intuïtiva el client ha de transmetre,
també coneguda com emeten un missatge denominat servidor de mètodes
significant amb això aquest missatge que ve des del servidor no
des del navegador i el seria que el missatge ésser,
pel que sembla és la càrrega útil de el que sorgís dels clients
i només anem a arbitràriament cridar missatge.
Així que molt d'això és arbitrari
a través de noms raonable convencions, Tim i jo vam venir
amb, majoritàriament Tim i després simplement estan creant en última instància, una
servidor que fa el que el xat, quan Alice envia un missatge
i èxits entren quin esdeveniment aparentment és acomiadat,
només per recapitular.
Tipus d'Alicia un missatge, cops entrar, un client de missatgeria és acomiadat,
aquest codi sent això i ara el servidor transmet el que,
Quin és el resultat final d'aquesta realitat?
Alice envia el missatge ara el servidor torna a difondre
eficaçment a tots, excepte per Alice, per què tothom menys
per Alice si vostè acaba de veure
en el client documentació dot dot emissió admetre,
literalment fa això, transmet el missatge
per a tots excepte per al client que li va enviar
que el missatge més recent.
Així que això és pel que només veure que un cop a cada costat,
vostè no veu que Alice i Bob aconsegueix el missatge d'Alice.
Així que això és tot, aquest és un agent de retransmissió
si es vol que la simplement prendre en els missatges
i la retransmissió a terme
i és notablement escalable Vull dir, fins i tot
amb una super simple servidor i unes poques línies
de codi certament es podria gestionar centenars si no milers
de missatges simples concurrents anar i venir com aquest
i només imaginar la complexitat ara de fer això en PHD
o Larevel o el meu SQL i la quantitat de codi que tindria
escriure per tal de en realitat aconseguir això.
Ara per ser justos aquesta No és correcte persistent
si el servidor cau perdem tota la història
així que no és un bon traducció perfecta però és
que directament.
Fem una ullada a la seqüència de comandaments de Java codi passem per alt anteriorment,
aquesta és Alice i Client de Bob,
la pàgina web que estan fent servir ara veurem aquí per un moment.
Hi ha una mica més de codi
però és pràcticament només jQuery aquí, així que avís
que a la pàgina web que vaig treure
fins fa un moment en què incloure la llibreria jQuery,
la presa de corrent io biblioteca i com un compte de banda la diferència
aquí, slash slash en l'inici d'un camí
com això vol dir què és exactament,
On està jQuery dot js en quin servidor?
Sí
>> [Secció Inaudible]
>> És a l'Internet si literalment, anomenat punt de codi jQuery
punt com per què retallar, retallar, Per què no acaba d'un tall,
On és el http o el còlon, Què significa això, en general,
si Slash Slash en el principi de la URL?
És realment útil.
Bé pel que el que és, òbviament, falta http ara si raonem
a través d'aquest lògicament, normalment no cal
esmentar els noms de servidors dret
com si només ha d'utilitzar slash jQuery js punt el que s'assumeix
pel navegador?
Que l'arxiu es troba en la mateixa servidor per continuar amb aquest tipus
de la lògica, si no l'hi dius que el que el que és el protocol
navegador assumeixi, pel mateix protocol si alguna vegada has visitat llocs web
Això li dóna un error al llarg de les línies de contingut no segur
en aquesta pàgina és perquè algú ha estat codificat per un http
slash slash de còlon URL per a un imatge o un arxiu de script de Java
o un arxiu CSS, una mena en el codi font de la pàgina
però la pròpia pàgina en el URL navegadors http s.
Així que això és només el poc més de fantasia
de dir que no sé el que el protocol és
que aquests usuaris finals utilitzarà
però només assegureu-vos que partits de manera que el crom
i altres navegadors no cridar en l'usuari.
L'única pega és el persones havien jQuery millor establir
https cap amunt en el seu servidor.
Així que en realitat són la inclusió en el 443.
Molt bé per la seva banda aquesta d'aquí això és una espècie
de slash enganyosa io socket suggereix
que hi ha un directori anomenat io punt socket al meu servidor
però no hi ha si traiem el cap
tot hi ha el directori del mòdul de node
però no hi ha res públic sobre això,
quan configurem io socket per escoltar en els mateixos ports,
1337, fonamentalment, que la biblioteca que algú més va escriure és va
per inserir espècie d'una mica de codi en l'entorn dels js de nodes
i simplement escoltar aquest camí.
Aquesta biblioteca té només configurat una ruta per això,
no és un directori real.
Seria en un ubicació estàndard.
Bé pel que ara l'interessant banda,
així que quan el document és preparat com s'indica
per aquesta jQuery construir, primer vaig a seguir endavant
i connectar-se a una presa de corrent,
ho pren amb només mantenir ... senzill Vaig a connectar
retallar, això és on està l'usuari,
He mantingut l'exemple senzill només anem a connectar
a la mateixa URL exacta que la usuari ha visitat després vaig
fer el següent, vaig indicar-li al navegador d'Alice o Bob
per escoltar la missatge des del servidor.
De nou, això podria haver estat foo
o prohibir qualsevol moment escoltar un missatge
de les dades que el servidor de trucades i després fer el codi jQuery
que suposo que la majoria, si no tothom està familiaritzat
amb aquests dies però essencialment un pin a la llista article
a la UL existent que es va cridar missatges
que diu, literalment, qualsevol que sigui la càrrega útil és
del missatge de xat seguit per un guió, seguit per rebre,
seguit d'un espai i després un temps d'actualització i per això
tenir clar si ens remuntem
per això vostè aconsegueix aquests addicionals bales i una altra
i de nou amb els temps de la data.
Mentrestant, si mirem aquí només tenim
per manejar l'enviament del formulari pel que va ser la receptora
d'un missatge instantani, aquí està l'enviament i això és una espècie
de no relacionat amb js node, escoltar a les formes presentar esdeveniment.
Quan succeeix evitar un impagament, això només vol dir que no el presenti
per al servidor en l'habitual manera, tornar a carregar tota la pàgina,
volem fer tot això a través de ajax.
Heus aquí només alguns codis jQuery
per aconseguir realment l'entrada el tipus és el missatge,
el nom és el missatge que endavant
i obtenir el seu valor a continuació, seguir endavant
i si realment té un missatge, si Alice i Bob
o Bob en realitat alguns tipus cap 0 nombre pulsacions del teclat emeten
en la presa d'un missatge de trucada client de missatgeria amb el qual la càrrega útil
i després aquí es tracta de el que el converteix en verd en lloc
roent, simplement la sortida costat de l'aparell [inaudible].
Així que és això, però tots això és només la posada a punt,
les coses de veritat nou ho faria argumentar és només aquests tres
o cinc línies de codi aquí i aquest tipus de consells al poder
js de nodes i amb ella aquesta biblioteca particular.
Així que anem a fer un ràpid mira de punt expresses js,
així que el que vaig a tractar de fer a la parella restant
de minuts aquí és configurar una poques idea, algunes tècniques
que caldrà esperar un parell minuts de descans, Tim establir
i després anem a bussejar més profund
a un més interessant expressar aplicació i també
tipus prestatgeria, la biblioteca la Tim realment escriure
per a la comunitat de codi obert
això ens dóna llum eloqüent funcionalitat amb el meu SQL
i transaccions i altres tals característiques i que també va a bussejar
en una mica més a la mateix script llenguatge Java,
com el seu objecte o no de classes model funciona d'una altra manera sap
com un model prototip, una mica més que per venir.
Així que donem una ullada a dues últimes aplicacions aquí, servidor de cinc
i el servidor 6, que són tots espècie d'esperit semblant,
aquests no són servidors de xat però utilitzen expressa.
Així que donem una ullada a el que això fa en realitat,
Vaig a seguir endavant i oberta ... Jo vaig a córrer aquesta aplicació
amb js app node, vaig a tornar al meu navegador i torneu a carregar
i això és aparentment tot aquest servidor està fent,
es tracta d'un servidor super simple això és pel que sembla una recerca
motor pel que si escric en foo i presentar, no hi ha resultats de la recerca
per menjar, no em puc moure l'aplicació de la sofisticada
part final, tot es va
fer és fet, no importa el que escriu no hi ha resultats per menjar,
no hi ha resultats per a bar així que com ho fem
perquè hi ha una peces de parella, un,
clarament hi ha alguns entrades que es presten
en no servidor Larevel per descomptat, però js node ara
per la qual cosa necessitem d'alguna manera arribar a aquest paràmetre Q,
que estem fent amb claredat algun tipus de vista aquí,
estem fent una vista de manera potser hi ha una oportunitat
de plantilles o variables interprelation [fonètic]
així que anem a fer una ullada en el següent.
En js app per aquest particular, servidor això és tot el que tenim.
Un requerim expressar sí, dos el mòdul de trajectòria
que només fa alguns coses útils
com unir-se a cadenes junts i així successivament per a mi,
Escolto al port 1337 i ara això és nou, així que resulta
que expresso com Larevel suporta diferents plug-ins
i tecnologies i altres coses i un
de les tecnologies que pot connectar un motor de vista
que només significa el de plantilles motor vols utilitzar,
Larevel tenia la seva pròpia cosa, però es pot connectar
en diferents coses, diferents marcs P préssec tenen
diferents formes de les plantilles, ex és només una comuna
i un motor bastant simple que només farem les coses
igual que les claus que que tenia en la sintaxi Larevels
per a la substitució de les variables,
que és una mica diferent sintàcticament és tot.
Així que ara hi ha una cosa anomenada middle programari així com es veurà
en el seu propi equip node del projecte d'un middle mari és només una mica de codi
o biblioteques que s'injecti
al [inaudible] Resposta cicle de vida d'una aplicació,
en altres paraules, aquests dos línies estan dient exprés
per fer algun treball extra entre el temps que es rep una petició
i entre el temps que s'envia aquesta sol · licitud a la seva pròpia ruta,
el codi que has escrit.
Així, en particular, aquesta línia aquí utilitzar dot exprés estàtica i tot
d'aquesta complexitat això només vol dir que si vostè veu una sol · licitud
que ve en un arxiu estàtic com JIF punt foo foo o punt css
o un punt foo no js de manera que un ruta generada dinàmicament,
seguir endavant i assumeixi que viu en el subdirectori pública,
això és tot el que està fent.
És una mena de cartografia en Larevel, tot al seu web
o en el seu directori públic més aviat en Larevel.
La següent línia és només dient que vull utilitzar rutes,
Vull utilitzar coses com a aplicació dot obtenir
que vam veure fa un moment i ja veurem en un segon moment.
Dot Així app Aconsegueix mitjans escoltar per aquesta ruta,
slash quan ho aconsegueixes cridar a aquest funció anònima que pren
en una sol · licitud i un resposta i ara només
com Larevel vostè té una manera de fer una plantilla,
resposta dot render, citar índex final de la cita,
render és una plantilla anomenat índex,
això és tot el que anem a suspendre a aquest fil per només una mirada moment
en el contingut de directori vistes
i observi això també és super simple per ara,
hi ha índexs ex punt i la recerca de punts ex,
Òbviament vull que la primera
perquè aquesta és la que acabo de cansat de fer i veurem
en l'índex de visites ex punt més realitat enterament HTML
en aquest moment, no hi ha en realitat no hi ha plantilles passant.
Així que tècnicament no ho vaig fer fins i tot necessitat de cridar ex,
No necessito que la funcionalitat però el vaig mantenir uniforme,
així que això és tot, això és el que em dóna aquesta forma super simple.
Així que només hi ha una altra via, si mirem aquí he dit
que això és el que s'encarrega d'obtenir slash recerca per al tipus real
de Google com el controlador per al Formulari d'enviament, quan arribi
aquest camí trucar a aquest funció anònima
i fer que la plantilla trucada de recerca
i el que és la segona argument presumiblement significa.
Es veu com un objecte json de tipus o objecte de script de Java.
Quin és el paper d'aquest segon argument presumiblement?
>> [Secció Inaudible]
>> La consulta real que la escrit en l'usuari viu aparentment
en la sol · licitud de consulta de punts, consulta referint-se a tot el
després del punt del signe d'interrogació Q que és el nom arbitrària
que jo li vaig donar igual que Google
i mentrestant q còlon és només dient passen a la plantilla,
ex recerca de punts, 1 clau de q i un valor
de la real el q valor va ser.
Així que deixa només una arxiu d'interès a les opinions,
ex recerca de punts que vaig guardar aquesta super simple també,
És més que res, excepte HTML per una línia bastant notable
que és aquesta sintaxi aquí que s'assembla a un munt
de diferents plantilles motors això només significa endoll
en el valor de q i posar-lo en negreta.
Així que no hi ha veritable recerca funcionalitat, però sí tipus
de suggerir com ho faria estructurar un esquelet
d'una aplicació així.
Mentrestant ... en realitat jo pot mostrar una cosa més,
adonar que tinc algunes html aquí per css
i els arxius de script de Java, no hi ha res en els arxius
en el moment de notar que hi ha un directori públic
com vaig dir al principi de arxius estàtics pel que si em vaig
allí hi ha el meu directori css,
si vaig allà Hi ha estils dot css
i no hi ha cap contingut allà
però aquesta és la forma en què ho faria tenir arxius públics accessibles.
Molt bé anem a fer una ullada en una altra variant aquí
i després anem a introduir una idea i descans.
Així que aquest és l'últim servidor de 6, per la qual cosa això és gairebé idèntics excepte
per a les dues línies inferiors de tenir aquest aspecte.
Així que en realitat hi ha una tercera línia que és diferent
però m'he amagat ... així que em va deixar de nou lleugerament pel que vol a algú
proposar el que està passant aquí en termes senzills
o termes tècnics Què hi ha diferent en aquesta versió
pel que fa als línies en els nodes superiors.
Què tinc jo presumiblement fet aquí i per què?
Sí, Sharon.
>> [Secció Inaudible]
>> Si que sembla que tinc Índex mogut i recerca
així que a part directament o alguna cosa així, Els he eliminat gairebé
i això és pel que igual que en Larevel es pot posar tot
de la lògica del controlador dins de les rutes esquitxen php
amb funcions anònimes una i altra vegada i una altra
però aquest arxiu de curs pot ser bastant massiva
pel que en les rutes dot php el que més
que vostès han estat fent és que vostè hagi especificat el nom
d'una classe de controlador o fins i tot el nom d'un mètode
que ha de rebre trucada
pel que la mateixa idea aquí, fins i tot encara que la sintaxi és una mica
diferent pel que aquí notificació
que tinc pel que sembla implementat les meves pròpies js node
mòdul i un mòdul és només un Arxiu de script de Java que s'adhereix
a essencialment una convenció que veurem en un moment.
Així que assumir que tots els de la meva funcionalitat per l'índex
i per a la recerca de tenir aparentment ha posat en aquest directori
i ara estic trucant a que tot mòdul o paquet o biblioteca,
el que vulguis a pensar-hi com,
com rutes una variable anomenat rutes.
Així que pel que sembla en allà rutes Índex de punts és un mètode anomenat
índex i pel que sembla no hi ha un altre mètode anomenat de cerca
en aquests mòduls de rutes o biblioteca
i només estic encaminament només perquè jo no poso tot
del meu codi anònim dins del meu app.
Així que entrarem en les rutes notice només hi ha índex js punt
i si em veig aquí és la convenció em referia anteriorment
així que això és bastant arbitrària però és la convenció de node.
Cada vegada que s'implementi la seva pròpia biblioteca js node,
també conegut com a mòdul que essencialment pot escriure cap codi script de Java que
desitjar en aquest arxiu, ser sorra molt neta en caixa
de manera que qualsevol variable li triar no xocaran
amb la biblioteca de qualsevol altra persona, variables o mètodes o gens
així, però res vol exposar
al món exterior una ala mètode públic en escriptura Java
o php o en altres idiomes vostè ha de plop a l'interior
d'un objecte global que el autor del node anomenat exportacions.
Així que fent les exportacions dot índex del que estic exposant als usuaris
d'aquest mòdul un mètode anomenat índex que s'assigna a aquesta funció
pel que és anònim en el costat dret
però estic efectivament donant-li un nom a la banda esquerra
i exportar al món
de manera que vostè pot trucar Índex de punts o la recerca de punts.
Així que per estar clar si jo també tenia una mena de funció foo
aquí que van fer alguna cosa
que la funció faria absolutament en funcionament,
podria ser cridat a aquesta imatge però ningú
en el món exterior freda mai diuen foo
perquè no s'ha exportat a través d'aquesta notació de punts.
Així que això és tot el que està passant,
tot està molt bé nomenar espai per a vostè.
Així que el resultat final, si ho faig node d'aplicació i tornar a carregar la pàgina és
que si jo ara busco
per a la barra ... funcionalment aquestes aplicacions són les mateixes
però és només una espècie de pas cap a una aplicació més neta,
sens dubte quan s'inicia escrivint més i més codi
i això és tot el que són.
Òbviament no especialment sofisticat o complex
però essencialment un punt de partida
per al que serà el seu primera aplicació js node.
El que farem probablement més tard aquesta setmana o aquest cap de setmana
com ho estan acabant en el aplicacions PHP seguirem
amb una molt simple sol · licitud per a l'equip per bussejar
en similars en esperit a l'exercici d'escalfament per php
que basat en la mitjans enquesta semestre,
persones van trobar útil passant per l'exercici
de fer alguna cosa bastant simple
però bastant guiada abans en realitat enfront d'alguna cosa més
pel seu compte per la qual cosa seguiment amb què
i, essencialment, serà per una setmana i mitja
a partir d'ara es solapen lleugerament amb php deliberadament.
Qualsevol pregunta llavors sobre expressar, en io socket
o confusió restant de dilluns potser.
Molt bé, així que espero una de el prendre-a-formes fins ara és
que hi ha per a alguns d'aquests Les coses certament molt menys
despeses generals del que podria s'han utilitzat per.
Així que permetin-me presentar una darrera idea,
de manera que una molt comuna paradigma de programació
en escriptura de Java que és realment present en jQuery
en les versions recents de manera que podria tenir en realitat vist aquesta tècnica
abans, però també és força comú en el món JS node,
que és comú a Tim pròpia biblioteca de prestatgeria
així que tornarem a visitar aquest en un exemple més concret
en un moment és una solució codificar com aquest,
això és representatiu de codi vam veure el dilluns, pel que llegim arxiu
En aquest context, no és un veritable mètode que és similar en esperit
a fs dot llegir l'arxiu però assumir que això és només alguns fets
fins mètode que fa una cosa molt semblant.
Així ens trobem amb uns pocs problemes dilluns en general
així que el que és una espècie de ... per què És aquest un terreny relliscós,
Aquest anomenar paradigma de programació Java script
i per tornar la trucada paradigma Només vull dir que aquesta tècnica
on vostè no torna valors immediatament
perquè això podria bloquejar el servidor
de fer alguna cosa més que és útil, en lloc de trucar de nou
com els brunzidors en Shake Shack quan estigui llest
a passar de nou una resposta com a argument.
Aquesta és una pendent relliscosa
on molt ràpidament esdevé molest per què?
Sí
>> [Secció Inaudible]
>> Si, mínimament es fa tipus de dret il · legible
si vostè té totes aquestes trucades respatllers i si estàs adherits
al bon estil s'està fent bastant massiva sagnia
amb el temps i el cas Assenyalo això exemple, si una espècie de llet descremada
a través d'ella és simplement la intenció de obrir un arxiu json i imprimir,
com això és tot i no obstant això, tenen uns 8 o 10 línies aquí
que ja són una espècie de mala manera amb sangria,
tenim intent de captura que és
Si no està familiaritzat és una tècnica de gestió d'errors
que li permet provar alguna cosa
i si falla, llavors s'agafa amb sort
sense que tot el seu programa terminació, però no hi ha
tanta complexitat com quin tipus d'haver de pensar en això
i Déu no ho vulgui que fem un parell de altre mètode asíncron flama,
la cosa ja és estarà per aquí,
vostè podria pensar que això és una espècie d'una estètica ximple però aquesta
perquè la trucada de tornada paradigma és tan comú, almenys,
en el codi natiu d'aquest node convertit molt ràpidament tediós,
difícils de depurar, la sagnia comença amb la matèria perquè pugui ordenar
de les coses chase baix, és simplement no és una manera molt feliç
de programació.
Així que el que la gent ha fet
en diversos node de context entre els ells es tracten de simplificar això,
us per exemple promeses és una altra manera de pensar
sobre com escriure codi asíncron que resulta visualment alguna cosa
com la versió 1 a aquesta versió 2.
Jo reclam i això és de nou només una espècie de barreja
entre el codi real i la pseudo codi, això és representatiu
de com li agradaria tornar a implementar exactament el mateix,
obrir un arxiu json, analitzar i imprimir
utilitzen una anomenat promeses
i el detall sintàctic clau és
que hi ha un encadenament passant aquí.
Tingueu en compte que l'únic punt i coma
en tot ... en realitat ben anem a ... No vull enganyar.
Això no és estrictament necessari però siguem coherents,
compte que el punt i coma que fa a l'obertura
de tota aquesta declaració és tot el camí fins aquí.
Així, mentre que he formatat aquest ... tipus de mira
com tres declaracions, tres declaracions que es poden veure
en Java o en altres idiomes que tenen try i catch
i el maneig d'excepcions més en general.
Tingueu en compte que acabo de cadena el valor de retorn de cada
d'aquests mètodes junts.
Llavors, què està passant, lectura d'arxius si aquest és un mètode que existeix,
aparentment intenta per llegir aquest arxiu,
punt llavors és així, és una molt nom comú donat al món
de promeses per al mètode que s'ha d'executar
si l'anterior va succeir.
Així que és una cosa així com l'èxit manipulador, parse punt és així, json,
així parse punt json és simplement un mètode
a la biblioteca json mundial i aparentment s'adhereix
en aquest cas, la model de promesa
així que dir que pot simplement assumir que la crida a aquest tipus
i si té èxit llavors trucar a aquest noi i després
si això és en realitat executa simplement consolar ingressi les dades
en qüestió.
Llavors, on està l'error manipulació, noto que he espècie
de trepitjat molt cegament d'aquesta sortint
i acaba de cridar aquesta mètode i a continuació, aquest mètode
sense comprovar per problemes.
Doncs on són els problemes presumiblement manejat ... en aquests
declaracions de memòria cau de manera diferent biblioteques utilitzen diferents
convencions, però en aquest cas, llavors és una espècie
del controlador d'èxit, la memòria cau és una espècie de controlador d'errors
i perquè no hem trencat aquesta cadena que només fer servir
notació de punts per vincular la invocació del mètode original
d'arxius de lectura i la funció invocació qualsevol error de classificació
bombolla del seu camí a través de la cadena
fins que són en realitat manejats que és molt més net d'intentar
per tractar amb ell tots els maleït pas del camí
perquè el seu codi molt ràpidament es converteix en dades irreals.
En aquest cas estem al · legant que tractem
per agafar el que es diu un error de sintaxi que és essencialment un
subclasse d'un més genèric error i si això succeeix reclam
que és json no vàlid d'una altra manera si es tracta d'un error de més genèric
que no esperàvem només més general diuen que no pot
llegir el fitxer.
Ara bé, això és només la intenció ser codi representatiu
però si vostè ha programat en guió prima Java o en Java
o altres idiomes és codi de procediments essencialment,
es tracta d'una tradició més tractar sentència catch
i aquesta és l'estètica i la funcionalitat que promet
o tractant de donar-li pel qual vostè pot pensar en ell
tan sols escriure try i després atrapar i després agafar no tenir
de preocupar en cada únic punt possible
on un error podria gestionar ... passar,
es pot gestionar tot l' acabarà quan sigui necessari d'un petit bloc
del codi, i fins i tot es pot distingir entre errors
com es pot en aquest cas aquí.
Així que la nomenclatura que vostè va a veure a la literatura potser
com Tim presenta algunes d'aquesta matèria també és
que l'ideal seria que desitja promet resoldre
i la resolució d'un mitjà de la promesa que per fi tornen per dir-ho
però no d'una manera tradicional de valor, de manera que tampoc té èxit
per falla essencialment.
Molt bé les preguntes, llavors, no és la intenció de ser suficient
per a l'exposició a les promeses però només un model mental
per al codi que començarà a veure.