>> Alles klar, so sind wir wieder, ein paar Ziele für heute,
wir abholen, wo wir aufgehört letzten Mal,
daran erinnern, dass wir Herstellung dieser Folge
von Server-bezogenen Anwendungen, Super einfach, aber mit Knoten JS
und dann auch die zuletzt mit Touch-Express AS
und was ausgedrückt wurde die JS Analog der in der PHP-Welt.
So Express ist mehr ... in der Nähe,
so express ist im Wesentlichen die MBC-Framework, das ist ziemlich
im Knoten js Welt beliebt,
Bücherregal, das wir sehen, heute über Tim ist ein Analogon
der eloquent, der ein ORM ist auf ein Objekt Bezug Mapper
dass tatsächlich macht es einfacher auf niedrigem Niveau SQL-Code zu vermeiden
und tatsächlich Beziehungen ausdrücken zwischen den verschiedenen Objekten.
Also eine der coolsten Dinge ehrlich
über Knoten js ist nur, wie leicht es selbst verleiht
zu tun, Echtzeit-Anwendungen, Dinge wie Chatserver
oder Messaging-Server, alles, was euch jetzt verwenden
wie Google ... G-Chat oder Google Hangout
oder Facebook-Status-Updates oder auch Twitter, wenn Sie
auf ihrer Web-Seite alles ist eine Art Echtzeit
oder gibt Ihnen die Illusion der Echtzeit
und das ist wirklich ein Schmerz im der Hals, mit etwas zu tun,
wie PHP und meine SQL Recht was haben wir vor
am Montag würde die Mittel sein
, mit denen Sie implementieren könnte die Illusion der Echtzeitverhalten
mit einem Chat-Server in PHP, was würden Sie tun?
Alice sendet eine Nachricht, trifft geben, wo geht es hin?
Ja.
>> [Inaudible Abschnitt]
>> In einer Datenbank und dann Was bedeutet Bob Browser haben
zu tun, um tatsächlich sehen was Alice gesagt hat, ja?
>> [Inaudible Abschnitt]
Halten >> Abfrage der Datenbank, rechts, so dass ein Ajax-Request hat
jede Sekunde ausgelöst, alle paar Sekunden oder wir sprachen kurz
aber nicht ein Beispiel an schauen etwas namens lange Polling,
jemand daran erinnern, wie
dieser Mechanismus auf ... eine hohe funktioniert?
>> [Inaudible Abschnitt]
>> Genau, ja, so ein Browser macht immer noch einen Ajax-Request
zu einem Server auf einen Punkt foo php aber foo dot php scheint nur
zu hängen, sitzt es im Wesentlichen in einer while-Schleife für so viele
30 Sekunden und typischerweise nur einmal die foo dot PHP-Datei
erkennt, oh es gibt eine neue Zeile
in der Datenbasis hat es tatsächlich reagieren
mit einem http reagieren.
Sie glauben also, dass diese Macht andernfalls den Server hängen
und zu einem gewissen Grad funktioniert
aber es bedeutet, dass es viel weniger Overhead
weil Sie eine neue tcp nicht brauchen Verbindung eine neue Verbindung htp
tatsächlich beantragen Daten vom Server.
Aber Knoten js kommt mit einem sehr Volksbibliothek genannten Socket
dot io denen man nie verwendet wird oben gebaut
einer Technologie namens Web Steckdose vorhanden ist, die
in den meisten modernen Browsern und auf welchem ​​Sockel io tut damit Sie ist
Wesentlichen erstellen eine persistente Verbindung
zwischen Browser und Server das ist sehr wenig Overhead
so dass Sie nicht unbedingt tun Habe das gleiche Skalierungsprobleme
dass Sie vielleicht, wenn Sie ständig schlagen die Server
in der Welt der PHP und meine SQL und dergleichen.
Auch für ältere Browser
dass nicht unterstützen Web-Buchse dieser Bibliothek Buchse dot io können
zurückgreifen blinkt Umsetzung der Buchsen
und Steckdosen ist ein Netzwerk Ding von CS143 zum Beispiel.
Oder es kann sogar zurückgreifen auf lang Polling, so dass sie selbst zu implementieren
dass gleiche Art von Arbeit
um für die tatsächlich für die Illusion von dieser Verbindung.
So Buchse [unverständlich] io und dies ist in der Form
einer Java-Script-Bibliothek, hauptsächlich, wenn Sie es verwenden
in Form eines Knotens js Anwendung, die Sie nicht nur installieren
es als Paket mit so etwas wie NPM, die wir am Montag, verwendet
und oder auch eine Streifen-Tag in HTML-Datei in Ihrem
sagt, dass die Verwendung Client-Seite Bibliothek.
Es gibt also zwei Hälften zu und was wir hier gemacht haben
in der vierten Iteration von Montag-Sequenz
Beispiele ist der folgende.
Also das Dateistruktur erinnert an einen sehr allgemeinen Satz
zum Ausdruck gebracht und js Gott sei Dank es ist viel einfacher
als lervo [phonetische] wurde, erinnern, als Sie eingestellt
bis lervo Sie bekam einen riesigen böse Dump einer ganzen Menge von Dateien,
Anbieter-Verzeichnisse, lib und sehr Schwergewicht im Vergleich zu diesem.
Jetzt in Fairness wir abgestreift haben weg Sachen, die ist ziemlich viel ein
Ablenkung aber alle saftige Zeug ist wirklich
in Knotenmodule.
Nur um Ihnen ein Geschmack, wenn wir uns
am Knoten Module gibt es zwei Module oder Bibliotheken
dass ich heruntergeladen habe, diese wäre das Äquivalent sein
des Lieferanten-Verzeichnis ein wird ausdrücklich genannt ist die
wie larevel aber in Knoten
und Steckdose io die ich gerade erwähnt.
Also diejenigen bestehen, so dass wir Sie die folgenden Schritte, wenn ich öffnen
bis sagen wir mal Indexpunkt html, Lassen Sie uns zunächst einen Blick auf die html,
das wird zu komponieren dieser Körper, mein super,
super einfaches Chat-Server.
Es gibt also offenbar eine ul mit einer einzigartigen Idee von Nachrichten
und das ist, wo eine Li zu einem Zeitpunkt,
alle Sofortnachrichten sind werde zwischen Alice erscheinen
und Bob und dann gibt es eine einfaches Formular mit einem Textfeld
und einen Submit-Button , durch die Alice
oder Bob können tatsächlich Meldung jedes andere.
So ist der Nettoeffekt, wenn Ich diese Anwendung ausführen
Knoten, indem Sie Raum App dot js, wenn ich nach oben ziehen ein paar
von Browser-Fenstern ist, dass Alice könnte auf der rechten Seite,
Bob könnte auf die sein linken und nur
klar zu sein, es gibt keine Magie hier habe ich ein Fenster haben
in inkognito so gibt es keine Nutzung von Cookies oder nichts
so sind diese zwei verschiedene Nutzer.
Ich sollte in der Lage, Alice haben hallo sagen, Bob, klicken Sie auf Absenden
und nun auf der linken Seite sehen Sie dass Alices Nachricht wurde gesendet
und fast augenblicklich auf der rechten Seite.
Kein Wahl scheinbar beteiligt, Bob erhielt die gleiche Meldung.
Sagt Alice sagen, hey jetzt Bob Sie sehen den gegenteiligen Effekt.
Also, was wirklich vor sich geht, wie viel Code brauchen wir, um zu schreiben
um dies zu implementieren einen Chat-Server
was können Sie jetzt zu extrapolieren geistig, dass jeder
in diesem Raum, wenn diese waren nicht auf meiner [unverständlich]
sondern auf foo dot com wir konnten alle chatten sofort
miteinander.
Also, was ist beteiligt und bevor ich löschen Sie diesen Bildschirm, das ist diese
ist nur ein io Buchse wenig laut, es ist nur Druck
Debugging-Informationen auf den Bildschirm,
gibt es wirklich nichts anderes geht es.
Also lassen Sie mich eröffnen App dot js, so nach wie vor haben wir ein paar Dinge haben
am Anfang der Datei.
Ein Bündel von Anforderungen, so sind wie Bibliotheken
oder Hinweise zu schärfen oder verlangen onces was auch immer Sie mentales Modell
haben wollen, und nur zur Erinnerung FS verwendet
für welche Art von Funktionalität?
So so das Lesen von Dateien Systemdateien potentiell und solche Sachen
und ich dies in einem platzieren, wie Sie sehen werden,
express natürlich ist dies Rahmen, die wir verwenden,
es ist grundsätzlich nicht notwendigen wir konnten
wie am Montag total erstellen unsere eigenen http-Server von Grund auf neu
erstellen, indem Sie Server und alle dieser Art von Code aus der Zeit vor
aber wir werden sehen, das macht Dinge, die ein wenig leichter
denn alles, was ich zu tun ist, Linie 3 hier instanziieren
und Express-Objekt, werde ich rufen es app, etwas willkürlich,
Ich werde dann sagen Sie der App, hören auf willkürlich Port 1337
dass durch die Konvention 80 werden könnte
und dann schließlich habe ich eine neue line heute das sagt
die Buchse erforderlich io-Bibliothek und dann
von dieser Kette Ansatz würde Diesen Punkt-Operator, ich bin nur
ruft eine Lektion zu hören, das ist Wesentlichen erzählt die Steckdose
io-Bibliothek, um auch hören auf dem gleichen Server
oder Web-Socket-Verbindungen.
Und was jetzt, so was ist Dieses Tun, diese vier Linien
Code hier sollte die Blick erinnert an larevel,
was hat das dar?
>> [Inaudible Abschnitt]
>> Das ist ein ... Route, nur eine Route so in app dot js,
aka-Server dot js je auf, was die Menschen es nennen wollen
in ihre eigenen Anwendungen Sie haben eine Konvention
zu tun, definieren Sie Ihre Routen,
App dot get bedeutet, wenn Sie erhalten einen GET-Request zu gehen
für buchstäblich Schrägstrich voran gehen und nennen diese anonyme Funktion
und die anonyme Funktion in In diesem Fall erfolgt durch Anforderung
oder eine Anfrage und eine Antwort, potenziell einige andere Dinge
aber diese beiden minimal.
Der Antrag gibt Ihnen Zugang Dinge wie http-Parameter
und Kopf-und andere saftige Dinge
und dann die Antwort ist der Mechanismus
von dem Sie Reaktion an den Benutzer.
Also das ist auch super einfach wenn wir nicht sehen, ganz im
gleichen Code letzte Mal, ich bin über die Dateisystem-Modulen
erstellen Lesestromverfahren die im Wesentlichen das tut,
erstellen Sie eine Lesestrom, bedeutet im Wesentlichen, starten schlürfen
bis die Bytes von Indexpunkt so effizient wie möglich html
ohne unbedingt warten bis Ihr lesen Sie die gesamte Datei
und wie Sie das tun Rohr sie buchstäblich
in der vertikalen Leiste Sinn wenn Sie bequem
mit der Linux-Befehlszeile
Rohr es auf die Reaktion des Objekts.
So gab es zwei Beispiele Streams am Montag bezogen,
sahen wir uns nur an einem, sondern Sie sind willkommen, zurück zu blicken
o bei Strom und Strom ein.
Stream 1 ... 0 tat etwas ähnliches wie das,
Strom 1 tat etwas fast genau so,
dies ist nur ein slick Einzeiler sagen sortieren
von etwas schlürfen in über hier und starten Sie dann hier Senden
gleichzeitig ohne dabei eine Menge übereinstimmt,
und dann eine massive rechts,
dieser Ansatz Allgemeinen effizienter.
Also das ist eine Art von alten Sachen auch wenn es am Montag, war neu,
das ist alles was man braucht, um Umsetzung einer Chat-Server
mit Knoten js und mehr speziell Buchse dot io.
Also, wie funktioniert das, lassen Sie mich zu bewegen es ein wenig,
so ist io nur eine Variable dass bezieht
an das Modul wir früher erforderlich,
dot ist nur ein Immobilien in der es
das gibt mir Buchse verwandte Funktionen
auf ist eine gängige Methode, die bezieht sich auf das, was allgemeine Vorstellung?
Ein Ereignis so weiter aka hören einige Bibliotheken es bedeutet nur,
beim Hören dieses Ereignis die genannte Verbindung
und jetzt wissen Sie, das nur aus Blick auf die Dokumentation,
Wer schrieb die Bibliothek definiert eine Veranstaltung namens
Verbindung, die funktioniert was Ihr denkt
als Alice oder Bob verbindet.
Gehen Sie weiter und nennen das anonyme Funktion nehmen Gang
ein Argument in der Client die offenbar eine Art
von Objekt, stellt Alice-Anschluss
oder Bob-Verbindung oder Charlie oder sonst jemand
und jetzt machen wir folgendes.
Wir sagen den Client nach er oder sie angeschlossen ist
speziell hören
für eine Nachricht, die vollständig ist willkürlich genannt Nachricht
Doppelpunkt-Client.
Das ist etwas, Tim und Ich kam mit, könnte es sein, foo
oder Bar, es ist nur einige eindeutige Zeichenfolge, die wir brauchten,
so entscheiden über die Entwickler.
Immer, wenn Alice oder Bob hört
Ereignis, dass diese anonyme Funktion aufgerufen werden soll,
und die Daten, die Inhalt von Alices
oder Nachrichten Bob sollte es sein in diesem Ereignishandler übergeben
und was sollte das jetzt Kunden tun gut können Sie Art
von lesen Sie diese recht intuitiv der Client übertragen,
sonst als emittieren eine bekannte Nachricht aufgerufen Verfahrens-Server
Diese Nachricht bedeutet dabei vom Server kommen nicht
vom Browser und welche würde, dass die Botschaft zu sein,
es ist offenbar der Nutzlast aus was von den Kunden kam
und wir sind gerade dabei, willkürlich nennen Nachricht.
So viel ist willkürlich
durch angemessene Namens Tagungen, Tim und ich kam
mit, vor allem Tim und dann werden wir einfach letztlich die Schaffung eines
Chat-Server, was bedeutet, als Alice sendet eine Nachricht
und Hits geben, welches Ereignis anscheinend wird gefeuert,
Nur zur Erinnerung.
Alice gibt eine Nachricht, Hits eingeben, wird gefeuert Messaging-Client,
dieser Code hört, dass nun der Server sendet, was,
was ist das Endergebnis der das wirklich?
Alice sendet nun die Nachricht der Server neu aussendet es
effektiv auf alle außer für Alice, warum alle außer
für Alice, wenn Sie nur schauen
bei der Dokumentation Client dot dot Broadcast zugeben,
buchstäblich das tut, sendet die Nachricht
an alle, mit Ausnahme der Client, der dich gesandt
dass die letzte Nachricht.
Also das ist, warum Sie nur sehen Sie es einmal auf jeder Seite,
Sie nicht sehen, Alice und Bob bekommen Nachricht von Alice.
Das ist es also, diese ist eine Weiterleitung Mittel
wenn man so will, das ist einfach nur in Nachrichten
Weitersendung und sie aus
und es ist bemerkenswert Ich meine sogar skalierbar
mit einem super einfach Server und ein paar Zeilen
Code konnte man sicherlich hand Hunderte, wenn nicht Tausende
der gleichzeitigen einfache Botschaften hin und her, wie diese
und sich vorstellen, die Komplexität nun, dies zu tun in PHD
oder Larevel oder meine SQL-und wie viel Code, den Sie haben, würde
, um zu schreiben tatsächlich zu erreichen, dass.
Jetzt in dieser Fairness ist nicht dauerhaft Recht
wenn der Server ausfällt verlieren wir die gesamte Geschichte
so ist es nicht ganz ein perfekte Übersetzung, aber es ist
dass gerade nach vorne.
Schauen wir uns die Java-Script- Code über früher wir übersprungen,
Das ist Alice und Bob-Client
die Web-Seite, die sie gerade jetzt mit schauen wir uns hier für einen Moment.
Es ist ein wenig mehr Code
aber es ist ziemlich einfach jQuery hier so Bekanntmachung
dass der Web-Seite dass ich gezogen
bis wir vor einem Augenblick gehören die jQuery-Bibliothek,
die Steckdose io-Bibliothek und als Nebenbei bemerkt den Unterschied
hier, Schrägstrich Schrägstrich am der Beginn einer Pfad
wie dies bedeutet, was genau,
wo ist jQuery dot js auf welchem ​​Server?
Ja.
>> [Inaudible Abschnitt]
>> Es ist im Internet ja buchstäblich als Code dot jQuery
dot com also warum Schrägstrich, Schrägstrich, warum nicht einfach ein Schrägstrich,
wo ist der http oder der Doppelpunkt, Was bedeutet dies in der Regel bedeuten,
wenn Sie Schrägstrich Schrägstrich am der Anfang der URL?
Es ist wirklich sinnvoll.
Okay, so was ist natürlich http fehlt jetzt, wenn wir Grund
durch diese logisch, in der Regel müssen Sie keine
, um eine Server-Namen erwähnen Recht
wie wenn Sie einfach Strich jQuery dot js was wird angenommen,
durch den Browser?
Dass die Datei auf dem gleichen Server, so dass auch weiterhin diese Art
der Logik, wenn Sie nicht sagen, Was es Protokoll, was ist das
Browser übernehmen, so gleichen Protokoll wenn Sie jemals Webseiten besucht haben
geben, die Sie auf eine Fehler die Linien der unsicheren Inhalt
auf dieser Seite ist es, weil hat jemand hart codiert eine http
Doppelpunkt Slash Slash-URL für ein Bild oder ein Java-Script-Datei
oder CSS-Datei, so etwas wie, dass im Quellcode der Seite
aber die Seite selbst in die Browser-URL ist http s.
Also das ist nur die Lust kleinen Weg
zu sagen, ich weiß nicht, was das Protokoll ist
dass diese Anwender verwenden wollen
sondern nur sicherstellen, dass es Spiele, so dass Chrom
und andere Browser nicht auf der Benutzer schreit.
Der einzige Haken ist, das jQuery Menschen besser eingestellt hatte
bis https auf ihrem Server.
So sie tatsächlich sind Notierung an 443.
Alle Rechte inzwischen diese hier ist diese Art
irreführender Schrägstrich Steckdose io schlägt
dass es ein Verzeichnis mit dem Namen Buchse dot io auf meinem Server
aber es gibt nicht, wenn wir stecken
um gibt es die Verzeichnisknoten Moduls
aber es gibt nichts, Öffentlichkeit über diese,
wenn wir konfiguriert Steckdose io auf die gleichen Ports zu lauschen,
1337 im Wesentlichen, dass Bibliothek dass jemand anderes geschrieben hat, ist los
einige Code Art einfügen in den Knoten js Umwelt
und einfach nur zuhören für diesen Weg.
Das Bibliothek hat nur konfiguriert eine Route für diese,
es ist nicht eine reale Verzeichnis.
Es wäre in einem sein Standard Lage.
Okay, so jetzt die interessant Teil,
so, wenn das Dokument bereit ist, wie angegeben
dieses jQuery konstruieren, zuerst werde ich weitermachen
und eine Verbindung zu einer Steckdose,
auf welchem ​​Sockel nur durch die ... halten Sie es einfach werde ich verbinden
Schrägstrich, das ist wobei der Benutzer ist,
Ich habe das Beispiel einfach gehalten wir sind gerade dabei, eine Verbindung
auf die exakt gleiche URL, die der Benutzer hat dann besuchte ich werde
folgendes tun, ich werde sagen, Alice oder Bob Browser
für das zu hören Meldung vom Server.
Auch dies könnte foo gewesen
oder bar jeder Zeit können eine Nachricht hören
vom Server nennen es Daten und dann tun Sie dies jQuery-Code
Ich vermute, die meisten, wenn nicht jeder kennt
mit diesen Tagen aber Wesentlichen ein Stift zum Suchergebnis
an die bestehende UL die Nachrichten genannt wurde
wörtlich sagt was die Nutzlast
der Chat-Nachricht, gefolgt von ein Bindestrich, gefolgt von zu erhalten,
gefolgt von einem Leerzeichen und eine Aktualisierungszeit und deshalb
klar zu sein, wenn wir wieder gehen
dies bekommen Sie diese zusätzlichen Kugeln wieder und wieder
und wieder mal mit Datum.
In der Zwischenzeit, wenn wir uns hier unten haben wir nur
, um das Formular Vorlage hand so das war das Empfangs
einer Sofortnachricht, hier ist das Senden und dies ist eine Art
der in keinem Zusammenhang mit Knoten js, hören zu den Formen Veranstaltung mitteilen.
Wenn es passiert Standard zu verhindern, dies bedeutet, einfach nicht eintragen
an den Server in üblicher So laden Sie die ganze Seite,
wir wollen das alles über Ajax zu tun.
Hier nur einige jQuery-Codes
um tatsächlich den Eingang deren Typ Nachricht,
dessen Name Nachricht gehen Sie vor
und bekommen es Wert dann gehen Sie vor
und wenn Sie tatsächlich eine Nachricht, wenn Alice und Bob
oder Bob tatsächlich einige Arten keine 0 Anzahl Tastenanschläge emittieren
auf dem Sockel eine Nachricht genannt Messaging-Client mit dieser Nutzlast
und dann hier unten ist was es grün im Gegensatz macht
rot, wir einfach Ausgangs Geräteseite [unverständlich].
Das ist es also, aber alle Dies ist nur die Einrichtung,
der wirkliche neue Sachen würde ich argumentieren, ist nur diese drei
oder fünf Zeilen Code hier und diese Art der Hinweise auf die Macht
von js Knoten und mit ihr diese besondere Bibliothek.
Also lassen Sie uns einen kurzen Blick auf ausdrücklichen dot js,
so was werde ich versuchen tun in den verbleibenden paar
Minuten hier eingerichtet wird ein wenige Idee, ein paar Techniken
das wird dann ein Paar Minuten Pause, wird Tim einrichten
und dann werden wir in tiefer tauchen
zu einer interessanten Express-Anwendung und auch
zum Bücherregal, die Bibliothek Tim schrieb sogar die
für die Open-Source-Community
das gibt uns beredtes Licht Funktionalität mit meinem SQL
und Transaktionen und andere Merkmale und er wird auch tauchen
ein wenig tiefer in die Java Skript selbst,
wie sein Objekt oder Nicht-Klasse Modell funktioniert sonst wissen
als Prototyp-Modell, einige mehr dazu kommen wird.
Werfen wir also einen Blick auf zwei letzten Anwendungen hier, fünf Server
und der Server 6 die alle Art im Geiste,
diese nicht-Server chatten aber sie benutzen Express.
Werfen wir also einen Blick auf was dies tatsächlich tut,
Ich werde weitermachen und offen ... Ich werde diese App laufen
mit Knoten App js, ich werde gehen zurück zu meinem Browser und laden
und dies ist offensichtlich all dieser Server macht,
es ist eine super einfache Server das ist offenbar ein Such
Motor so, wenn ich tippen foo und legt keine Suchergebnisse
für foo, habe ich nicht umgehen, um Umsetzung der anspruchsvollen
Back-End, alles, es wird
zu tun ist, Echo, egal was Sie geben keine Ergebnisse für foo,
keine Ergebnisse für Bar so wie wir dies tun
denn es gibt eine paar Stücke, ein,
es gibt eindeutig einige Eingänge vorgesehen
an den Server nicht Larevel natürlich, aber jetzt Knoten js
also müssen wir irgendwie bekommen an diesem Parameter Q,
wir deutlich machen eine Art von Ansicht hier
wir Rendern einer Ansicht so vielleicht gibt es eine Möglichkeit
für Vorlagen oder variablen interprelation [phonetische]
also nehmen wir mal einen Blick auf die folgenden.
Im App js für diese besondere Server das ist alles was wir haben.
Eine benötigen wir zum Ausdruck bringen selbst, zwei der Pfad-Modul
denen funktioniert einfach einige Nützliches
wie Verbindungszeichenfolgen zusammen und so weiter für mich,
Ich höre auf Port 1337 und das ist jetzt neu, so dass es sich
aus diesem Eil wie Larevel unterstützt verschiedene Plug-Ins
und Technologien und andere Dinge und ein
der Technologien, die Sie kann einstecken ist eine Ansicht, Motor
das bedeutet nur, was Templating Motor Sie verwenden möchten,
Larevel hatte ihre eigene Sache, aber Sie stecken kann
in verschiedene Dinge, verschiedene Pfirsich P-Frameworks haben
unterschiedliche Arten von Templat, ejs ist nur eine gemeinsame
und eine ziemlich einfache Motor dass, nur lässt Sie Dinge tun
wie die geschweiften Klammern, die Sie hatte in Larevels Syntax
zum Ersetzen Variablen,
es ist ein wenig anders syntaktisch ist alles.
So, jetzt gibt es dieses Ding namens Middleware, so wie Sie sehen werden
in Ihrem eigenen Teams Knoten Projekt ein Middleware ist nur Art von Code
oder Bibliotheken, die Sie injizieren
in die [unverständlich] Antwort Lebenszyklus einer Anwendung,
mit anderen Worten, diese beiden Linien erzählen express
um etwas mehr Arbeit zu tun zwischen die Zeit, die eine Anfrage bekommt
und zwischen der Zeit sendet Anfrage, dass eigene Route,
Ihr Code, den Sie geschrieben haben.
Also insbesondere diese Linie hier Eil verwenden dot statische und alle
dieser Komplexität dieses gerade bedeutet, wenn Sie eine Anfrage zu sehen
dass kommt für eine statische Datei wie foo dot jif oder foo dot css
oder foo dot js so nicht dynamisch generierte Route,
gehen Sie vor und nehme an, es lebt in der öffentlichen Unterverzeichnis,
das ist alles, tut.
Es ist ein bisschen wie in Abbildung Larevel, alles, um Ihre Web
oder Ihr öffentliches Verzeichnis eher in Larevel.
Das nächste Zeile ist nur Ich möchte sagen, verwenden Wege,
Ich möchte Dinge verwenden wie App dot erhalten
die wir vorhin gesehen und wir werden jetzt in nur einer Sekunde zu sehen.
So App Punkt bekommen Mittel hören Sie auf diesem Weg,
Schrägstrich, wenn Sie es nennen dies anonyme Funktion, nimmt
in einer Anfrage und einer Antwort und jetzt nur noch
wie Larevel Sie eine Möglichkeit haben Wiedergabe einer Vorlage,
Antwort dot machen, zitieren unquote-Index,
machen ist eine Vorlage genannt Index,
das ist es so, dass wir uns aussetzen Faden für einen Moment Blick
auf den Inhalt die Ansichten Verzeichnis
und beachten Sie auch das ist super einfach für jetzt,
es gibt Indexpunkt ejs und suchen dot ejs,
Ich will natürlich den ersten
denn das ist der, den ich gerade müde zu machen und wir werden sehen
in Aussicht Indexpunkt ejs die meisten eigentlich ganz html
Im Moment gibt es eigentlich kein Template geht.
Also ich technisch nicht auch müssen sie ejs nennen,
Ich glaube nicht, dass die Funktionalität benötigen aber ich hielt es einheitliche,
so das ist es, das ist, was gibt mir, dass Super einfache Form.
So gibt es nur eine andere Route, wenn wir hier unten schauen ich gesagt habe,
dass dies, was Griffe bekommen Schrägstrich Suche, die tatsächliche Art
von Google wie Handler für die Vorlage bilden, wenn man
dieser Pfad nennen dies anonyme Funktion
und machen die Vorlage rief Suche
und was die zweite Argument vermutlich bedeuten.
Es sieht aus wie ein JSON-Objekt von Sorten-oder Java-Script-Objekt.
Was ist die Rolle der, dass zweite Argument vermutlich?
>> [Inaudible Abschnitt]
>> Die eigentliche Abfrage, dass die Benutzer eingetippt anscheinend lebt
in Anfrage dot Abfrage, Abfrage , die sich auf alles, was
nach dem Fragezeichen Punkt q, die die willkürliche Name ist
Ich gab, dass es genau wie Google
und inzwischen q Doppelpunkt ist nur sagen, gehen in der Vorlage,
Suche dot ejs ein Taste q und ein Wert
wie auch immer die tatsächlichen q Wert war.
Nun bleibt nur eine Datei von Interesse Blick,
Suche dot ejs Ich hielt diese super einfach zu,
Es ist meist nur html außer für eine etwas bemerkenswerte Linie
die hier diese Syntax ist das sieht aus wie ein Haufen
von verschiedenen Templating Motoren bedeutet dies nur Stecker
der Wert von q und machen es fett.
Also gibt es keine eigentliche Suche Funktionalität, aber es tut Art
der Vorschlag, wie man es strukturieren, ein Skelett
einer Anwendung so.
Inzwischen ... eigentlich habe ich kann eine andere Sache zu zeigen,
feststellen, dass ich einige haben html Sie sich hier für CSS-Dateien
und Java-Script-Dateien, es gibt nichts in diesen Dateien
im Moment, aber feststellen, dass ein öffentliches Verzeichnis
wie ich bereits sagte für statische Dateien so, wenn ich gehen
dort gibt es meine css-Verzeichnis
wenn ich da rein Es gibt Arten dot css
und es gibt keine Inhalte gibt
aber das ist, wie Sie es haben öffentlich zugängliche Dateien.
Alle Rechte wir einen Blick lassen an einer anderen Variante hier
und dann werden wir einführen eine Idee und Pause.
Das ist also der letzte Server 6, so dies ist nahezu identisch mit der Ausnahme
für die beiden unteren Zeilen die sehen so aus.
Also eigentlich gibt es eine dritte Linie, die anders ist
aber ich habe verborgen ... so lassen Sie mich zurück leicht so will jemand
vorzuschlagen, was los ist hier in juristischer Hinsicht
oder technischer Hinsicht, was verschiedenen zu dieser Version
in Bezug auf diejenigen Linien in den oberen Knoten.
Was habe ich vermutlich hier und warum getan?
Ja, Sharon.
>> [Inaudible Abschnitt]
>> Ja, es sieht aus wie ich haben bewegt Index und Suche
so getrennten direkten oder so etwas, Ich habe sie ausgeklammert
und das ist, so dass ähnlich wie in Larevel können Sie alle setzen
Ihrer Controller-Logik innerhalb von Routen dot php
mit anonymen Funktionen wieder und wieder und wieder
aber diese Datei natürlich kann ziemlich massiven bekommen
so in Routen dot php, was die meisten
von euch getan haben, wird der Name festgelegt haben
einer Controller-Klasse oder sogar der Name einer Methode
dass aufgerufen sollte
so dass die gleiche Idee hier auch wenn die Syntax ist ein wenig
anders, so dass sich hier ein Hinweis
dass ich scheinbar meine eigenen Knoten implementiert js
Modul und ein Modul ist nur eine Java-Skriptdatei, haftet
Wesentlichen eine Konvention dass wir in nur einem Augenblick zu sehen.
So nehmen an, dass alle meine Funktionalität für Index
und für die Suche haben offenbar in diesem Verzeichnis abgelegt sind
und jetzt rufe ich, dass die ganze Modul oder Paket oder Bibliothek,
was Sie wollen , es als, denken
Strecken wie eine Variable genannt Routen.
So gibt es offenbar in Routen dot-Index ist eine Methode namens
Index und anscheinend gibt es eine andere Methode aufgerufen Suche
in diesem Strecken-Module oder Bibliothek
und ich bin einfach Routing ist es gerade so, dass ich nicht alle setzen
meiner anonymen Code Innenseite meiner app-Datei.
Lassen Sie uns also auf Strecken gehen, bemerken es gibt nur Index dot js
und wenn ich mir hier das ist Ich meinte die Konvention früher
so, das ist ziemlich willkürlich aber es ist der Knoten Konvention.
Jedes Mal, wenn Sie bei der Umsetzung Ihren eigenen Knoten js Bibliothek,
aka-Modul können Sie im Wesentlichen jeder Java-Script-Code schreiben Sie
wollen in dieser Datei, wird es sehr sauber Sand geschachtelt werden
so dass alle Variablen, die Sie wählen, wird nicht kollidieren
Bibliothek mit jemand anderem, Variablen oder Methoden oder nichts
so, aber nichts Sie verfügbar machen möchten
nach außen ala ein öffentliche Methode in Java-Skript
oder PHP oder anderen Sprachen Sie haben innerhalb plop
eines globalen Objekts, dass die Autor von Knoten namens Exporte.
Also, indem Sie Exporte dot Index ich auszusetzen Benutzer
dieses Moduls eine Methode namens Index, der zu dieser Funktion bildet
so ist es anonym die rechte Seite
aber ich bin ihm effektiv einen Namen auf der linken Seite,
und in die Welt exportieren
so dass Sie anrufen Punkt oder Punkt-Index-Suche.
Also klar zu sein, wenn ich auch so etwas wie function foo
hier, dass etwas getan
diese Funktion würde Betriebs absolut sein,
es bezeichnet werden könnte Diese Datei aber niemand
in der Außenwelt Kälte immer foo nennen
weil es nicht exportiert durch diese Punktnotation.
Also das ist alles, was vor sich geht,
Alles ist schön Namen für Sie angeordnet.
Also das Ende führen, wenn ich Knoten tun von App und laden Sie die Seite ist
dass, wenn ich jetzt suchen
für funktionell bar ... diese Anwendungen sind die gleichen
aber es ist einfach irgendwie ein Schritt auf eine sauberere Umsetzung,
sicherlich, wenn Sie beginnen Schreiben mehr und mehr Code
und das ist alles das sind.
Offensichtlich nicht besonders anspruchsvolle oder komplexe
aber im Wesentlichen ein Ausgangspunkt
für das, was Ihr sein ersten Knoten js-App.
Was wir wahrscheinlich später tun diese Woche oder am Wochenende
wie Sie die Vollendung bis auf die PHP-Anwendungen werden wir folgen
mit einem recht einfach Anwendung für das Team zu tauchen
in im Geiste die Aufwärmübung für PHP
, die auf der Basis Mitte Semester Umfrage
Leute haben hilfreich gehen durch die Ausübung
von etwas ziemlich einfach zu tun
aber fair geführt, bevor Sie tatsächlich etwas mehr zu bewältigen
auf eigene Faust, so werden wir Follow-up mit, dass
und im Wesentlichen wird aufgrund einer Woche und eine Hälfte
von nun leicht überlappend mit php bewusst.
Haben Sie Fragen, dann auf Ausdruck zu bringen, auf Sockel io
oder Rest Verwirrung von Montag vielleicht.
Alles klar so hoffentlich eines der die take-a-ways so weit ist
dass es für einige dieser Dinge sicherlich viel weniger
Overhead, als Sie vielleicht haben, verwendet worden.
Also lassen Sie mich eine letzte Idee,
so eine sehr häufige Programmierparadigma
in Java-Skript, das ist tatsächlich in jQuery vorhanden
in neueren Versionen, so haben könnte tatsächlich diese Technik gesehen
vor, aber es ist auch ganz im Knoten js Welt verbreitet,
es ist üblich, in Tims eigenen Bücherregal Bibliothek
so werden wir dies erneut ein konkreteres Beispiel
in einem Moment ist eine Lösung , so zu codieren,
Diese Vertreter der Code ist sahen wir am Montag, so lesen Sie Datei
in diesem Zusammenhang ist nicht eine echte Verfahren ist es im Geiste
zu lesen dot Datei fs aber davon ausgehen, dass dies nur einige gemacht
up-Methode, die funktioniert etwas sehr ähnlich.
So liefen wir in ein paar Fragen am Montag im allgemeinen
so was ist irgendwie ... warum dies ist ein rutschiger Abhang,
Dieses Paradigma Rückruf Programmierung von Java-Skript
und von Paradigma zurückrufen Ich meine nur, diese Technik
wo man nicht zurückgeben Werte sofort
weil die Macht blockieren den Server
aus etwas anderes, das ist zu tun nützlich, können Sie statt Rückruf
wie die Summer bei Shake- Shack, wenn Sie bereit sind
eine Antwort zurück übergeben als Argument.
Dies ist ein rutschiger Abhang
wo es sehr schnell wird ärgerlich, warum?
Ja.
>> [Inaudible Abschnitt]
>> Ja, es wird minimal Art unlesbar Recht
Wenn Sie alle diese Aufforderung haben Rücken und Sie sind haft
zu guter Stil ist es immer ziemlich massiv eingerückt
über die Zeit und falls ich weise darauf Wenn Sie beispielsweise eine Art Mager
durch sie wird einfach gemeint öffnen Sie eine JSON-Datei und drucken Sie es,
so ist es und doch sind wir haben einige 8 oder 10 Zeilen hier
die bereits sortiert sind der böse eingerückt,
wir haben Try-Catch bekam was
wenn Sie nicht vertraut sind ist ein Fehlerbehandlung Technik
, mit dem Sie etwas ausprobieren
und wenn es dann nicht Sie hoffentlich fangen
ohne Ihre ganze Programm Einstellung, aber es gibt
so viel Komplexität wie Sie Art von haben, dies zu durchdenken
und Gott bewahre, wir machen ein paar andere asynchrone Methodenaufrufe,
die Sache ist bereits gehen, um hier zu sein,
könnte man denken, das ist eine Art von einem dummen, aber das ästhetische
weil der Rückruf Paradigma ist so verbreitet, zumindest
in nativen Code diese Knoten sehr schnell langweilig werden,
schwer zu debuggen, die Vertiefung beginnt, so egal, Sie sortieren können
Chase Dinge nach unten, ist es gerade nicht eine sehr glückliche Weise
der Programmierung.
Also, was die Leute getan haben,
in verschiedenen Kontextknoten unter sie wird versuchen, dies zu vereinfachen,
os zum Beispiel Versprechungen ist eine andere Art des Denkens
über das Schreiben von asynchronen Code dass visuell stellt sich etwas
wie Version 1 in Diese Version 2.
Ich behaupte, und das ist wieder einfach irgendwie gemischt
zwischen Ist-und Pseudo-Code Code, ist dieser Vertreter
wie würden Sie neu implementieren dass genau die gleiche Sache,
öffnen Sie eine JSON-Datei, parsen und ausdrucken
unter Verwendung von etwas genannt Versprechen
und der Schlüssel syntaktischen Detail ist
dass es eine Verkettung hier los ist.
Beachten Sie, dass der einzige Strich
in der ganzen ... eigentlich gut lassen ... Ich will nicht in die Irre führen.
Dies ist nicht unbedingt notwendig, aber wir konsequent sein,
feststellen, dass das Semikolon daß sich auf der Öffnung
dieser ganzen Aussage ist den ganzen Weg hier unten.
So, während ich formatiert diese Art von ... suchen
wie drei Erklärungen, drei Aussagen, die man zu sehen
in Java oder anderen Sprachen die try und catch haben
und Ausnahmebehandlung im Allgemeinen.
Beachten Sie, dass ich gerade Kette der Rückgabewert von jeweils
dieser Methoden zusammen.
Also, was ist los, lesen Sie Datei wenn dies ein Verfahren, das besteht
offenbar versucht um diese Datei zu lesen,
dot dann, dann ist so ein sehr gemeinsamen Namen in der Welt gegeben
Versprechungen für die Methode, die ausgeführt werden soll
wenn die vorherige, was gelang.
So ist es ein bisschen wie der Erfolg Handler, so dann json dot Parse,
gut json dot Parse nur eine Methode
in der globalen Bibliothek json und es hält sich offenbar
in diesem Fall wird die Versprechen Modell
so sagen wir, wir können nur Anruf annehmen, dass dieser Kerl
und wenn er erfolgreich ist, dann nennen diesen Kerl und dann
wenn das tatsächlich ausführt einfach trösten protokollieren die Daten
in Frage.
Also, wo ist der Fehler Handhabung, merke ich habe Art
sehr blind trat Aus dieser Leiste
und gerade dies als Methode und dann diese Methode
ohne jemals die Überprüfung für Probleme.
Nun, wo die Probleme sind vermutlich in diese behandelt ...
Cache-Anweisungen so anders Bibliotheken verwenden unterschiedliche
Konventionen, sondern in In diesem Fall ist dann sortieren
der Erfolg Handler Cache ist eine Art der Fehlerhandler
und weil wir nicht gebrochen haben diese Kette halten wir nur mit
Punktnotation zu verknüpfen der ursprüngliche Methodenaufruf
von Lese-Datei und der Funktion Aufruf Fehler Art
der Blase ihren Weg durch die Kette
, bis sie tatsächlich behandelt in welche Richtung sauberer, als zu versuchen ist
damit jeder umgehen verdammt Schritt auf dem Weg
so sehr, dass der Code Schnell wird unwirklich Daten.
In diesem Fall sind wir behaupten, dass wir versuchen,
zu fangen, was man eine Syntaxfehler, es ist im Wesentlichen ein
Unterklasse, eine generische Irrtum und wenn das passiert Anspruch
dass es sonst ungültig json wenn es eine generische Fehler
dass wir nicht erwartet nur ganz allgemein sagen, kann nicht
Datei lesen.
Nun ist dies nur gemeint, repräsentativ Code
aber wenn man in programmiert haben Roh-oder Java-Script in Java
oder anderen Sprachen hat, ist prozeduralen Code Wesentlichen
dies ist eine weitere Tradition versuchen catch-Anweisung
und das ist die ästhetische und die Funktionalität, verspricht
oder versuchen, Ihnen wobei Sie daran denken können
als nur das Schreiben ausprobieren und dann fangen und dann fangen nicht mit
auf jeden Sorgen einzigen möglichen Punkt
wo ein Fehler könnte Griff ... passieren,
Sie können alles in den Griff enden, wie aus einem kleinen Block benötigt
Code, und Sie können sogar unterscheiden zwischen Fehlern
wie Sie in diesem Fall hier.
So ist die Nomenklatur, die Sie sehen in der Literatur vielleicht
Tim stellt einige von diesem Zeug ist auch
dass Sie im Idealfall verspricht, lösen
und Lösung ein Versprechen Mittel dass endlich wieder so zu sprechen
aber nicht auf traditionelle Weise der Wert, so dass es entweder erfolgreich
für nicht wesentlich.
Alle Rechte Fragen dann, es ist nicht dazu gedacht, ausreichend zu sein
für die Belastung durch Versprechungen sondern nur ein mentales Modell
für den Code, den Sie beginnen, um zu sehen.