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