>> Добра таму мы вярнуліся, пару мэтаў на сённяшні дзень,
мы забраць, дзе мы спыніліся ў мінулы раз,
Нагадаем, што мы былі што робіць гэты пераемнасць
серверных звязаных прыкладанняў, супер проста, але з выкарыстаннем вузла JS
а затым і зусім нядаўна з дапамогай экспрэс-дотык AS
і тое, што было выказана JS аналаг ў PHP свеце.
Так экспрэс больш ... блізка,
так экспрэс, па сутнасці, Рамкі MBC, што гэта даволі
папулярным у вузле JS свеце,
Кніжная палка, якія мы ўбачым сёння праз Цім з'яўляецца аналагам
з красамоўнай які з'яўляецца ОРМ на аб'ект адносіны картографа
што фактычна робіць яго лягчэй , Каб пазбегнуць нізкага ўзроўню SQL код
а на самай справе выказваюць адносіны сярод розных аб'ектаў.
Такім чынам, адна з самых стромкіх рэчы сумленна
аб вузел JS толькі, як лёгка ён паддаецца
рабіць прыкладанняў рэальнага часу, рэчы, як чат-сервераў
або серверы абмену паведамленнямі, усё, што вы, хлопцы, цяпер выкарыстоўваюць
як Google ... G-чат або Google прытон
або змяненняў статусу Facebook або нават Twitter, калі вы
на іх вэб-старонкі ўсё з'яўляецца свайго роду рэальным часе
або дае ілюзія рэальнага часу
і што на самой справе боль у шыя зрабіць з чымсьці
як PHP і My SQL Права што ж мы прапануем
у панядзелак, будуць сродкі
з дапамогай якіх вы маглі б рэалізаваць ілюзія рэальнага паводзін часу
з чат-сервера ў PHP, што б вы павінны зрабіць?
Аліса пасылае паведамленне, парад увядзіце куды імкнецца?
Так.
>> [Раздзел неразборліва]
>> У базу дадзеных, а затым што ж браўзэру Боба ёсць
зрабіць, каб рэальна ўбачыць што Эліс сказаў, так?
>> [Раздзел неразборліва]
>> Трымайце апытанне база дадзеных, Права, так Ajax запыт мае
страляць кожную секунду, кожны мала секунд ці мы казалі коратка
але не глядзеў на прыкладзе тое, што называецца доўга апытання,
хто-небудзь успомніць, як
што механізм ... на высокі ўзровень работы?
>> [Раздзел неразборліва]
>> Сапраўды, ды так браўзэру яшчэ робіць Ajax запыт
на сэрвэры, да Foo кропка РНР але Foo кропка PHP толькі здаецца
павесіць, яна па сутнасці сядзіць у цыкле для, як многія
як 30 секунд, як правіла, і толькі адзін раз файл кропка PHP Foo
разумее, пра ёсць новая радок
ў базе дадзеных робіць ён на самай справе адказаць
з HTTP рэагаваць.
Дык вы думаеце, што гэта можа у адваротным выпадку павесіць сервер
і гэта робіць у некаторай ступені
але гэта азначае, што ёсць шмат менш накладных выдаткаў
таму што вы не патрэбен новы TCP злучэнне, новае злучэнне HTP
на самай справе прасіць дадзеныя з сервера.
Але вузел JS пастаўляецца з вельмі папулярная бібліятэка называецца сокет
кропка ю, якія вы маглі б ніколі не выкарыстоўваў пабудаваны на вяршыні
з тэхналогіі, званай вэб- Гняздо, які прысутнічае
у самых сучасных браўзэраў і што раз'ём IO робіць дазволіць вам
стварыць прынцыпова пастаяннае злучэнне
паміж браўзэрам і серверам гэта вельмі нізкія накладныя выдаткі
так што вам не абавязкова ёсць тыя ж самыя праблемы маштабавання
што вы, магчыма, калі вы пастаянна зваротаў да сервера
у свеце PHP і мой SQL і таму падобнае.
Нават для старых браўзэраў
якія не падтрымліваюць вэб-раздым гэтая бібліятэка гняздо кропка ю можна
абаперціся на выбліскаў рэалізацыя сокетаў
і разеткі з'яўляецца сеткавым рэч ад CS143 напрыклад.
Ці ён можа нават ўпасці назад на доўга Апытанне сам так яны рэалізуюць
што ж роду працы
вакол на самай справе падтрымання ілюзія гэтай сувязі.
Так гнязда [неразборліва] IO і гэта ў форме
бібліятэкі Java Script, па сутнасці, калі вы выкарыстоўваеце яго
ў выглядзе вузла JS Дадатак, якое вы не толькі ўсталяваць
гэта як пакет выкарыстоўваючы нешта як НПМ, які мы выкарыстоўвалі ў панядзелак
і ці вы таксама ўключаць пазбавіць тэг у ў HTML файл
што кажа выкарыстоўваць бок кліенцкая бібліятэка.
Такім чынам, ёсць дзве палоўкі ў гэта і тое, што мы зрабілі тут
у чацвёртай ітэрацыі паслядоўнасці ў панядзелак
прыкладаў складаецца ў наступным.
Так гэты файл структура нагадвае вельмі агульны набор
на выказаныя JS і на шчасце гэта спосаб прасцей
чым lervo [фанетычных] быў, памятаю, калі вы ўсталюеце
да lervo вы атрымалі велізарны адваротны дамп цэлага вялікай колькасці файлаў,
каталогі пастаўшчыкоў, Бібліятэка і вельмі цяжкі вага ў параўнанні з гэтым.
Зараз у справядлівасьці мы распранулі ад рэчы, якія ў значнай ступені
адцягненне але ўсё сакавіты матэрыял сапраўды
ў модулях вузлоў.
Проста каб даць вам густ, калі мы паглядзім
ў модулях вузлоў ёсць два модуля або бібліятэкі
што я запампаваў, гэта будзе эквівалентная
каталога пастаўшчыкоў, адна называецца экспрэс, які з'яўляецца
як larevel але ў вузле
і гняздо IO адзін я толькі што згадаў.
Так што тыя, існуюць, так што мы можам выканайце наступныя дзеянні, калі я адкрываю
да скажам індэкс кропка HTML, Давайце спачатку паглядзім на HTML,
гэта будзе складаць гэта цела, мой супер,
супер проста чат сервер.
Так што, па-відаць вул з унікальнай ідэяй паведамленняў
а вось дзе адзін ці за адзін раз,
усе імгненныя паведамленні з'яўляюцца будзе з'яўляцца паміж Алісай
і Боб і затым ёсць Простая форма з тэкставым полем
і кнопку адпраўкі з дапамогай якога Аліса
або Боб можа на самай справе паведамленне адзін з адным.
Такім чынам, чысты эфект, калі Я запусціць гэта дадатак
робячы вузел прастору прыкладання пункт JS, калі я падцягнуць пару
з акна браўзэра ў тым, што Аліса можа быць справа,
Боб можа быць на левая і проста
каб было ясна, што няма ніякай магіі тут у мяне ёсць адно акно
ў рэжыме інкогніта, так няма ніякіх абмен печыва або што-небудзь
як гэта, гэта два розных карыстальнікаў.
Я павінен быць у стане мець Аліса павітацца Боб, націсніце на кнопку адправіць
і зараз вы бачыце злева што паведамленне Алісы быў адпраўлены
і амаль імгненна на права.
Няма апытання, здавалася б удзел, Боб атрымаў такое ж паведамленне.
Цяпер Боб кажа павітацца Алісе Вы бачыце супрацьлеглы эфект.
Так што ж адбываецца на самай справе, як шмат кода мы павінны напісаць
ажыццявіць гэта чат сервер
якія зараз можна экстрапаляваць думках, што кожны
ў гэтым пакоі, калі гэта не былі на маім [неразборліва]
але на Foo кропка ком мы маглі ўсе упершыню на сайце імгненна
адзін з адным.
Так у чым жа удзел і перш, чым я зніміце гэты экран гэта гэта
проста раз'ём ўводу-вываду, Трохі шумны, гэта проста друк
адладкавую інфармацыю на экран,
там на самой справе нічога яшчэ там адбываецца.
Такім чынам, дазвольце мне адкрыць прыкладанне кропкавыя JS, так як і раней, у нас ёсць некалькі рэчаў
у верхняй частцы файла.
Звязка патрабаванняў, такім чынам, яны, як бібліятэк
або абвастрыць падказкі ці патрабуюць унцыі што ментальная мадэль вы
хочуць мець і проста каб рэзюмаваць FS выкарыстоўваецца
за тое, што від функцыянальнасці?
Так сістэмных файлаў, каб чытанне файлаў патэнцыйна і ўсё ў такім духу
і я выкарыстоўваю гэта ў адным размясціць як вы ўбачыце,
экспрэс, вядома, гэта рамкі, якія мы выкарыстоўваем,
гэта строга не неабходнасці мы маглі
як у панядзелак цалкам стварыць наш уласны HTTP-сервер з нуля
робячы стварыць сервер і ўсё такога роду кода з да
але, як мы ўбачым, гэта робіць рэчы крыху лягчэй
таму ўсё, што трэба зрабіць, гэта у радку 3 тут асобнік
і выказаць аб'ект, я пазваню гэта дадатак, некалькі ўмоўна,
Я тады скажыце прыкладанне для слухаць на адвольна порта 1337
, Якія могуць быць умоўна 80
а затым, нарэшце, у мяне ёсць новы Лінія сёння, які кажа
патрабаваць гняздо Бібліятэка ю, а затым
гэтым ланцугу падыход будзе гэты аператар кропка Я проста
называючы ўрок слухаць гэта па сутнасці кажучы сокет
Бібліятэка IO таксама слухаць, што ж серверы
або вэб-злучэнні гняздо.
Так што цяпер, так што гэта робіць, гэтыя чатыры лініі
кода тут, які павінен глядзець нагадвае larevel,
што ж гэта ўяўляеце?
>> [Раздзел неразборліва]
>> Гэта ... маршрут, проста маршрут так у дадатак кропкавых JS,
ака сервер кропка JS залежнасці ад таго, што чалавек хоча называць яго
ў сваіх уласных прыкладанняў ў вас ёсць пагадненне
рабіць вызначэнні вашыя маршруты,
дадатак кропка Get азначае, што калі вы атрымліваеце запыт на дабіраецеся, каб пайсці
каб літаральна за слэш ісці наперад і называюць гэта ананімную функцыю
і ананімная функцыя ў У гэтым выпадку бярэ на патрабаванні
або запыт і адказ, патэнцыйна некаторыя іншыя рэчы
але мінімальна гэтыя два.
Запыт дае доступ да рэчаў, як параметраў HTTP
і загалоўкі і іншыя сакавітыя рэчы
і затым адказ механізм
, З дапамогай якога вы можаце рэагаваць на карыстальніка.
Так што гэта супер проста нават хоць мы не бачылі даволі
Той жа самы код у мінулы раз, я Выкарыстанне файлавай сістэмы модуляў,
стварыць чытання метад патоку якая па сутнасці робіць гэта,
стварыць паток чытання, які азначае па сутнасці пачаць сёрбаючы
уверх па байтаў з індэкса пункту HTML так жа эфектыўна, як вы можаце
не абавязкова чакаць да вашага прачытаць ўвесь файл
і як вы робіце, што трубы іх літаральна
на вертыкальнай паласе сэнсе калі вы адчуваеце сябе камфортна
з камандным радком Linux,
труба яго да адказу аб'екта.
Так з'явіліся два прыкладу звязаныя з патокамі ў панядзелак,
мы толькі глядзелі адзін на але Вы заўсёды можаце азірнуцца назад
на паток аб і патоку 1.
Паток 1 ... 0 зрабіў нешта падобнае на гэта,
паток 1 зрабіў нешта амаль гэтак жа, як гэта,
гэта ўсяго толькі спрытны адзін лайнер сказаць роду
з чмякаць нешта ў тут а затым адпраўляць яго тут
ў той жа час без рабіць масу згаджаецеся
а затым масавы права,
гэты падыход як правіла, больш эфектыўна.
Дык вось выгляд старых рэчаў нават калі яна была новай ў панядзелак,
гэта ўсё, што трэба рэалізаваць чат сервер
з вузлоў JS і больш спецыяльна гнязда кропка Іа.
Такім чынам, як гэта працуе, дазвольце мне перамясціць яго ўверх трохі,
так IO гэта проста пераменная што ставіцца
у модулі мы патрабуецца раней,
кропка сокет проста Ўласцівасць ўнутры яго
што дае мне гняздо звязаныя функцыі
на з'яўляецца распаўсюджаным метадам, што ставіцца да таго, што агульная паняцце?
Падзея гэтак далей ака слухаць некаторыя бібліятэкі гэта проста азначае,
Пачуўшы гэта падзея які называецца злучэнне
і зараз вы ведаеце, гэта толькі з гледзячы на ​​дакументацыі,
той, хто напісаў бібліятэку вызначаецца мерапрыемства пад назвай
злучэнне, якое робіць што ваш падумаць
калі Аліса або Боб падключаецца.
Ідзем далей і называюць гэта ананімная функцыя адбору праходжанне
ў адным аргуменце кліент што, мабыць, нейкая
з аб'екта, які ўяўляе Падлучэнне Алісы
або злучэнне Боба або Чарлі або хто-небудзь іншы
і зараз мы робім наступнае.
Мы кажам кліенту пасля ён ці яна звязана
слухаць спецыяльна
для паведамленні, што цалкам ўмоўна назваць паведамленне
тоўстай кішкі кліент.
Гэта тое, што Цім і Я прыдумаў, гэта можа быць Foo
або бар, гэта толькі некаторыя унікальная радок, што нам трэба
прыняць рашэнне аб як распрацоўшчыкі.
Кожны раз, калі Аліса або Боб чуе
гэта падзея гэта ананімна функцыя павінна быць выклікана
і дадзеныя, Змест Алісы
або паведамленне Боба павінны быць прайшло ў гэты апрацоўшчык падзей
і што цяпер варта Кліент рабіць добра вы можаце роду
з прачытаў гэта даволі інтуітыўна кліент павінен трансляваць,
інакш вядомы як выпусціць паведамленне званы метад сервер
тым самым паказваючы гэта паведамленне прыходзіць з сэрвэра не
з браўзэра і што бы, што паведамленне будзе,
гэта, па-відаць карысная нагрузка ад што прыходзіла ад кліентаў
і мы толькі збіраемся Умоўна назавем яго паведамленне.
Так шмат гэта адвольнае
праз разумнай наймення канвенцый, Цім і я прыйшоў
с, у асноўным Цім і тады мы проста ствараем у канчатковым рахунку,
мець зносіны сервер, які робіць тое, што, калі Аліса пасылае паведамленне
і хіты увядзіце Якое падзея па-відаць, звальняюць,
проста рэзюмаваць.
Аліса тыпы паведамленняў, хітоў увядзіце, кліент паведамленне звольнілі,
гэты код чуе, што і цяпер сервер транслюе тое, што,
што канчатковы вынік гэта на самай справе?
Аліса пасылае паведамленне зараз сервер рэтранслюе яго
эфектыўна для ўсіх, акрамя Эліс, чаму ўсё, акрамя
Аліса, калі вы проста паглядзіце
у кліента дакументацыі кропка вяшчання кропка прызнаць,
літаральна робіць гэта, транслюе паведамленне
для ўсіх, акрамя кліент, які паслаў вас
што апошнія паведамленні.
Так што гэта, чаму вы толькі адзін раз убачыць на кожным боку,
вы не бачыце як Эліс і Боб атрымліваць паведамленне Алісы.
Дык вось ён, гэты з'яўляецца рэтрансляцыі агент
калі вы будзеце гэта проста прымаць у паведамленнях
і рэтрансляцыі іх
і гэта выдатна маштабуецца Я маю на ўвазе нават
з супер проста сервер і некалькі радкоў
кода вы маглі, вядома, апрацоўваць сотні, калі не тысячы
адначасовых простых паведамленняў ходзіць туды-сюды, як гэта
і ўявіце сабе складанасць Цяпер зрабіць гэта ў PHD
або Larevel ці мой SQL і колькі кода вам прыйдзецца
напісаць для таго, каб на самай справе дамагчыся гэтага.
Зараз у справядлівасці гэтага не з'яўляецца сталым права
калі сервер выходзіць з ладу мы губляем ўсю гісторыю
так што гэта не зусім здзейсненага перакладу, але гэта
што прама наперад.
Давайце паглядзім на сцэнары Java Код мы прапусцілі над раней,
гэта Алісы і Кліент Боба,
вэб-старонка, што яны выкарыстоўваюць у цяперашні час давайце паглядзім тут на імгненне.
Там трохі больш кода
але гэта ў значнай ступені проста JQuery вось так апавяшчэнне
што на вэб-старонцы што я выцягнуў
да імгненне таму мы ўключыць бібліятэку JQuery,
сокет ю бібліятэку і, як ў бок заўважыце розніцу
тут, слэш слеш ў пачаткам шляху
як гэта азначае, што менавіта,
дзе JQuery кропка JS на якім сэрвэры?
Так.
>> [Раздзел неразборліва]
>> Гэта ў Інтэрнэце, ды літаральна называецца код кропка JQuery
кропка ком дык чаму слэш, слэш, чаму б проста не адзін слеш,
дзе ж HTTP або тоўстай кішкі, Што гэта азначае ў цэлым
калі вы слэш слеш ў пачатак URL?
Гэта на самай справе карысна.
Добра, так што, відавочна, адсутнічае HTTP цяпер, калі мы разважаем
праз гэта лагічна, звычайна вам не трэба
згадаць серверы імёнаў права
як калі б проста выкарыстоўваць касую рысу JQuery кропка JS, што мяркуецца
браўзэрам?
Тое, што файл знаходзіцца на такі ж сервер так працягваць такога роду
логікі, калі вы не кажаце гэта тое, што пратакол, што з'яўляецца
браўзэру выказаць здагадку, той жа пратакол так калі вы калі-небудзь наведвалі сайты
якія даюць вам памылку ўздоўж лініі неабароненай ўтрымання
на гэтай старонцы, гэта таму, хтосьці жорстка HTTP-
тоўстай кішкі слэш слэш URL для малюнак або файл сцэнарыя Java
або CSS файл, нешта накшталт таго ў зыходным кодзе старонкі
але сама старонка ў браўзэры URL з'яўляецца HTTP с.
Так што гэта проста фантазіі крыху шляху
сказаць, я не ведаю што пратакол
што гэтыя канчатковыя карыстальнікі збіраецеся выкарыстоўваць
але толькі пераканайцеся, што ён матчы так, каб хром
і іншыя браўзэры не крычыце на карыстальніка.
Адзіная загвоздка з'яўляючыся JQuery людзі лепш усталяваць
да HTTPS на сваім серверы.
Такім чынам, яны на самой справе лістынг на 443.
Добра тым часам гэта адзін тут гэта накшталт
ўводзіць у зман слэш Гняздо ю мяркуе
што ёсць каталог з імем Гняздо кропка ю на маім сэрвэры
але няма, калі мы тыкаць
вакол ёсць Каталог вузла модуля
але няма нічога грамадскага пра гэта,
калі мы наладзілі сокетаў IO слухаць на тых жа партоў,
1337 істотна, што бібліятэка што нехта напісаў гэта адбываецца
ў свайго роду ўставіць код ў навакольнае асяроддзе вузла для JS
і проста слухаць для гэтага шляху.
Гэта бібліятэка мае толькі сканфігураваны маршрут для гэтага
гэта не рэальны каталог.
Гэта было б у стандартнае становішча.
Добра, так зараз цікава частка,
таму, калі дакумент гатовы, як паказана
гэтым JQuery пабудаваць, Спачатку я збіраюся ісці наперад
і падключыць да разеткі,
што разетка проста ... трымаць яго проста я збіраюся далучыць
скараціць, гэта , Дзе знаходзіцца карыстальнік,
Я трымаў спрашчэння прыкладу мы толькі збіраемся падключыць
ў тую ж самую URL, што Карыстальнік наведаў потым я збіраюся
зрабіць наступнае, я збіраюся расказаць браўзэр Алісы або Боба
для праслухоўвання паведамленне з сервера.
Зноў жа, гэта магло б быць Foo
ці бары ў любы час вы пачуць паведамленне
ад яго дадзеных выклікаў сервера , А затым зрабіць гэтую JQuery код
які я найбольш гадаць, калі не кожны знакам
з гэтымі дзён, але па сутнасці кантактны пералічыць пункт
да існуючага UL які назвалі паведамлення
што літаральна кажа усё, што карысная нагрузка
паведамлення чата з наступным злучок, за якім варта атрымліваць,
з наступным прабелам, а затым у час абнаўленняў і, менавіта таму,
каб было ясна, калі мы вернемся
да гэтага вы атрымаеце гэтыя дадатковыя Кулі зноў і зноў
і зноў з часамі даты.
Між тым, калі мы паглядзім тут мы проста павінны
апрацоўваць дадзеныя формы так, каб было які прымае
з імгненнага паведамлення, вось адпраўка і гэта з'яўляецца свайго роду
са стаўлення да вузлавых JS, слухаць да формаў прадставіць падзея.
Калі гэта адбудзецца прадухіліць дэфолт, гэта проста азначае, і не давайце іх
на сервер у звычайны чынам, перазагрузіць ўсю старонку,
мы хочам зрабіць усё гэта з дапамогай AJAX.
Вось толькі некаторыя коды JQuery
на самай справе атрымаць ўваход тып якога паведамленне,
імя якога паведамленне ісці наперад
і атрымаць яго значэнне Затым вы ідзяце наперад
і калі ў вас сапраўды ёсць паведамленне, калі Аліса і Боб
або Bob фактычна тыпы некаторыя ні 0 нумар націску клавіш выпраменьваюць
на сокеце паведамленне называецца паведамленне кліента з гэтай карыснай нагрузкі
а затым тут гэта , Што робіць яго зялёным, а ня
на чырвоны, мы проста выхад Прыбор бок [неразборліва].
Дык вось яно што, але ўсё гэта проста наладзіць,
рэальны новы матэрыял я б сцвярджаюць, проста гэтыя тры
ці пяць радкоў кода і такога роду намёкаў ва ўладзе
вузлавых JS а разам з ім гэты канкрэтны бібліятэка.
Такім чынам, давайце хутка паглядзець на экспрэс кропкавых JS,
так што я збіраюся паспрабаваць зрабіць у пакінутай пары
хвілін тут настроены Некалькі ідэя, некалькі метадаў,
, Якія затым ўзяць пару хвілінны перапынак, Цім будзе створана
і тады мы будзем ныраць глыбей
да больш цікавым выказаць прымянення, а таксама
да кніжнай паліцы, бібліятэка Цім на самай справе напісаў
для адкрытага зыходнага кода
што дае нам красамоўнае святло функцыянальнасць з маім SQL
і здзелкі і іншыя, такія асаблівасці і ён будзе таксама ныраць
ў трохі глыбей, каб мова Java Script сам,
як яго аб'ект або ня клас Мадэль працуе ў адваротным выпадку ведаць
ў якасці дасведчанага ўзору, некаторыя падрабязней пра гэта ў будучыні.
Так што давайце зірнем на два апошнія прыкладання тут, сервер пяць
і сервер 6, якія ўсё роду блізкія па духу,
яны ня проста сервераў але яны выкарыстоўваюць экспрэс.
Так што давайце зірнем на што гэта на самай справе,
Я збіраюся ісці наперад і адкрыты ... Я збіраюся запусціць гэта дадатак
з вузлом прыкладанняў JS, я збіраюся вярнуцца да маёй браўзэры і перазагрузіце
і гэта, па-відаць усё гэта робіць сервер,
гэта супер проста сервер вось, мабыць, пошук
рухавік, так што калі я тыпу ў Foo і прадставіць, ніякіх вынікаў пошуку
для Foo, я не знаходзіў час для рэалізацыі складанай
задняя частка, усё гэта адбываецца
зрабіць ня рэха нягледзячы ні на што вы не ўвядзеце ніякіх вынікаў для Foo,
Няма вынікаў бар так як мы гэта робім
таму што ёсць пару штук, адзін,
ёсць відавочна, што некаторыя ўваходы якія прадастаўляюцца
на сэрвэр не Larevel вядома, але вузел JS зараз
так што мы павінны нейкім чынам атрымаць у гэтым параметры Q,
мы дакладна рабіць нейкая гледжання тут,
мы аказання выгляд так можа быць, ёсць магчымасць
для шаблонаў або зменнай interprelation [фанетычныя]
так што давайце зірнем ў наступным.
У дадатак JS для гэтага канкрэтнага сервер гэта ўсё ў нас ёсць.
Адзін мы патрабуем выказаць Сам, два модуля шлях
які проста робіць некаторыя карысныя рэчы
падобна на далучэнне радкоў разам і так далей для мяне,
Я праслухоўваць порт 1337 і цяпер гэта новы так атрымліваецца
, Што кур'ерскай як Larevel падтрымлівае розныя модулі падключаюцца
і тэхналогіі і іншыя рэчы і адзін
з тэхналогій, якія вы можаце падключыць ўяўляе сабой выгляд рухавіка
які проста азначае, што выкарыстанне шаблонаў рухавік вы хочаце выкарыстоўваць,
Larevel быў свой уласны рэч, але вы можаце падключыць
ў розных рэчах, адрозніваецца персік рамкі P ёсць
розныя спосабы шаблонаў, EJS з'яўляецца проста распаўсюджаным
і даволі просты рухавік што проста давайце вы робіце рэчы
як у фігурных дужках, што вы мелі на сінтаксісе Larevels
для замены зменных,
гэта крыху розныя сінтаксічна гэта ўсё.
Так што цяпер ёсць тое, што называецца сярэдні вырабы такім чынам, вы ўбачыце,
ў вашым ўласным каманд вузла праецыраваць сярэдні посуд толькі збольшага код
або бібліятэкі, якія вы ін'екцыйныя
у [неразборліва] адказ Жыццёвы цыкл прыкладання,
іншымі словамі гэтыя два лініі кажуць экспрэс
зрабіць некаторую дадатковую працу паміж час, якое атрымлівае запыт
і паміж часам ён пасылае што запыт на ваш маршрут,
ваш код, што вы напісалі.
Так, у прыватнасці, гэтая лінія тут выкарыстоўваць экспрэс кропку статычнага і ўсё
гэтай складанасці гэта проста азначае, што калі вы бачыце запыт
што прыходзіць на статычны файл як Foo кропка JIF або Foo кропка CSS
або Foo кропка JS так не дынамічна генераваныя маршрут,
ісці наперад і выказаць здагадку, што гэта жыве ў грамадскім падкаталогу,
вось і ўсё, што робіць.
Гэта накшталт як адлюстраванне ў Larevel, усё на Ваш вэб
ці ваш публічны каталог а ў Larevel.
У наступным радку знаходзіцца ўсяго кажучы, што я хачу выкарыстоўваць маршруты,
Я хачу выкарыстоўваць рэчы як дадатак кропка атрымаць
якія мы бачылі некалькі хвілін назад і мы ўбачым праз секунду цяпер.
Так дадатак кропка атрымаць сродкі слухаць для гэтага маршруту,
слэш, калі вы атрымаеце яго называем гэта ананімная функцыя, якая прымае
ў запыце, і а адказ і зараз проста
як Larevel ў вас ёсць спосаб аказання шаблон,
адказ кропка аказаць, цытую Unquote індэкс,
аказваць такое шаблон званы індэкс,
вось менавіта таму давайце прыпыніць, што разьба на імгненне погляд
на змесціва каталог праглядаў
і заўважце, гэта таксама супер проста на дадзены момант,
ёсць індэксны кропка EJS і пошук кропкавыя EJS,
Я, відавочна, хочуць першым
таму што гэта той, які я толькі што стаміўся, каб зрабіць, і мы ўбачым
ў індэксны праглядаў кропкавых EJS Найбольш фактычна цалкам HTML
на дадзены момант, ёсць на самай справе не шаблонаў не адбываецца.
Так што я тэхнічна не зрабіў нават не трэба называць яго EJS,
Мне не трэба, што функцыянальнасць але я трымаў яго раўнамерным,
так вось яно што, гэта тое, што дае мне, што супер просты выгляд.
Так што ёсць толькі адзін маршрут, калі мы паглядзім сюды я ўжо казаў
што гэта тое, што апрацоўвае атрымаць слэш пошуку, таму фактычнае адсартаваць
з Google, як апрацоўшчык для сфарміраваць уяўленне, калі вы атрымліваеце
што шлях называем гэта ананімная функцыя
і зрабіць шаблон называецца пошук
і тое, што з'яўляецца другім Аргумент як мяркуецца маю на ўвазе.
Гэта падобна на аб'ект JSON з віды або Java аб'ект сцэнара.
Што роля, што Другі аргумент як мяркуецца?
>> [Раздзел неразборліва]
>> Фактычны запыт, які набраў у карыстач-відаць жыве
ў пошуку кропка запыту, запыту спасылаючыся на ўсе
пасля знака пытання пункту д, які з'яўляецца адвольнае імя
што я аддаў яго гэтак жа, як Google
а між тым д тоўстай кішкі проста кажучы прайсці ў шаблон,
Пошук кропкавыя EJS, ключ д і значэнне
за ўсё, што д адхіленне фактычных значэнне было.
Так што пакідае толькі адзін файл ўяўляе цікавасць для поглядаў,
Пошук кропкавыя EJS я ўвесь час гэта супер проста занадта,
Гэта ў асноўным толькі HTML выключэннем для аднаго некалькі выдатнай лініі
што гэты сінтаксіс тут які выглядае як гронка
розных шаблонаў рухавікі гэта проста азначае, відэлец
у значэнні д і зрабіць яго тоўстым шрыфтам.
Такім чынам, няма ніякага фактычнага пошук функцыянальнасць, але гэта сапраўды выгляд
з падкажа, як вы б структураваць шкілет
заяўкі ў гэтым родзе.
Між тым ... на самай справе я можа паказаць адну рэч,
заўважыць, што ў мяне ёсць некаторыя HTML тут для CSS-файлаў
і файлы сцэнарыяў Java, няма нічога ў гэтых файлах
на дадзены момант не заўважыць, што ёсць грамадскі каталог
як я ўжо сказаў раней для статычныя файлы, так што калі я іду
там ёсць мой каталог CSS,
калі я іду туды там стылі кропка CSS
і няма ніякіх ўтрыманне там
але гэта, як вы б ёсць грамадскія даступныя файлы.
Добра, давайце зірнем ў адным іншым варыянце тут
і тады мы будзем уводзіць адна ідэя і брэйк.
Так што гэта сервер 6 апошні, таму гэта амаль ідэнтычныя, за выключэннем
для ніжніх двух радках які выглядае наступным чынам.
Таму на самай справе ёсць Трэцяя лінія, што па-іншаму
але я схаваў ... так што дазвольце мне вярнуцца злёгку гэтак жа хто-небудзь хоча
прапанаваць, што адбываецца тут з пункту гледжання непрафесіяналы
або тэхнічныя тэрміны, што па праезду адрозніваецца аб гэтай версіі
ў адносінах да тых, лініі ў лепшых вузлоў.
Што мне па-відаць, зроблена тут і чаму?
Так, Шарон.
>> [Раздзел неразборліва]
>> Так, падобна, у мяне ёсць пераехаў індэкс і пошук
так асобны прамой або нешта, Я улічаны іх
і вось так, каб гэтак жа, як у Larevel вы маглі б паставіць усе
з вашай логікі кантролера ўнутры маршруты кропка PHP
з ананімных функцый зноў і зноў і зноў
але такі файл вядома можа стаць даволі масіўная
так у маршрутаў кропка PHP, што большасць
з вас, хлопцы рабілі будзе вы паказалі імя
з класа кантролера або нават імя метаду
, Якія павінны выклікацца
гэтак жа ідэя тут нават хоць сінтаксіс трохі
адрозніваецца, таму тут апавяшчэнне
што ў мяне ёсць, па-відаць рэалізаваны мае ўласныя JS вузлоў
Модуль і модуль проста Java скрыпт-файл, які прытрымліваецца
да практычна канвенцыі што мы ўбачым праз хвіліну.
Так мяркуецца, што ўсе мае функцыянальнасць для індэкса
і для пошуку ёсць, па-відаць быў пастаўлены ў гэтым каталогу
і цяпер я тэлефаную, што ўся модуль або пакет або бібліятэка,
што вы хочаце думаць пра яго, як,
як маршрутаў пераменная называецца маршруты.
Такім чынам, відавочна ў там маршрутаў кропка індэкс з'яўляецца метад, званы
індэкс і, мабыць, ёсць іншы метад, званы пошук
у гэтым маршруты модуляў ці бібліятэка
і я проста маршрутызацыі яго менавіта так, што я не стаўлю ўсё
майго ананімнага кода ўнутры майго прыкладання файл.
Так што давайце ісці ў маршруты паведамленьне ёсць толькі індэксны кропка JS
і калі я гляджу тут гэта Канвенцыя я меў на ўвазе раней
так што гэта даволі адвольная але гэта канвенцыя вузел.
Кожны раз, калі вы рэалізуеце свой уласны вузел бібліятэка JS,
ака модуль вы, па сутнасці можа пісаць код сцэнарыя Java вас
хачу ў гэтым файле, ён будзе быць вельмі чыста пясок у скрынцы
так што любыя зменныя, якія выбраць не будуць сутыкацца
з бібліятэкай чыйсьці, пераменныя або метады або што-небудзь
як гэта, але нічога Вы хочаце, каб выкрыць
са знешнім светам аля Адкрыты метад у Java Script
або PHP або іншых мовах вы павінны пляснуць ўнутры
глабальнага аб'екта, аўтар вузла пад назвай экспарт.
Так, робячы экспарт кропка Індэкс Шукаю падвяргаючы карыстальнікаў
гэтага модуля метад, званы індэкс, які адлюстроўвае на гэтую функцыю
так што гэта ананімна правая
але я фактычна даючы яму Імя на левай баку
і экспартаваць яе ў свеце
так што вы можаце патэлефанаваць Індэкс кропка або кропка пошуку.
Такім чынам, каб быць ясна, калі я таксама меў нешта накшталт функцыі Foo
тут, што зрабіў нешта
што функцыя будзе абсалютна функцыянаваць,
яго можна назваць у гэты файл, але ніхто
у вонкавым свеце холадна ніколі не назаве Foo
таму што гэта не экспартуецца праз гэты кропкавай натацыі.
Так што ўсё, што адбываецца,
усё прыгожа назваць разнесеныя для вас.
Такім чынам, канчатковы вынік, калі я раблю вузел з прыкладання і перазагрузіце старонку з'яўляецца
што калі цяпер я шукаю
для бар ... функцыянальна гэтыя прыкладання аднолькавыя
але гэта ўсяго толькі свайго роду крок да больш чыстай рэалізацыі,
вядома, калі вы пачынаеце пісаць больш і больш кода
і гэта ўсё, гэта.
Відавочна, не асабліва складаныя або комплекс
але па сутнасці адпраўной кропкай
за тое, што будзе вашым Першы вузел JS праграму.
Што мы зробім ўсяго праз на гэтым тыдні або ў гэтыя выхадныя
як вы сканчалі на PHP прыкладання мы будзем прытрымлівацца
з даволі просты Дадатак для каманды, каб нырнуць
у аналагічны па духу размінкі практыкаванне для PHP
які заснаваны на сярэдняга апытанне семестр,
людзі сапраўды знаходзілі карысным выканаўшы практыкаванні
рабіць нешта даволі просты
але даволі кіравацца перад вамі на самай справе вырашаць нешта большае,
па сваім меркаванні, так мы будзем сачыць з, што
і, па сутнасці будзе з-за тыдзень з паловай
з гэтага часу перакрыцця трохі з PHP свядома.
Любыя пытанні, то на выказаць ад гнязда IO
або спутанность свядомасці астатнія з панядзелка магчыма.
Добра так што спадзяюся, адзін з прыняць-то шляху да гэтага часу з'яўляецца
што ёсць для некаторых з іх рэчы вядома нашмат менш
накладныя чым вы маглі б былі выкарыстаны для.
Такім чынам, дазвольце мне прадставіць апошні ідэя,
так вельмі часта праграмаванне парадыгма
ў Java скрыпт, які на самай справе прысутнічае ў JQuery
ў апошніх версіях так, магчыма, прыйдзецца на самай справе бачыў гэтую тэхніку
і раней, але гэта таксама вельмі распаўсюджаныя ў вузел JS свеце,
гэта агульнае ў Ціма ўласную бібліятэку Кніжная палка
таму мы будзем вярнуцца да гэтага ў Больш канкрэтны прыклад
ў момант з'яўляецца рашэннем кадзіраваць, як гэта,
гэта прадстаўнік кода мы бачылі ў панядзелак, так што чытайце файл
у гэтым кантэксце не з'яўляецца рэальным Метад гэта падобна па духу
ФС кропка чытаць файл, але выказаць здагадку, што гэта ўсяго толькі некаторыя зрабілі
да метад, які нешта вельмі падобнае.
Такім чынам, мы сутыкнуліся з некалькімі пытанні ў панядзелак у цэлым
так што гэта свайго роду ... чаму гэта слізкі шлях,
гэта ператэлефанаваць парадыгма з праграмавання Java Script
і ператэлефанаваць парадыгму Я проста маю на ўвазе гэтую тэхніку
дзе вы не вернецеся значэнні адразу
таму што гэта можа блакаваць сервер
рабіць нешта яшчэ, што гэта карысна, вы замест ператэлефанаваць
як зумеры на страсянуць Шак калі вы будзеце гатовыя
прайсці назад адказ ў якасці аргументу.
Гэта слізкі шлях
дзе ён вельмі хутка пачынае раздражняць, чаму?
Так.
>> [Раздзел неразборліва]
>> Так, мінімальна становіцца выгляд нечытэльным права
калі ў вас ёсць усе гэтыя званок спіны і калі вы прытрымліваючыся
ў добрым стылі яна становіцца даволі масава водступам
з цягам часу і выпадку я паказваю на гэта прыклад, калі вы як бы слізгаць
праз гэта проста прызначаныя для адкрыць файл JSON і раздрукаваць яго,
як гэта ўсё і ўсё ж мы ёсць некаторыя 8 або 10 радкоў тут
якія ўжо накшталт з злосна водступам,
у нас ёсць паспрабаваць злавіць што
калі вы не знаёмыя з'яўляецца Тэхніка апрацоўкі памылак
што дазваляе паспрабаваць нешта
і калі ён не працуе, то вы заўважылі гэта, мы спадзяемся,
без ўсёй вашай праграме спынення, але ёсць
столькі складанасць, як вы выгляд з павінны думаць гэта праз
і не дай Бог мы робім пару іншы асінхронны метад выклікае,
рэч ўжо будзе тут,
можна падумаць, што гэта свайго роду з дурной эстэтычнай, але гэта
таму ператэлефанаваць парадыгма настолькі распаўсюджаны па меншай меры,
ва ўласным кодзе вузла гэта вельмі хутка стаць стомным,
цяжка адладжваць, водступ пачынае важна, каб вы маглі разабрацца
з пагоні рэчаў ўніз, гэта проста не вельмі шчаслівага шляху
з праграмавання.
Так што людзі зрабілі
у розных кантэкстнага вузла сярод ім гэта паспрабаваць спрасціць гэта,
АС Напрыклад абяцанняў гэта яшчэ адзін спосаб мыслення
аб напісанні асінхроннага кода што візуальна ператварае нешта
як версія 1 у гэтая версія 2.
Я сцвярджаю, і гэта зноў толькі выгляд змешаны
паміж фактычным кодам і псеўда Код, гэта прадстаўнік
, Як бы вы паўторна рэалізаваць што тая ж самая рэч,
адкрыць файл JSON, разабраць яго і раздрукаваць яго
з выкарыстаннем нешта называецца абяцанні
і ключ сінтаксічны дэталь
што ёсць ланцужкі тут адбываецца.
Звярніце ўвагу, што толькі кропка з коскі
ў цэлым ... на самай справе добра давайце ... Я не хачу ўводзіць у зман.
Гэта не з'яўляецца строга неабходным але давайце быць паслядоўнымі,
заўважыць, што кропка з коскі , Які адносіцца да адкрыцця
усяго гэтага заявы ўсе шляхі сюды.
Такім чынам, хоць я адфарматаваны гэта ... выгляд погляду
як тры сцвярджэнні, тры заявы, якія вы можаце паглядзець
ў Java або іншых мовах што ёсць паспрабаваць злавіць
і апрацоўка выключэнняў ў больш агульным плане.
Звярніце ўвагу, што я проста ланцуг вяртаецца значэнне кожнага
з гэтых метадаў разам.
Так што ж адбываецца, прачытаць файл калі гэта метад, які існуе,
па-відаць, спрабуе чытаць гэты файл,
кропка, то так, то гэта вельмі агульная назва, дадзенае ў свеце
абяцанняў для метад, які павінен выканаць
калі папярэдняя рэч атрымалася.
Так што гэта накшталт як поспех апрацоўшчык, так, то JSON кропка разбору,
добра JSON кропка разбору гэта проста метад
ў глабальнай бібліятэкі JSON і гэта, па-відаць прытрымліваецца
у гэтым выпадку Абяцанне мадэль
так мы гаворым, што можам проста Выкажам здагадку, што заклік гэты хлопец
і калі яму ўдасца, то называць гэтага хлопца, а затым
калі гэта на самай справе выконваецца проста суцешыць увайсці дадзеных
пад пытаннем.
Дык дзе ж памылка апрацоўка, звярніце ўвагу я накшталт
вельмі слепа ступіў ад гэтага выступу
і проста назваў гэта Спосаб і затым гэты метад
нават не правяраючы для праблем.
Ну дзе ж тыя праблемы як мяркуецца, апрацоўваюцца ... у іх
заявы кэш такія розныя бібліятэкі выкарыстоўваюць розныя
канвенцыі, але ў то гэты выпадак з'яўляецца свайго роду
з апрацоўшчыка поспех, кэш з'яўляецца свайго роду апрацоўшчык памылак
і таму, што мы не парушаная гэты ланцужок мы проста працягваць выкарыстоўваць
кропкавая натацыя звязаць разам арыгінальны метад выкліку
выяву для чытання і функцыяй выкліку памылкі сартавання
бурбалка іх шлях праз ланцуг
пакуль яны не на самай справе апрацоўваюцца які з'яўляецца шляхам чысцей, чым спрабаваць
мець справу з ім кожны чартоўску крок на гэтым шляху
так што ваш код вельмі хутка становіцца нерэальныя дадзеныя.
У гэтым выпадку мы знаходзімся сцвярджаючы, што мы стараемся
злавіць тое, што называецца памылка сінтаксісу гэта па сутнасці
падклас больш агульны памылкі і калі гэта адбудзецца прэтэнзіі
што гэта недапушчальны JSON інакш калі гэта больш агульная памылка
што мы не чакалі проста яшчэ звычайна кажуць не можа
прачытаць файл.
Зараз гэта проста азначала быць прадстаўніком код
але калі вы праграмавалі ў сыравіну Java Script або ў Java
або іншых мовах гэта працэсуальны кодэкс істотна,
гэта больш за традыцыя паспрабуйце злавіць заяву
і гэта эстэтычнае і функцыянальнасць, якая абяцае
або спрабуе даць вам у якім вы можаце думаць пра гэта
як проста пісаць спробу, а затым злавіць і затым злавіць не маючы
турбавацца на кожным адзіна магчымым кропка
дзе памылка можа быць справіцца ... здарыцца,
Вы можаце апрацоўваць усё гэта ў Пры неабходнасці канец невялікі блок
кода, і вы можаце нават адрозніваць памылкі
як вы можаце ў гэтым выпадку тут.
Такім чынам, намэнклятура, што вы будзеце гл ў літаратуры, можа быць,
як Цім прадстаўлены некаторыя гэта рэчы таксама з'яўляецца
, Што ў ідэале вы хочаце абяцае вырашыць
і дазволу абяцанне сродкі што, нарэшце, вярнуцца, так бы мовіць
але не ў традыцыйным стылі кошту, так што альбо паспяхова
для не ўдаецца істотна.
Добра любых пытанняў, то, гэта не азначала быць дастаткова
для ўздзеяння абяцанняў а проста ментальная мадэль
для кода вы пачнеце бачыць.