>> Гаразд тому ми повернулися, пару цілей на сьогоднішній день,
ми забрати, де ми зупинилися минулого разу,
Нагадаємо, що ми були що робить цей спадкоємність
серверних пов'язаних додатків, супер просто, але з використанням вузла 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
або інших мовах це процесуальний кодекс суттєво,
це більш традиція спробуйте зловити заяву
і це естетичне і функціональність, яка обіцяє
або намагається дати вам в якому ви можете думати про це
як просто писати спробу, а потім зловити і потім зловити не маючи
турбуватися на кожному єдино можливим точка
де помилка може бути впоратися ... трапитися,
Ви можете обробляти все це в При необхідності кінець невеликий блок
коду, і ви можете навіть розрізняти помилки
як ви можете в цьому випадку тут.
Таким чином, номенклатура, що ви будете см. в літературі, може бути,
як Тім представлені деякі це речі теж є
, Що в ідеалі ви хочете обіцяє вирішити
і дозволу обіцянку кошти що, нарешті, повернутися, так би мовити
але не в традиційному стилі вартості, так що або успішно
для не вдається істотно.
Гаразд будь-яких питань, то, це не означало бути досить
для впливу обіцянок а просто ментальна модель
для коду ви почнете бачити.