>> Dobrze, więc jesteśmy z powrotem, Kilka celów na dziś,
my wybrać się tam, gdzie skończyliśmy ostatnim razem,
Przypomnijmy, że my Dokonując tej sukcesji
aplikacji serwerowych związanych, bardzo proste, ale za pomocą węzła JS
a następnie także ostatnio za pomocą wyraźnej akcent
i to, co zostało wyrażone JS analog w świecie PHP.
Tak wyraźne jest więcej ... blisko,
tak jest w istocie wyraźnej MBC ramy to dość
popularne w węźle js świecie
Półka na książki, które zobaczymy dziś przez Tima jest analogiem
z wymownym, który jest ORM na odwzorowujący obiekt relacji
faktycznie powoduje łatwiejsze aby uniknąć niskiego poziomu kodu SQL
i faktycznie wyrażają stosunki między różnymi obiektami.
Tak więc jeden z najfajniejszych rzeczy, szczerze
o węzeł js jest, jak łatwo nadaje się ona
do robienia aplikacji czasu rzeczywistego, takie rzeczy jak serwery czatu
czy serwery komunikatorów, coś, co wy teraz używać
jak Google ... G-chat lub Google spotkań
lub aktualizacji statusu Facebook lub nawet jeśli jesteś Twitter
na ich stronie internetowej wszystko jest rodzajem czasie rzeczywistym
lub daje iluzja czasie rzeczywistym
i to jest faktycznie ból szyi coś zrobić
jak PHP i My SQL Co prawda nie możemy zaproponować
w poniedziałek będzie środki
przez które można wdrożyć iluzja zachowanie czasu rzeczywistego
z serwerem czatu w PHP, co można zrobić?
Alice wysyła wiadomość, uderza wejść, gdzie to idzie?
Tak.
>> [Sekcja niesłyszalny]
>> Do bazy danych, a następnie co to ma Boba przeglądarki
zrobić, aby rzeczywiście zobaczyć co Alice powiedziała, tak?
>> [Sekcja niesłyszalny]
>> Zachowaj odpytywanie bazy danych, Dobra, więc ajax wniosek ma
do ognia co sekundę, co kilka sekund lub krótko mówił nam
ale nie wygląda na przykład coś, co nazywa długo publicznej,
ktoś przypomnieć, jak
że na mechanizm ... wysoki poziom działa?
>> [Sekcja niesłyszalny]
>> Dokładnie, tak więc przeglądarka nadal robi żądania ajax
do serwera, z php bla dot ale bla kropka php tylko wydaje
powiesić, to zasadniczo siedzi w pętli while na tyle
w 30 sekund i zazwyczaj tylko raz plik dot php foo
zdaje sobie sprawę, och jest nowy wiersz
w bazie danych czy faktycznie odpowiedzieć
z reagują http.
Więc myślisz, że może to inaczej zawiesić serwer
i ma w pewnym stopniu
ale to oznacza, że ​​jest wiele mniej napowietrznych
bo nie trzeba nowego tcp zasilania, nowe połączenie HTP
faktycznie zażądać danych z serwera.
Ale węzeł js pochodzi z bardzo popularna biblioteka nazywa gniazdo
kropka io której może nigdy nie używany jest zbudowany na
z technologii o nazwie www gniazdo, które jest obecne
w najbardziej nowoczesnych przeglądarkach i Gniazdo io co pozwoli Ci nie jest
do tworzenia zasadniczo trwałe połączenie
między przeglądarką a serwerem to jest bardzo niski narzut
więc nie muszą mają te same zagadnienia, skalowanie
że może, jeśli jesteś stale uderzając serwer
w świecie PHP i My SQL i jak.
Nawet dla starszych przeglądarek
które nie obsługują gniazdo internetową Biblioteka ta kropka IO może gniazdo
cofać się kontrolka Realizacja gniazd
i gniazda sieci jest co z CS143 na przykład.
Lub może nawet spaść z powrotem na długo ankietowanie sama więc wdrożyć
że sam rodzaj pracy
się za faktycznie utrzymanie iluzja związku.
Tak gniazda [niesłyszalne] IO i jest w postaci
biblioteki Java Script, zasadniczo, jeśli używasz go
w postaci js węzła Aplikacja nie tylko zainstalować
to jako pakiet za pomocą czegoś jak KMP których byliśmy w poniedziałek
a czy ty także pas tag w pliku HTML w
że mówi używać po stronie klienta biblioteki.
Więc nie dwie połówki do to i co zrobiliśmy tutaj
w czwartym iteracji poniedziałkowej sekwencji
przykłady są następujące.
Więc to jest struktura plików przypomina bardzo wspólnego zestawu
się do wyrażonych js i na szczęście jest sposób prostszy
niż lervo [fonetyczne] został, pamiętam, gdy ustawiony
się lervo masz ogromny paskudny zrzucić z mnóstwem plików,
katalogi dostawców, lib i bardzo waga ciężka w porównaniu do tego.
Teraz w uczciwości mamy obnażony wyjazd rzeczy to dość dużo
ale wszystkie rozproszenia soczystych rzeczy jest naprawdę
w modułach węzłów.
Wystarczy dać smak, jeśli spojrzymy
w modułach węzłów jest dwa moduły i biblioteki
że pobrałeś, to będzie równoważna
z katalogu dostawcy, jeden nazywa ekspresowa, która jest
jak larevel ale w węźle
i gniazdo IO jeden po prostu wymienić.
Tak więc ci, istnieje więc, że możemy wykonaj następujące czynności, jeśli otworzę
się powiedzmy wskaźnik kropka html, Niech najpierw spojrzeć na html,
to będzie komponować to ciało, mój wspaniały,
super prosty serwer czat.
Więc jest najwyraźniej ul z unikalnym idei wiadomości
i tam jeden li naraz
wszystkie wiadomości błyskawicznych są będzie się pojawiać pomiędzy Alice
Bob i wtedy nie Prosty formularz z polem tekstowym
i przycisk Prześlij w którym Alice
lub Bob mogą rzeczywiście Komunikat siebie.
Więc jeśli efekt netto I uruchomić tę aplikację
robiąc miejsce aplikację kropkę węzła js, jeśli podciągnąć para
z okna przeglądarki jest to, że Alice, który może znajdować się na prawej
Bob może być na lewej i po prostu
być jasne, nie ma magii tutaj mam jedno okno
w trybie incognito, więc nie ma Udostępnianie plików cookie lub cokolwiek
w ten sposób, są dwa odrębne użytkowników.
Powinienem być w stanie mieć Alice przywitać Bob, kliknij Wyślij
i widzisz po lewej że wiadomość została wysłana Alicji
i prawie natychmiast na prawo.
Ankietowanie pozornie nie uczestniczy, Bob otrzymał ten sam komunikat.
Teraz Bob mówi powiedzieć Hej Alice widać efekt odwrotny.
Tak więc to, co się naprawdę dzieje, jak dużo kodu potrzebujemy napisać
do realizacji tego serwera czatu
które obecnie można ekstrapolować psychicznie, że każdy
w tym pokoju, jeśli to nie były w moim [niesłyszalne]
ale na foo dot com mogliśmy wszystko natychmiast zacząć rozmawiać
ze sobą.
Więc co jest zaangażowany i przed wyczyścić ten ekran to jest to
jest po prostu bycie io gniazda trochę głośny, to tylko drukowanie
z informacji diagnostycznych na ekranie
tam naprawdę nic jeszcze tam dzieje.
Więc pozwól mi otworzyć app js kropki, tak jak wcześniej mamy kilka rzeczy
na wierzchu pliku.
Kilka wymagań, tak to jak biblioteki
lub wyostrzyć wskazówki lub wymagają onces co psychiczne modelu można
chcą mieć i po prostu Przypomnę FS służy
na jakie funkcjonalności?
System plików, tak więc czytanie plików potencjalnie i takie tam
i używam tego w jednym umieścić jak zobaczysz,
ekspresowa to oczywiście Ramy, które używamy,
to nie jest ściśle konieczne mogliśmy
jak w poniedziałek całkowicie utworzyć nasz własny serwer http od podstaw
wykonując stworzyć serwer i wszystko tego rodzaju kodu z wcześniej
ale jak zobaczymy to sprawia, rzeczy trochę łatwiej
bo wszystko, co musisz zrobić, to na linii 3 o instancji
i wyrazić obiekt, zadzwonię to aplikacja, nieco arbitralnie,
Ja wtedy powiem aplikacji na słuchać na arbitralnie portu 1337,
80, które mogą być umownie
i wreszcie mam nowy linia, która mówi dziś
wymagać gniazdo biblioteka IO, a następnie
za pomocą tego podejścia łańcucha byłoby operator kropki jestem
dzwoniąc lekcję słuchać, że jest zasadniczo mówi gniazdo
również biblioteka IO słuchać tego samego serwera
lub internetowych połączeń gniazda.
I co teraz, więc to, co jest to robi, te cztery linie
z tego kodu, który powinien wyglądają przypomina larevel,
co to ma reprezentować?
>> [Sekcja niesłyszalny]
>> To jest ... droga, po prostu Trasa to w app js kropki,
aka kropka zależności js serwer na to, co ludzie chcą to nazywać
w ich własnych aplikacjach masz konwencję
robić definiowania tras,
Aplikacja dostać oznacza gdy kropka masz żądanie GET, aby przejść
się na dosłownie slash śmiało i nazywają tę funkcję anonimowy
i anonimowa funkcja w ta sprawa trwa od wymogu
lub żądania i odpowiedzi, potencjalnie kilka innych rzeczy
ale minimalnie te dwa.
Wniosek daje dostęp do rzeczy, jak parametrów http
i nagłówki i inne soczyste rzeczy
a następnie reakcja jest mechanizm
przez które można w odpowiedzi na użytkownika.
Więc to jest bardzo proste, nawet choć nie widzieliśmy dość
sam kod ostatni raz, jestem przy użyciu modułów systemu plików,
stworzenie metody odczytu strumienia które zasadniczo robi to,
utworzyć strumień odczytu, które oznacza w zasadzie rozpocząć slurping
się z bajtów z indeksu kropką html tak skutecznie, jak to tylko możliwe
bez konieczności czekania do lektury całego pliku
i jak to zrobić Rura im dosłownie
w pionowym pasku sensie jeśli nie masz nic
z linii poleceń Linuksa,
Rura do odpowiedzi przedmiotu.
Więc były dwa przykłady podobne do strumieni w poniedziałek,
mamy tylko jedną, ale spojrzał na zapraszamy, aby spojrzeć wstecz
w strumieniu o i strumienia 1.
Strumień 1 ... 0 zrobił coś podobnego do tego
Strumień 1 zrobił coś prawie dokładnie tak, jak to,
to tylko zręczny jedna wkładka na powiedzenie sortowania
z slurp coś tutaj a następnie rozpocząć wysyłanie go tutaj
w tym samym czasie bez robi masę zgodzić
i masywny prawo,
Takie podejście jest na ogół bardziej skuteczna.
Więc to jest trochę starych rzeczy nawet jeśli to był nowy w poniedziałek,
to wszystko to ma wdrożyć serwer czatu
z js węzłów i więcej specjalnie gniazda dot IO.
Więc jak to działa, pozwól mi poruszać się trochę,
więc io to tylko zmienna że odnosi
do my modułu wymagane wcześniej,
Gniazdo jest tylko kropka Lokale w jej wnętrzu
że daje mi gniazdo Funkcje związane z
na to, że stosowana metoda odnosi się do tego, co ogólne pojęcie?
Wydarzenie to na aka słuchać niektóre biblioteki to po prostu oznacza,
słysząc to wydarzenie które nazywa połączenia
a teraz wiesz, że to tylko z patrząc na dokumentację,
kto napisał biblioteki zdefiniowane zdarzenie o nazwie
które połączenie ma co się nie myśleć
gdy Alice i Bob łączy.
Śmiało i nazywają to Funkcja odbioru mijania anonimowy
w jednym argumentem klienta który jest podobno jakaś
obiektu, który reprezentuje Połączenie Alicji
lub połączenie Boba lub Charlie czy ktokolwiek inny
a teraz wykonać następujące czynności.
Mówimy po klienta on lub ona połączona
wysłuchać specjalnie
do wiadomości, że jest zupełnie arbitralnie nazwie wiadomość
klient okrężnicy.
To jest coś, że Tim i Wymyśliłem, to może być foo
lub bar, to tylko niektóre unikalny ciąg znaków, który nam potrzebne
decydować, jak deweloperzy.
Zawsze, gdy Alice i Bob słyszy
że zdarzenie to anonimowy Funkcja ta powinna być nazywana
i dane, Zawartość Alice
lub wiadomości należy Boba przeszedł w tym obsługi zdarzeń
i teraz to, co powinno Klient dobrze można rodzaj
z tego przeczytać dość intuicyjnie Klient powinien nadawać,
zwie emitować Metoda nazywa się serwer wiadomości
w ten sposób oznaczający tę wiadomość pochodzi z serwera nie
z przeglądarki i tego, co to, że wiadomość będzie,
to widocznie ładowność od co pochodzi od klientów
a my po prostu będzie dowolnie nazwać wiadomość.
Tak więc wiele jest dowolna
dzięki rozsądnej nazewnictwa konwencje, Tim i ja przyszedł
się z głównie Tima i wtedy po prostu tworzymy ostatecznie
serwer, który robi to, co rozmawiać, gdy Alice wysyła wiadomość
i odsłon wprowadzić Jakie wydarzenie podobno dostaje zwolniony,
tylko podsumować.
Typy Alice wiadomość, hity wejść, wiadomość klient zwolniony,
ten kod, a teraz słyszy, że serwer rozsyła co,
co to jest efekt końcowy to naprawdę?
Alice wysyła wiadomość teraz Serwer to rebroadcasts
skutecznie do wszystkich z wyjątkiem Alice, dlaczego wszyscy z wyjątkiem
Alice, jeśli tylko spojrzeć
w dokumentacji klienta kropka kropka transmisji przyznać,
dosłownie robi, rozsyła wiadomość
do wszystkich z wyjątkiem Klient, który cię przysłał
że najnowsza wiadomość.
Tak, to dlaczego tylko ty patrz raz na każdej stronie
nie widać zarówno Alice i Bob się wiadomość Alicji.
Tak, to jest to, to jest środkiem przekazywania
jeśli będzie to tylko biorąc w wiadomościach
i reemitowanie je
i to jest niezwykle To znaczy nawet skalowalne
z super proste serwer i kilka linii
kodu mogłeś pewnością obsługiwać setki, jeśli nie tysiące
paralelnych prostych wiadomości tam iz powrotem, jak to
i wyobraź sobie złożoność teraz robi to w PHD
lub Larevel lub SQL i mój ile kod trzeba
napisać w celu rzeczywiście osiągnąć.
Teraz w uczciwość tego prawo nie jest trwały
jeśli serwer idzie w dół tracimy całą historię
więc nie jest to bardzo idealne tłumaczenie ale
że proste.
Spójrzmy na skrypt Java Kod my pomijane wcześniej,
to jest Alice i Boba klienta,
strona internetowa, że ​​używają teraz przyjrzyjmy się tu na chwilę.
Jest trochę więcej kodu
ale to dość dużo tylko Ogłoszenie jQuery tutaj tak
że na stronie internetowej że wyciągnąłem
się chwilę temu m.in. biblioteki jQuery,
Gniazdo biblioteki i jak io bok zauważyć różnicę
tutaj, w slash slash Początek ścieżki
jak oznacza to, co dokładnie,
gdzie jest kropka jQuery js na jakim serwerze?
Tak.
>> [Sekcja niesłyszalny]
>> To tak w internecie dosłownie nazywane kod kropka jQuery
dot com więc dlaczego ciąć, ciąć, dlaczego nie tylko jeden ukośnik,
gdzie jest http lub jelita grubego, co to znaczy w ogóle
jeśli nie ukośnik ukośnik w początek url?
To rzeczywiście przydatne.
Dobrze więc, co jest oczywiście brakuje http teraz jeśli powód
przez to logicznie, zazwyczaj nie trzeba
wspomnieć o serwery nazw w prawo
jak gdyby po prostu użyć slash jQuery kropka js co zakłada
przez przeglądarkę?
Że plik jest na to samo serwer więc kontynuować tego rodzaju
logiki, jeśli nie powiedzieć to co, co jest protokół
Przeglądarka zakładać, sam protokół tak jeśli kiedykolwiek odwiedzanych stron internetowych
że daje błąd wzdłuż linie niezabezpieczone treści
na tej stronie to dlatego, ktoś mocno zakodowane HTTP
dwukropek ukośnik ukośnik URL zdjęcie lub plik skryptu Java
lub plik CSS, coś w tym stylu w kodzie źródłowym strony
ale strona sama w przeglądarki adres URL jest http s.
Więc jest to tylko fantazyjne trochę droga
mówić nie wiem co protokół jest
że użytkownicy końcowi zamierzasz używać
ale po prostu upewnij się, że mecze tak, chrom
i innych przeglądarek Nie krzycz na użytkownika.
Jedynym haczykiem jest jQuery ludzie lepiej ustawić
up https na ich serwerze.
Tak więc w rzeczywistości są obrotu na 443.
Tymczasem to wszystko w porządku tu jest to jeden rodzaj
slash wprowadzającej w błąd Gniazdo io sugeruje
że istnieje katalog o nazwie io gniazdo kropka na moim serwerze
ale nie, jeśli grzebać
wokół jest katalog węzła modułu
ale nie ma nic publicznej na ten temat,
kiedy skonfigurowane do gniazd słuchać na tych samych portów,
1337 w istocie, że biblioteki że ktoś inny napisał to dzieje
do rodzaju wstawić jakiś kod w otoczeniu węzła JS męska
i po prostu słuchać na tej drodze.
Że biblioteka ma tylko skonfigurowane trasy na tym,
to nie jest prawdziwy katalog.
Byłoby w średnia lokalizacja.
Ok, więc teraz ciekawa część,
tak, gdy dokument jest gotowy, jak wskazano
przez tego jQuery budowy, Najpierw mam zamiar iść do przodu
i podłączyć do gniazdka,
Gniazdo po prostu przez co utrzymanie go ... proste zamierzam podłączyć
slash, to w której użytkownik jest
Mam prosty przykład przechowywane jesteśmy po prostu będzie się połączyć
do tej samej zawartości, które użytkownik odwiedził wtedy będę
wykonać następujące czynności, zamierzam powiedzieć przeglądarkę Alicji lub Boba
nasłuchiwać wiadomości z serwera.
Ponownie może to być foo
lub bar każdej chwili usłyszeć wiadomość
z nim danych połączeń serwera a następnie wykonaj ten kod jQuery
który zgaduję większość, jeśli nie każdy zna
z tych dni, ale zasadniczo pin do listy pozycji
istniejącego UL, które nazwano wiadomości
mówi, że dosłownie bez względu na ładunek jest
wiadomości rozmowy, po czym myślnik, a następnie otrzymać,
a następnie po spacji, a następnie czasu aktualizacji i dlatego
być jasne, jeśli wrócimy
to masz te dodatkowe kule raz po raz
i ponownie Data razy.
Tymczasem jeśli spojrzymy tutaj mamy tylko
do obsługi przesyłania formularzy tak aby był odbiorczy
z wiadomości błyskawicznych, oto wysyłanie i to jest rodzaj
w związku z js węzłów, słuchać do form przedstawienia zdarzenia.
Kiedy to się stanie zapobiec domyślne Oznacza to po prostu go nie przedłoży
do serwera w zwykle sposób odświeżyć całą stronę,
chcemy to wszystko zrobić za pośrednictwem ajax.
Oto tylko niektóre kody jQuery
rzeczywiście dostać wejście którego typ jest wiadomość,
którego nazwa jest wiadomość śmiało
i uzyskać jego wartość potem śmiało
i jeśli rzeczywiście mają wiadomość, jeśli Alicja i Bob
lub Bob rzeczywiście niektóre rodzaje brak 0 Liczba klawiszy emitują
na gnieździe wiadomość nazwie Wiadomość z tego ładunku klienta
i tu jest , co sprawia, że ​​w przeciwieństwie zielony
na czerwono, po prostu wyjście z boku urządzenia [niesłyszalne].
Tak, to jest to, ale wszystkie to jest po prostu ustawić,
prawdziwe nowych rzeczy chciałbym twierdzą, to tylko te trzy
lub pięć linii kodu tu i tego rodzaju podpowiedzi na mocy
JS węzłów a wraz z nim to zwłaszcza biblioteka.
Więc weźmy szybkie spojrzeć na wyraźnych kropek js,
więc to, co mam zamiar spróbować zrobić w pozostałej pary
minut tutaj jest ustawione Kilka pomysł, kilka technik
że będzie to trwać kilka minut przerwy, Tim powoła
a następnie będziemy nurkować głębiej
do bardziej interesujące aplikacji, a także wyrazić
do schowka, biblioteka Tim rzeczywiście napisał
dla społeczności open source
to daje nam wymowne światło funkcjonalność z moim SQL
oraz transakcje i inne takie cechy i on będzie też nurkować
w nieco głębiej do Skrypt sam język Java,
jak jej przedmiot lub nie-klasa Model działa inaczej wiedzieć
jako model prototypu niektóre bardziej na tym, by przyjść.
Warto więc spojrzeć na dwa ostatnie Aplikacje tutaj, serwer pięć
oraz serwer 6, które są jakby w duchu podobnym,
te serwery nie rozmawiać ale używają ekspresowa.
Warto więc przyjrzeć się co to właściwie robi,
Mam zamiar iść do przodu i otwarty ... Idę do uruchomienia tej aplikacji
z js węzeł app, mam zamiar wrócić do mojej przeglądarce i przeładuj
i jest wyraźnie wszystko robi ten serwer,
to jest super proste serwer to widocznie wyszukiwanie
silnik więc jeśli wpisać foo i przedkłada, brak wyników wyszukiwania
do foo, nie ominąć wykonawczych wyrafinowane
back-end, wszystko to się dzieje
zrobić, to bez względu na to echo wpisywania żadnych wyników dla foo
Brak wyników dla barów tak, jak to robimy
bo jest kilka sztuk, jeden,
jest wyraźnie niektóre Wejścia są przewidziane
do nie serwera Larevel Oczywiście, ale teraz js węzłów
więc musimy jakoś dostać się na tym parametrze Q,
my wyraźnie robi jakiś widok tutaj,
jesteśmy tak utylizacyjnej widok może jest szansa
szablonów lub zmiennej interprelation [fonetycznie]
więc rzućmy okiem sposób oczyszczania.
W js app dla tego konkretnego Serwer jest to wszystko, co mamy.
Jednym wymagamy wyrażenia Sam, dwie ścieżki modułu
które po prostu robi niektóre przydatne rzeczy
jak łączenie ciągów razem i tak dalej dla mnie,
I słuchać na porcie 1337 i teraz jest nowy, więc okazuje
poza tym jak Larevel wyraźnych obsługuje różne plug in
i technologii oraz inne rzeczy, i jeden
z technologii, które można podłączyć silnik jest widok
co oznacza po prostu, co szablonów silnik chcesz użyć,
Larevel miał własną rzecz, ale można podłączyć
w różne rzeczy, różne Ramy mają brzoskwinia P
różne sposoby szablonów, ejs jest tylko wspólne
i bardzo prosty silnik że po prostu niech Ci robić rzeczy
jak nawiasy, które miałeś w składni Larevels
zastępowania zmiennych,
to trochę inaczej składniowo jest wszystko.
Więc teraz jest to coś, co nazywa Wyroby tak średnim zobaczysz
drużyny w swoim własnym węzłem project Wyroby środku jest po prostu rodzaj kodu
lub biblioteki, które wstrzykują
do [niesłyszalne] odpowiedzi cykl życia aplikacji,
innymi słowy, te dwa mówią, wyraźnych linii
zrobić kilka dodatkowych prac między Czas robi wniosek
oraz pomiędzy czasu wysyła że wniosek o własnym trasie,
Twój kod, który napisałeś.
Tak w szczególności ta linia tutaj używać wyraźnej kropki statyczny i wszystko
tej złożoności tego właśnie oznacza, że ​​jeśli pojawi się żądanie
że przychodzi do pliku statycznego jak dot lub JIF bla bla dot css
lub bla kropka więc nie js generowane dynamicznie trasy,
śmiało założyć, że żyje w katalogu publicznym,
to wszystko, co robi.
Jest to coś w rodzaju mapowania w Larevel, wszystko się w internecie
lub katalogiem publicznym raczej w Larevel.
To jest po prostu następny wiersz mówiąc chcę używać tras,
Chcę używać rzeczy jak dot uzyskać ok.
które widzieliśmy przed chwilą, i zobaczymy za chwilę teraz.
Więc aplikacja kropka uzyskać środki słuchać na tej trasie,
slash kiedy się to nazwać Funkcja, która wykonuje anonimowy
we wniosku, a odpowiedzi, a teraz po prostu
jak Larevel masz sposób renderowania szablonu,
Odpowiedź dot renderowania, Cytując indeks cytatu,
czynią to szablon zwany indeks,
to jest to tak, że niech zawiesza gwint tylko na wygląd chwili
o zawartości katalog odsłon
i zauważyć, jest to zbyt super proste teraz,
Indeks EJS jest kropka i sprawdzić EJS kropki,
I oczywiście chcemy najpierw
bo to jest po prostu jeden zmęczony do renderowania i zobaczymy
w kropki indeks odsłon EJS html najbardziej właściwie całkowicie
w tej chwili, nie faktycznie nie ma szablonów dzieje.
Więc technicznie nie nawet trzeba nazwać ejs,
Nie potrzebuję tej funkcji ale trzymałem go jednolite,
tak, to jest to, to jest to, co Daje mi to bardzo prosty formularz.
Więc jest tylko jedna droga, jeśli spojrzymy tutaj mówiłem
że to jest to, co zajmuje się dostać slash przeszukiwanie więc rzeczywista Sortuj
Google jak do obsługi Formularz zgłoszeniowy, gdy pojawi się
że ścieżka nazwać Funkcja anonimowy
i renderowanie szablonu nazywa wyszukiwanie
a co drugi Argument zapewne na myśli.
To wygląda jak obiekt JSON rodzaju lub obiektu skrypt Java.
Jaka jest rola, że Drugi argument zapewne?
>> [Sekcja niesłyszalny]
>> Zapytanie, że rzeczywiste wpisane w łatwy najwyraźniej żyje
na żądanie kwerendy kropka, kwerendy odnosząc się do wszystkiego
po kropce znaku zapytania q, które jest arbitralne nazwy
że dałem to jak Google
a tymczasem jest tylko runda okrężnicy mówiąc przejść do szablonu,
EJS wyszukiwanie kropki, klucz i wartość q
niezależnie q jest rzeczywista wartość była.
Tak, że pozostawia tylko jedną Plik interesujące dla poglądów,
EJS wyszukiwanie kropki trzymałem to bardzo proste, zbyt,
Jest to najczęściej tylko html wyjątkiem na jedną dość niezwykłej linii
co jest ta składnia tutaj która wygląda jak banda
różnych szablonów silniki to po prostu oznacza, korek
wartości q i sprawiają, że śmiały.
Więc nie ma faktycznej wyszukiwanie funkcjonalność, ale to nie rodzaj
z sugerują, jak byś struktury szkieletu
wniosku takiego.
Tymczasem w rzeczywistości ja ... może pokazać jedną rzecz,
zauważyć, że mam pewne html tutaj plików css
i plików Java Script, nie ma nic w tych plikach
w tej chwili nie zauważyć, że istnieje katalog publiczny
jak powiedziałem wcześniej dla Pliki statyczne więc jeśli pójdę
tam nie ma mój katalog css,
jeśli pójdę tam Jest kropka style css
a tam nie ma żadnych treści
ale to jak byś mają publicznych plików dostępnych.
Dobrze rzućmy okiem w jednym innym wariancie tutaj
a następnie wprowadzimy jeden pomysł i przerwa.
Więc to jest serwer 6 ostatnia, więc jest to niemal identyczne, z wyjątkiem
dla dwóch dolnych przewodów który wygląda tak.
Tak naprawdę nie ma Trzecia linia to co innego
ale mam ukryte ... więc daj mi z powrotem lekko więc nie ktoś chce
zaproponować, co się dzieje tu w laika
lub warunki techniczne, co jest inny o tej wersji
w stosunku do tych w górnej linii węzłów.
Co ja przypuszczalnie zrobić tu i dlaczego?
Tak, Sharon.
>> [Sekcja niesłyszalny]
>> Tak to wygląda, jakbym Indeks i wyszukiwarka przeniósł
więc oddzielne bezpośrednie lub coś, Mam uwzględnić je
i to jest tak, że podobnie jak w Larevel można umieścić wszystko
z logiki kontrolera wewnątrz drogi dot php
z funkcji anonimowych znowu i znowu i znowu
ale oczywiście, że plik można uzyskać bardzo masywne
tak w trasy dot php, co najbardziej
z wy robili jest już określeniu nazwy
klasy kontrolera lub nawet nazwa metody
że powinno się nazywa
więc tu nawet sam pomysł choć składnia jest trochę
inny, więc tutaj anons
że mam widocznie wdrożone własne js węzłów
Moduł i moduł jest po prostu Plik skryptu Java, który przylega
Konwencja w zasadzie jeden do że zobaczymy za chwilę.
Więc przyjąć, że wszystkie moje funkcjonalność indeksu
i poszukiwaniu mają widocznie zostały wprowadzone w tym katalogu
a teraz dzwonię, że całość pakiet lub moduł lub biblioteka,
co chcesz myśleć o tym, jak,
jako drogi zmienna zwane drogi.
Więc najwyraźniej tam trasy Indeks kropka jest metoda zwana
Indeks i najwyraźniej nie ma inna metoda nazywa wyszukiwanie
w tym szlaki modułów lub biblioteka
a ja po prostu go routingu po prostu tak, że nie umieścić wszystkie
mojego anonimowego kodu wewnątrz mojego pliku app.
Więc chodźmy na trasach w zawiadomieniu Indeks jest tylko kropka js
i kiedy patrzę tu jest Konwencja chciałem wcześniej
więc to jest dość arbitralny ale to jest konwencja węzeł.
Za każdym razem po włączeniu własny węzeł js biblioteki,
aka moduł, który zasadniczo może pisania kodu Java Script cię
chce w tym pliku, to będzie być bardzo czysty piasek w pudełku
tak, aby wszystkie zmienne, wybierz nie kolidują
z biblioteki nikogo innego, zmienne lub metody lub cokolwiek
tak, ale nic chcesz się narażać
do świata zewnętrznego ala Metoda publiczna w Java Script
lub PHP lub innych językach trzeba plop wewnątrz
globalnego obiektu autor węzła zwanego eksportu.
Więc robiąc eksport dot Indeks jestem narażając użytkowników
Moduł ten sposób nazywane Indeks, który mapuje do tej funkcji
więc jest to anonimowy prawa strona
ale ja skutecznie dając mu Nazwa po stronie lewej
i eksportowanie do świata
tak, że można zadzwonić kropka kropka lub indeks wyszukiwania.
Tak, aby było jasne, czy ja także miałem coś w funkcji foo
się, że zrobił coś
że funkcja byłoby absolutnie funkcjonować,
może być ona wywołana w tego pliku, ale nikt nie
świata zewnętrznego zimno kiedykolwiek wywołać foo
bo to nie jest eksportowane za pomocą tego zapisu punktowego.
Więc to wszystko, co się dzieje,
wszystko jest ładnie nazwa rozmieszczone dla Ciebie.
Więc koniec doprowadzić jeśli zrobić węzeł z aplikacji i przeładuj stronę jest
że gdybym teraz sprawdzić
na bar ... funkcjonalnie te aplikacje są takie same
ale to jest po prostu swego rodzaju krok w kierunku czystszego realizacji,
na pewno po uruchomieniu coraz więcej pisania kodu
i to wszystko, to są.
Oczywiście nie jest szczególnie wyrafinowane i złożone
ale w zasadzie punktem wyjścia
na to, co będzie twoim Pierwszy węzeł aplikacji js.
Co zrobimy, może później w tym tygodniu lub w ten weekend
jak kończą się na aplikacji PHP będziemy przestrzegać
się w bardzo prosty Wniosek o zespół do nurkowania
się w duchu podobnym do rozgrzewka ćwiczenia dla php
które opiera się na Badanie średniej semestr,
ludzie nie znaleźć pomocne przechodzi wykonywania
robić coś całkiem proste
ale dość prowadzony przed tobą faktycznie zająć coś więcej
na własną rękę, więc będzie z obserwacji, że
i zasadniczo będzie ze względu na tydzień i pół
od teraz nakładających się nieznacznie z php celowo.
Wszelkie pytania, a następnie na wyrazić, gniazda na Io
lub zamieszanie pozostałe od poniedziałku może.
W porządku, więc mam nadzieję, że jednym z take-a-sposobów jest tak daleko
że jest dla niektórych z nich rzeczy, na pewno o wiele mniej
napowietrznych, niż mogłeś wykorzystano do.
Więc pozwól mi przedstawić ostatni pomysł,
tak, bardzo często Paradygmat programowania
w skryptu Java, który jest rzeczywiście obecny w jQuery
w najnowszych wersjach, więc może mieć rzeczywiście widział tę technikę
wcześniej, ale jest to również dość powszechne w węźle js świata,
to jest powszechne w Tim własna biblioteka Schowek
więc będziemy ponownie w ten bardziej konkretny przykład
w chwili jest rozwiązanie do kodu tak,
ten kod jest przedstawicielem widzieliśmy w poniedziałek, więc odczytać pliku
W tym kontekście nie jest prawdziwa Metoda jest podobna w duchu
do fs dot odczytać plik, ale zakładamy, że jest to tylko niektóre wykonane
Metoda, która ma się coś bardzo podobnego.
Więc wpadliśmy na kilka kwestie w ogóle w poniedziałek
więc to, co jest swego rodzaju ... dlaczego jest to równia pochyła,
Paradygmat ten oddzwoni z programowania Java Script
i oddzwoni paradygmat Mam na myśli tylko tę technikę
gdzie nie wrócić Wartości natychmiast
dlatego, że może zablokować serwer
od robienia czegoś innego, które jest przydatna, zamiast zadzwonić
jak brzęczyki na wstrząsnąć Chatka kiedy jesteś gotowy
przejść z powrotem odpowiedzi jako argument.
To jest równia pochyła
gdzie bardzo szybko staje się irytujące, dlaczego?
Tak.
>> [Sekcja niesłyszalny]
>> Tak, to staje się minimalnie rodzaj nieczytelne prawo
jeśli masz te wszystkie połączenia Oparcia i jeśli przylegające
do dobrego stylu to coraz dość masywnie wcięte
w czasie i przypominam tym przypadku przykład, jeśli rodzaj odtłuszczone
przez to jest po prostu za zadanie otworzyć plik json i wydrukować go,
jak to jest to, a jednak jakieś 8 lub 10 linii tutaj
które są już sortowania z paskudnie wcięte,
mamy try catch, która jest
Jeśli nie znasz się technika obsługi błędów
, który pozwala spróbować czegoś
i jeśli to się nie powiedzie, mam nadzieję, że można go złapać
bez całego programu zakończenia, ale nie
tak jak ty rodzaj złożoności trzeba myśleć o tym przez
i nie daj Boże zrobić kilka inna metoda asynchroniczna wymaga,
jest to już będzie tutaj,
Może myślisz, że to jest rodzaj o estetyce, ale to głupie
ponieważ połączenie z powrotem paradygmat jest tak powszechne, przynajmniej
w kodzie macierzystym tego węzła bardzo szybko stają się nudne,
trudne do debugowania, wcięcie zaczyna znaczenia więc można sortować
rzeczy ścigać, to po prostu nie bardzo szczęśliwy sposób
z programowania.
Więc to, co ludzie zrobili
w różnych węzła kontekstu między im jest spróbuj uprościć ten,
os na przykład obietnice jest inny sposób myślenia
o pisaniu kodu asynchronicznego że wizualnie zmieni coś
jak w wersji 1 ta wersja 2.
Twierdzę, i to jest ponownie tylko rodzaj mieszany
pomiędzy rzeczywisty kod i pseudo Kod ten jest reprezentatywny
w jaki sposób można byłoby ponownie wdrożyć , że dokładnie to samo,
otworzyć plik json, analizować je i wydrukować
się za pomocą czegoś nazywa obietnice
syntaktyczne i detal jest klucz
że jest łańcuchowym dzieje.
Zauważ, że tylko średnik
w całości naprawdę dobrze ... niech ... nie chcę wprowadzać w błąd.
Nie jest to absolutnie konieczne ale bądźmy spójne,
Zauważ, że średnik , który odnosi się do otwierania
tego całego zestawienia jest w dół tutaj.
Tak więc, mam sformatowana to wygląda jakby ...
jak trzy oświadczenia, trzy oświadczenia, które można zobaczyć
w Javie lub innych językach że ma spróbować połowu
i obsługa wyjątków bardziej ogólnie.
Zauważ, że po prostu łańcuch Wartość zwracana każdego
te metody razem.
Więc o co chodzi, przeczytaj plik jeśli jest to metoda, która istnieje
najwyraźniej próbuje do odczytu tego pliku,
kropka to tak to jest bardzo wspólna nazwa nadana na świecie
obietnic dotyczących Sposób, który powinien wykonać
jeśli poprzednie rzeczą udało.
Więc jest to coś w rodzaju sukcesu obsługi, więc to JSON kropka parse,
oraz JSON kropka parse jest po prostu metoda
w globalnej biblioteki json i to podobno przestrzega
w tym przypadku Model obietnica
więc można po prostu powiedzieć, że Załóżmy, że nazywają to facet
a jeśli mu się to uda, a następnie nazwać tego faceta, a następnie
jeśli to rzeczywiście Wykonuje po prostu pocieszyć zarejestrować dane
mowa.
Więc gdzie jest błąd obsługa, zawiadomienia Mam sortowania
wyszedł bardzo ślepo poza tym występie
i po prostu nazywa to Sposób i metoda
nigdy nie sprawdzając problemów.
No gdzie są te problemem przypuszczalnie w nich obsługiwane ...
cache tak różne wypowiedzi biblioteki korzystać różne
konwencje, ale w W tym przypadku to jest rodzaj
sukcesu obsługi, cache to rodzaj obsługi błędów
i dlatego, że nie złamałem Ten łańcuch po prostu zachować przy użyciu
notacja kropki połączyć razem Oryginalny sposób wywołania
z pliku do odczytu i funkcji Inwokacja błędy sortowania
bubble ich sposób w łańcuchu
dopóki oni faktycznie obsługiwane które jest czystsze niż stara droga
radzić sobie z nim każdy cholernie kroku
tak bardzo, że Twój kod szybko staje się dane nierealne.
W tym przypadku jesteśmy twierdząc, że staramy
złapać to, co nazywa się błąd składni jest zasadniczo
Podklasa bardziej ogólne błąd i jeśli tak się stanie roszczenie
że to jest nieważne JSON inaczej jeśli jest to bardziej ogólny błąd
, że nie spodziewaliśmy się tylko ogólnie powiedzieć, nie może
odczytać pliku.
Teraz jest to po prostu oznaczało, się kod przedstawiciel
ale jeśli już zaprogramowany w surowy Java lub skrypt Java
czy to jest w innych językach Kodeks postępowania w istocie,
jest to bardziej tradycja spróbuj oświadczenie catch
i to jest estetyczne i funkcjonalność, która obiecuje
lub starają się dać przy czym można myśleć
jak tylko pisanie, a następnie spróbuj złapać, a następnie złapać nie mając
martwić się o każdy Pojedynczy punkt możliwe
gdzie błąd może obsługiwać ... zdarzyć,
można obsługiwać to wszystko w Zakończenie puszki jak potrzeba małego bloku
kodu, a może nawet rozróżnić błędy
jak można w tym przypadku.
Tak, że będziesz w nomenklaturze zobacz w literaturze może
jak Tim przedstawia niektóre z tych rzeczy też jest
że idealnie chcesz obiecuje rozwiązać
i rozwiązywania środek do obietnicy że w końcu powrócić tak powiem
, ale nie w sposób tradycyjny wartości, więc albo się uda
na nie zasadniczo.
Dobrze wszelkie pytania, a następnie, Nie miało być wystarczająca
dla ekspozycji na obietnicach ale tylko modelu psychicznego
w kodzie rozpocznie zobaczyć.