Автор оригинала: FreeCodeCamp Community Member.
Мария Дминского
Добро пожаловать в частью I Узнайте Node.js с бригадирными путаницами , серия, созданная, чтобы помочь вам легко понять Node.js ❤
Новое приключение прибыло! Я буду делать вам шаг за шагом от исходных Node.js Установите для создания вашего первого сервера, чтобы настроить ответы, понимание потоков и событий, а также с использованием Frameworks. Давайте начнем.
Brigadier Fluffykins хочет, чтобы вы проверили основы Обратные вызовы и Обещания Отказ Если не:
- Смотреть это Видео и читайте это Статья о Обратные вызовы Отказ
- Смотреть это Видео и читайте это Статья о Обещания Отказ
Это нормально, если вы не понимаете все сразу. Важно то, что вы введены в эти концепции сейчас. Мы хотим, чтобы ваш мозг начать приспособиться к узорам программирования Node.js, вы будете реализовывать на протяжении всех этих уроков. Удачи и счастливое обучение!:)
Сегодняшний урок будет покрывать:
- Какой Node.js есть и то, что вы можете построить с ним.
- Краткий обзор того, как Web Works (I.E. Клиент, отношения сервера).
- Загрузка и установка Node.js на Mac/Windows/Linux.
- Что означает асинхронный/синхронный, и какая не блокировка/блокировка означает.
- Как создать свой первый сервер.
Что такое Node.js?
Node.js – это среда выполнения кросс-платформы с открытым исходным кодом, которая позволяет создавать масштабируемые сетевые приложения на стороне сервера.
По среде выполнения, я имею в виду, что внутри Node.js – V8 JavaScript Runtime – тот же тот, который используется (и разработан) Браузер Google Chrome на стороне клиента. Использование модулей и библиотек Node.js – объяснил позже в этой серии – у нас есть способ:
- Масштабирование приложений в качестве трафика увеличивается
- Построить чаты и другие приложения для обработки данных
- Напрямую манипулировать информацией базы данных
- Доступ и сформируйте файлы в нашей системе на основе предпочтения
- Просьба маршрута (для веб-сайтов HTML/CSS/JS) и мониторинга трафика
- Иметь более быстрые загрузки и возможность показать прогресс этих загрузки
- Настройте наши ответы на эти запросы через маршрутизацию и перенаправление
Из-за V8 и Node.js в основном написаны в C и C ++ (даже если в JavaScript многие модули записываются в JavaScript), Node.js очень быстро. Это супер важно, когда у вас есть приложение, которое требует масштабирования.
Представьте себе, что тысячи пользователей ударяют ваше приложение и, таким образом, запрашивая информацию с вашего сервера. Как ты думаешь, что произойдет? У вас нет способа обработки этих запросов, и даже если вы сделаете, они могут быть синхронно (объяснены позже). Пользователи в конечном итоге ожидают в очереди за тысячами других пользователей для необходимых файлов для возврата. Скорость погрузки медленная, создавая плохое пользовательское опыт и заставляет вас потерять бизнес.
Масштабирование вашего приложения, когда хиты трафика – одна из самых больших вызовов приложений лица на ранних этапах.
Node.js позволяет управлять огромным количеством соединений одновременно и асинхронно – это в основном означает, что он обеспечивает масштабируемость. Кроме того, у вас есть библиотеки, чтобы помочь вам настроить обработку этих вопросов.
Клиент и сервер: традиционная модель
Прежде чем продолжить, я хочу дать краткий обзор того, как Web работает через клиент и сервер. Если вы уже понимаете, это продолжайте и пропустите эту часть.
Когда я говорю клиента, я имею в виду любой, кто запрашивает информацию.
Когда я говорю сервер, я имею в виду любой, кто обрабатывает запрос и отвечает на необходимую информацию.
Например, когда вы идете на тип:
Вы собираетесь инициировать несколько запросов на HTML-страницу веб-сайта, это элементы CSS-файлы, это документы JavaScript, и так далее. Вы спрашивать или Запрос Их сервер, чтобы показать вам страницу и все документы, связанные с ним.
Когда серверы веб-сайта принимают эти запросы, они отвечают на страницу HTML, стилы CSS и все, что вам может понадобиться просмотреть эту страницу. Это суть этого.
Важно отметить, что любой может быть клиентом или сервером. Когда вы создаете приложение локально, вы на самом деле выступаете в качестве клиента и сервера (например, Localhost: 3000 ). Больше на этом позже.
На данный момент давайте рассмотрим, как Node.js обрабатывает эти запросы по сравнению с моделью Old-School. Мы будем использовать анимацию, которые сделали для нас бригадир. Оранжевый просьба Бригадир Флуфыкина на его любимый веб-сайт, а зеленый – это ответ с сервера. Медленно, но уверенно:
Традиционная модель Client-Server включает клиент, инициализирующий запрос сначала запрос. Каждое соединение запроса создает новый поток – новый процесс, в котором работает код – таким образом, занимая память в вашей системе. Это в конечном итоге создает проблемы масштабируемости из-за отсутствия памяти или сбой вашего сервера из-за превышения наводнения запросов (высокий пользовательский трафик).
Если вы заинтересованы в погружении глубже в том, как работает модель клиент-сервера, рекомендую исследовать здесь Отказ
Клиент и сервер: с Node.js
С Node.js и клиент, и сервер могут инициировать двусторонние соединения, позволяющие свободно взаимодействовать между двумя. Несмотря на то, что Node.js – это одиночная резьба – так же, как JavaScript – и только один процесс происходит за раз (объяснено позже в серии), он «Acts» Multi-Threaded путем обработки запросов через Обратные вызовы и обещания. Таким образом, он способен поддерживать тысячи параллельных соединений в неблокирующемся/асинхронном порядке.
Node.js может действовать как клиент или сервер или оба. Насколько это удивительно!?
Как сервер, пользователь посещает ваш сайт и создает запросы (для файлов HTML, CSS и JavaScript). Node.js принимает эти запросы и отправляет ответ (HTML, CSS и файлы JavaScript) и так далее.
Как клиент, Node.js запрашивает контент с другого сайта. Например, когда клиент хочет выложить что-то в Pinterest или Twitter с вашего сайта.
Чтобы использовать Node.js в качестве клиента, который вам нужно установить Запрос Библиотека (мы поговорим об установке модулей и библиотек для Node.js позже в этой серии).
Важно поделиться, что у Node.js ничего не делает. Это не веб-сервер. Это просто среда выполнения. Если вы хотите веб-сервер, вы делаете пари DILLY DA HOO HA, которые вам нужно написать, что сервер сам молодой человек (женщина … Ребенок … Cat … Вы получите точку). Вы хотите добавить информацию в ваши файлы? Вы должны написать, что сам тоже – Node.js не волшебно не создает этого для вас, но это, конечно, добавляет много отличных функций, с которыми вы можете играть. И бригадный зайчик Пубфикинс собирается научить вас, как! Ага!
Загрузка и установка Node.js
- Откройте терминал вашей командной строки. Если вы не знаете, как найти свою командную строку, вот несколько ссылок, которые могут помочь:
2. Далее убедитесь, что Git работает и работает:
- Вы можете скачать его здесь Отказ
- Смотреть это 4 минуты видео вступление на Git.
- Прочитайте это Статья Если вам все еще нужна помощь.
3. Скачать Node.js на вашу систему.
Чтобы проверить, если вы установили его, введите Узел -в В вашей командной строке вы должны увидеть всплывающую номер версии:
Теперь, когда у вас установлен Node.js, вы получите доступ к Узел Команда в вашем терминале и введите код JavaScript в вашей оболочке!
Вы также можете выполнить код из файла JavaScript:
Давайте создадим файл под названием Bunny.js В вашем редакторе кода (например, возвышенные, кронштейны или атом). Введите Console.log («Я дам бригадир Флуфыкинс 20 морковных битов») Внутри файла или скачать это ZIP, который включает в себя этот файл, а также следующие несколько файлов, которые нам нужны для остальной части урока.
Нажмите Ctrl + C Внутри терминала для Mac дважды, чтобы выйти из процесса узла (я считаю, что это killall Uode для Windows – поправьте меня, если я ошибаюсь здесь).
Теперь найдите, где находится ваш файл. В моем случае я переехал на рабочий стол, а затем папку, где я спас Bunny.js Файл ( Nodestiory ). Вы можете сохранить его на рабочем столе. Теперь в типе оболочки Узел Bunny.js И VOILA! Ваш JavaScript отображается в терминале!:)
Асинхронный и синхронный код
Для того чтобы узел.js обрабатывает тысячи параллельных соединений, необходимо обрабатывать их асинхронно, в неблокирующем способе. Что это значит, что вы можете иметь более одного действия, работающего одновременно, вы видели это во второй анимации.
Блокировка – или синхронно – с другой стороны, будет работать только одно действие во времени. Это не позволит второму действию, чтобы пройти до тех пор, пока он не закончен. Когда мы отправили запрос на файл, нам пришлось дождаться ответа сервера, пока мы не сможем отправить другой запрос. Это занимает очень много времени для бригадир пуффикинов, и он был несчастным.
Если вы создаете код асинхронно, вы можете запустить действия параллельно. Это может занять менее половины столько времени, сколько использует синхронный подход.
Хотя Node.js целенаправленно создан, чтобы быть безблокировавшими, он позволяет разработчикам возможность выбрать, как они хотят, чтобы их код запускал через изменчивые методы в их библиотеках. Например, у Node.js есть ПриложениеFile Метод, который может добавить что-то новое в ваш файл асинхронно или синхронно Отказ Вот еще один пример:
Выполните шаги 1-5, или скачайте это Zip С файлами, которые я уже создал для вас:
- Сначала давайте создадим папку под названием « Nodestory ‘.
- Создайте эти 3 файлы: WaseList.html , Bunnysync.js и Bunnyasync.js Внутри папки.
- Откройте эту папку в своем редакторе кода (Sublime, кронштейны, атом и т. Д.).
- В WaseList.html Скопируйте и вставьте это в:
5. В Bunnysync.js Скопируйте и вставьте это в:
Хорошо, сейчас беги Узел Bunnysync.js В вашем терминале:
Обратите внимание, как наш оповещение напечатано в том же порядке, что и когда мы написали код? Теперь давайте попробуем ту же концепцию, но асинхронно/не блокируя.
В Bunnyasync.js Вставьте это, убедитесь, что это правильное имя файла:
Хорошо, сейчас беги Узел Bunnyasync.js В вашем терминале:
Обратите внимание, как наши оповещения, независимо от порядка, все распечатать перед полным чтением файла? Чтение файла занимает больше времени, затем используя console.log Функция, и поэтому наши оповещения напечатаны первыми. Как только файл будет прочитать, он в конечном итоге печатает.
Создайте свой первый сервер
Это тааааааат особое время года … Чтобы создать свой первый сервер!
Woohoo! Я так взволнован для тебя! Мы будем проходить через несколько примеров, поэтому либо создайте файл под названием server.js и вставить это в:
… или открыть server.js Файл в папке на молнии, которую я предоставил ранее.
Убедитесь, что только http и ФС Переменные – а также «шаг № 1» – незаметно. Просмотрите код и преднамеренные на то, что вы думаете, происходит до продолжения чтения.
Как вы, возможно, заметили, наряду с модулями и сторонние библиотеки, Node.js также наступает обширный список методов. Скорее всего, вы не будете использовать все они – это действительно зависит от того, что вы строите.
Теперь введите Node Server.js В вашем терминале запустите сервер.
Перейдите к своему закалу URL и введите localhost: 3000 Чтобы увидеть ответ, который вы только что отправили:
Хорошо, что здесь происходит?
За любой запрос вам нужен ответ. Во-первых, мы отвечаем клиенту, установив код состояния в заголовке до 200, то есть этот сайт в порядке, готов к работе!
Вы можете проверить заголовки, нажав Опция + команда + j в Chrome на Mac или щелкнуть правой кнопкой мыши и выбирая проверять Затем нажав на Сеть Вкладка (это один из вариантов рядом с Console Console Tab). Если вы ничего не видите в Сеть Просто нажмите Обновить. В противном случае нажмите на страницу, и вы увидите под Заголовки Код состояния и какие запросы клиент сделан (в нашем случае, «Localhost: 3000»). Это запрос на получение, поскольку мы хотим получить файл с сервера.
Вот что бы произошло, если мы установим наши заголовки на 404:
Попробуйте в своем коде и посмотрите, можете ли вы получить код состояния 404.
Заголовки и коды статуса являются интересной темой самостоятельно, но я не буду вдаваться в это сейчас. Я включил ресурсы в конце, если вы хотели бы исследовать это больше.
Далее у нас есть ответ, который мы хотим отправить обратно клиенту, или на самом деле клиент будет просмотреть на их странице, используя Написать метод. Затем мы закрываем связь с конец метод.
Наконец, мы настроили порт, который наш сервер будет прослушивать запросы. Это может быть 3000, 8080 или в основном все, что вы хотите. Просто убедитесь, что вы идете в localhost: 8080 Если, например, вы используете порт 8080.
Это хорошая практика, чтобы сначала установить заголовки, прежде чем установить ответ, особенно потому, что заголовки приходят перед телом в Http Ответы.
Вы только что научились создавать свой первый сервер! Похлопывайте себя в спину, или пойните на лицо – все, что работает для вас!
Давайте продолжим наше приключение, создавая одну из более распространенных форм, которые вы увидите для Http серверы. Это то же самое, что и что мы только что создали, за исключением небольших синтаксических различий, которые фокусируются на События и Эмиттеры событий (объясняется позже в серии).
Прокомментируйте «шаг № 1» и беспокойство «шаг № 1,5».
Это действительно важно: прежде чем делать что-то еще, осознайте, что когда вы запускаете сервер, измените что-нибудь еще раз в файл, изменения не будут видны, пока вы не остановитесь на сервере и не запускаете его снова. Существуют библиотеки, которые автоматически перезапустит сервер для выявления изменений (например, Nodemon ), но не беспокойтесь о установлении этого прямо сейчас.
На данный момент, чтобы остановить сервер вручную войти в свой терминал и нажмите Контроль + C Для Mac (опять же, я верю, что это killall Uode для Windows) Затем либо нажимайте стрелку вверх, чтобы пройти через предыдущие команды, которые вы набрали, или вручную введите Node Server.js Отказ
Вы должны увидеть это:
Обратите внимание, что мы можем отправить какой-то базовый HTML внутри конец Метод, таким образом, отправляя ответ и окончание нашего соединения одновременно. Мы также можем хранить наш сервер в переменной, чтобы сделать его более читаемым, когда мы используем такие события, как Запрос Отказ Важно отметить, что Запрос Событие не то же самое, что Запрос сторонняя библиотека. Это путало меня, когда я впервые узнал Node.js, и я бы не хотел, чтобы вы проходили одно и то же. Мы будем говорить об этом в следующих нескольких уроках серии.
Дополнительные ресурсы
Я умоляю вас, чтобы выйти и сделать некоторые исследования. Сделайте максимум времени, когда у вас есть. Вот несколько мест, которые вы можете начать:
- Что такое Node.js именно?
- Node.js Документы Отказ
- Что такое буферы в узле?
- Список кодов статуса и их значения.
- Повторить после меня: “Google мой друг”
Поздравляю! Вы сделали это через Узнайте Node.js с бригадирными путаницами Часть я! Теперь вы сможете объяснить основы Node.js, а также то, что вы можете построить с ним. Вы получили вступление на то, как работает Async/Nonbling и Sync/Blocking код, и преимущества, которые Node.js предоставляют Async Programming. Лучше всего, вы наконец смогли настроить свой самый первый сервер!
Ух ты. Серьезно, отличная работа. Brigadier Fluffykins высокосимает ваши усилия.
Мы пойдем глубже в эти темы, а также другие, которые мы поцарапали только в следующие несколько уроков. Спасибо за чтение и оставайтесь на улице.
Держите свою мудрость на сегодняшний день, щелкнув ❤ ниже и следуя, как больше Узнайте Node.js с бригадирными путаницами скоро на среднем!
Часть I: Sync, Async, и создавая свой первый сервер!
Часть II: События, Eventemitter & Event Loop
Часть III: Запросить объект, настроить маршруты, подавать файлы