Содержание статьи
Знакомство с Node.js
Node.js — асинхронная управляемая событиями исполнительная платформа JavaScript с мощной, но компактной стандартной библиотекой. Ее сопровождением и поддержкой занимается Node.js Foundation — отраслевой консорциум с открытой моделью управления.
Существует две активно поддерживаемые версии Node: текущая (Current) и пользующаяся долгосрочной поддержкой (LTS, Long Term Support). Если вы захотите больше узнать о том, как осуществляется управление Node, на официальном веб-сайте имеется достаточно подробная документация (https://nodejs.org).
С момента появления Node.js в 2009 году язык JavaScript прошел долгий путь от еле сносного браузерного языка до одного из важнейших языков во всех областях разработки программного обеспечения. Отчасти это изменение связано с появлением спецификации ECMAScript 2015, устранившей ряд важных недостатков в предыдущих версиях языка. Node использует JavaScript-ядро Google V8, основанное на шестой версии стандарта ECMAScript (иногда она называется ES6 и обозначается сокращением ES2015). Также на ситуацию повлияли такие инновационные технологии, как Node, React и Electron; они позволяют применять JavaScript буквально повсеместно: от сервера до браузера и в платформенных мобильных приложениях.
Самые крупные компании постепенно принимают JavaScript, а компания Microsoft даже внесла свой вклад в успех Node.
В этой главе мы расскажем о технологии Node, о ее неблокирующей модели, управляемой событиями, а также о некоторых факторах, благодаря которым язык JavaScript стал отличным языком программирования общего назначения. Для начала давайте рассмотрим типичное веб-приложение Node.
Типичное веб-приложение Node
Одна из сильных сторон Node и JavaScript вообще — однопоточная модель программирования.
Программные потоки (threads) являются стандартным источником ошибок, и хотя некоторые из недавно появившихся языков программирования, включая Go и Rust, пытаются предоставить безопасные инструменты параллельного программирования, Node работает с моделью, используемой в браузере. Браузерный код представляет собой последовательность команд, которые выполняются одна за одной; код не выполняется параллельно. Для пользовательских интерфейсов такая модель не имеет смысла: пользователь не хочет дожидаться завершения медленных операций (например, обращений к данным по сети или к файлам). Для решения этой проблемы в браузерах используются события: когда пользователь щелкает на кнопке, инициируется событие, и выполняется функция, которая была определена ранее, но еще не выполнялась. Тем самым предотвращаются некоторые проблемы, встречающиеся в многопоточном программировании, включая взаимные блокировки (deadlocks) ресурсов и состояния гонки (race conditions).
Три основных типа программ Node
Программы Node делятся на три основных типа:
- веб-приложения,
- средства командной строки и
- демоны и настольные приложения.
К категории веб-приложений относятся простые приложения, предоставляющие одностраничные приложения, микрослужбы REST и веб-приложения полного стека. Возможно, вы уже использовали средства командной строки, написанные с использованием Node, например npm, Gulp и webpack.
Демоны (daemons) представляют собой фоновые службы. Хорошим примером служит менеджер процессов PM2 (www.npmjs.com/package/pm2).
Настольные приложения обычно строятся с применением фреймворка Electron (http://electron.atom.io/), использующего Node во внутренней реализации для настольных веб-приложений. Примеры такого рода — текстовые редакторы Atom (https://atom .io/) и Visual Studio Code (https://code.visualstudio.com/).
Заключение по вводной части
- Node — неблокирующая, управляемая событиями платформа для построения приложений JavaScript.
- В качестве исполнительной среды JavaScript используется ядро V8.
- Библиотека libuv обеспечивает быстрый кросс-платформенный неблокирующий ввод/вывод.
- Node содержит небольшую стандартную библиотеку — базовые модули, которые добавляют в JavaScript поддержку сетевого и дискового ввода/вывода.
- В поставку Node входит отладчик и менеджер зависимостей (npm).
- Node используется для построения веб-приложений, средств командной строки и даже настольных приложений.
Учебник по Node.js
Node.js — это очень мощная платформа на основе JavaScript, созданная на основе движка Google Chrome JavaScript V8. Он используется для разработки веб-приложений с интенсивным вводом-выводом, таких как сайты потокового видео, одностраничные приложения и другие веб-приложения. Node.js является открытым исходным кодом, полностью бесплатен и используется тысячами разработчиков по всему миру.
Аудитория
Это руководство предназначено для программистов, которые хотят изучить основы Node.js и его архитектурные концепции. Этот учебник даст вам достаточное понимание всех необходимых компонентов Node.js с подходящими примерами.
Предпосылки
Прежде чем приступить к изучению этого урока, вы должны иметь общее представление о JavaScript. Поскольку мы собираемся разрабатывать веб-приложения с использованием Node.js, было бы хорошо, если бы вы имели некоторое представление о других веб-технологиях, таких как HTML, CSS, AJAX и т. Д.
Что такое Node.js?
Node.js — это серверная платформа, построенная на движке Google Chrome JavaScript (V8 Engine). Node.js был разработан Райаном Далом в 2009 году, и его последняя версия v0.10.36. Определение Node.js, как указано в его официальной документации, следующее:
Node.js — это платформа, основанная на среде выполнения Chrome JavaScript, для простого создания быстрых и масштабируемых сетевых приложений. Node.js использует управляемую событиями неблокирующую модель ввода / вывода, которая делает ее легкой и эффективной, идеально подходящей для приложений с интенсивным использованием данных в реальном времени, работающих на распределенных устройствах.
Node.js — это кроссплатформенная среда выполнения с открытым исходным кодом для разработки серверных и сетевых приложений. Приложения Node.js написаны на JavaScript и могут запускаться в среде выполнения Node.js в OS X, Microsoft Windows и Linux.
Node.js также предоставляет богатую библиотеку различных модулей JavaScript, которая значительно упрощает разработку веб-приложений с использованием Node.js.
Node.js = Runtime Environment + JavaScript Library
Особенности Node.js
Ниже приведены некоторые важные функции, которые делают Node.js лучшим выбором для архитекторов программного обеспечения.
-
Асинхронный и управляемый событиями — все API библиотеки Node.js являются асинхронными, то есть неблокирующими. По сути, это означает, что сервер на базе Node.js никогда не ждет, пока API вернет данные. Сервер переходит к следующему API после его вызова, а механизм уведомления о событиях Node.js помогает серверу получить ответ от предыдущего вызова API.
-
Очень быстрая — библиотека Node.js, созданная на основе движка Google Chrome V8 JavaScript, очень быстро выполняет код.
-
Однопоточный, но очень масштабируемый — Node.js использует однопотоковую модель с зацикливанием событий. Механизм событий помогает серверу реагировать неблокирующим образом и обеспечивает высокую масштабируемость сервера по сравнению с традиционными серверами, которые создают ограниченные потоки для обработки запросов. Node.js использует однопотоковую программу, и та же самая программа может обслуживать гораздо большее количество запросов, чем традиционные серверы, такие как Apache HTTP Server.
-
Без буферизации — приложения Node.js никогда не буферизуют данные. Эти приложения просто выводят данные кусками.
-
Лицензия — Node.js выпущен под лицензией MIT .
Кто использует Node.js?
Ниже приведена ссылка на github wiki, содержащая исчерпывающий список проектов, приложений и компаний, использующих Node.js. В этот список входят eBay, General Electric, GoDaddy, Microsoft, PayPal, Uber, Wikipins, Yahoo !, и Yammer.
Концепции
Следующая диаграмма изображает некоторые важные части Node.js, которые мы подробно обсудим в последующих главах.
Где использовать Node.js?
Ниже приведены области, где Node.js зарекомендовал себя как идеальный технологический партнер.
- Приложения, связанные с вводом / выводом
- Приложения для потоковой передачи данных
- Интенсивное использование данных в реальном времени (DIRT)
- Приложения на основе JSON API
- Одностраничные приложения
Где не использовать Node.js?
Не рекомендуется использовать Node.js для приложений, интенсивно использующих процессор.
Node.js — Настройка среды
Попробуйте вариант онлайн
Вам действительно не нужно настраивать собственную среду, чтобы начать изучать Node.js.
Настройка локальной среды
Если вы все еще хотите настроить свою среду для Node.js, вам потребуются следующие два программного обеспечения, доступных на вашем компьютере: (а) текстовый редактор и (б) бинарные устанавливаемые файлы Node.js.
Текстовый редактор
Это будет использоваться для ввода вашей программы. Примерами немногих редакторов являются Блокнот Windows, команда редактирования ОС, Brief, Epsilon, EMACS и vim или vi.
Имя и версия текстового редактора могут различаться в разных операционных системах. Например, Блокнот будет использоваться в Windows, а vim или vi могут использоваться в Windows, а также в Linux или UNIX.
Файлы, которые вы создаете в редакторе, называются исходными файлами и содержат исходный код программы. Исходные файлы для программ Node.js обычно называются с расширением « .js ».
Перед началом программирования убедитесь, что у вас есть один текстовый редактор, и у вас достаточно опыта, чтобы написать компьютерную программу, сохранить ее в файле и, наконец, выполнить.
Среда выполнения Node.js
Исходный код, написанный в исходном файле, является просто javascript. Интерпретатор Node.js будет использоваться для интерпретации и выполнения вашего кода JavaScript.
Дистрибутив Node.js поставляется в виде двоичного кода, устанавливаемого для операционных систем SunOS, Linux, Mac OS X и Windows с 32-битным (386) и 64-битным (amd64) процессорами x86.
В следующем разделе рассказывается, как установить бинарный дистрибутив Node.js на различные ОС.
Скачать архив Node.js
Загрузите последнюю версию установочного файла архива Node.js с сайта Node.js Downloads . На момент написания данного руководства ниже приведены версии, доступные для разных ОС.
Операционные системы | Название архива |
---|---|
Windows | Узел-v6.3.1-x64.msi |
Linux | Узел-v6.3.1-Linux-x86.tar.gz |
макинтош | Узел-v6.3.1-Darwin-x86.tar.gz |
SunOS | Узел-v6.3.1-SunOS-x86.tar.gz |
Установка в UNIX / Linux / Mac OS X и SunOS
В зависимости от архитектуры вашей ОС загрузите и распакуйте архивное имя узла v6.3.1 с именем .tar.gz в / tmp, а затем, наконец, переместите извлеченные файлы в каталог / usr / local / nodejs. Например:
$ cd /tmp $ wget http://nodejs.org/dist/v6.3.1/node-v6.3.1-linux-x64.tar.gz $ tar xvfz node-v6.3.1-linux-x64.tar.gz $ mkdir -p /usr/local/nodejs $ mv node-v6.3.1-linux-x64/* /usr/local/nodejs
Add /usr/local/nodejs/bin to the PATH environment variable.
OS | Output |
---|---|
Linux | export PATH=$PATH:/usr/local/nodejs/bin |
Mac | export PATH=$PATH:/usr/local/nodejs/bin |
FreeBSD | export PATH=$PATH:/usr/local/nodejs/bin |
Установка на Windows
Используйте файл MSI и следуйте инструкциям для установки Node.js. По умолчанию программа установки использует дистрибутив Node.js в C:\Program Files\nodejs. Установщик должен установить каталог C:\Program Files\nodejs\bin в переменной окружения PATH окна. Перезапустите все открытые команды, чтобы изменения вступили в силу.
Проверить установку: выполнение файла
Создайте на своем компьютере файл js с именем main.js (Windows или Linux), имеющий следующий код.
Live Demo /* Hello, World! program in node.js */ console.log("Hello, World!")
Теперь выполните файл main.js, используя интерпретатор Node.js, чтобы увидеть результат —
$ node main.js
Если с вашей установкой все в порядке, это должно привести к следующему результату
Hello, World!
Node.js — первое приложение
Перед созданием актуального «Hello, World!» приложение, использующее Node.js, давайте посмотрим компоненты приложения Node.js. Приложение Node.js состоит из следующих трех важных компонентов:
-
Импорт обязательных модулей. Мы используем директиву require для загрузки модулей Node.js.
-
Создать сервер — сервер, который будет прослушивать запросы клиентов, аналогичные HTTP-серверу Apache.
-
Прочитать запрос и вернуть ответ . Сервер, созданный на более раннем этапе, считывает HTTP-запрос, сделанный клиентом, который может быть браузером или консолью, и возвращает ответ.
Создание приложения Node.js
Шаг 1 — Импортировать необходимый модуль
Мы используем директиву require для загрузки модуля http и сохранения возвращенного экземпляра HTTP в переменную http следующим образом:
var http = require("http");
Шаг 2 — Создать сервер
Мы используем созданный экземпляр http и вызываем метод http.createServer () для создания экземпляра сервера, а затем привязываем его к порту 8081, используя метод listen, связанный с экземпляром сервера. Передайте ему функцию с параметрами request и response. Напишите пример реализации, чтобы всегда возвращать «Hello World».
http.createServer(function (request, response) { // Send the HTTP header // HTTP Status: 200 : OK // Content Type: text/plain response.writeHead(200, {'Content-Type': 'text/plain'}); // Send the response body as "Hello World" response.end('Hello World\n'); }).listen(8081); // Console will print the message console.log('Server running at http://127.0.0.1:8081/');
Приведенного выше кода достаточно для создания HTTP-сервера, который прослушивает, то есть ожидает запрос через порт 8081 на локальном компьютере.
Шаг 3 — Тестирование запроса и ответа
Давайте соберем шаг 1 и 2 вместе в файле с именем main.js и начать наш HTTP — сервер , как показано ниже
var http = require("http"); http.createServer(function (request, response) { // Send the HTTP header // HTTP Status: 200 : OK // Content Type: text/plain response.writeHead(200, {'Content-Type': 'text/plain'}); // Send the response body as "Hello World" response.end('Hello World\n'); }).listen(8081); // Console will print the message console.log('Server running at http://127.0.0.1:8081/');
Теперь выполните main.js, чтобы запустить сервер следующим образом:
$ node main.js
Проверьте вывод. Сервер запущен.
Server running at http://127.0.0.1:8081/
Отправить запрос на сервер Node.js
Откройте http://127.0.0.1:8081/ в любом браузере и просмотрите следующий результат.
Поздравляем, у вас запущен и работает ваш первый HTTP-сервер, который отвечает на все HTTP-запросы на порту 8081.
Node.js — REPL Terminal
REPL означает Read Eval Print Loop и представляет компьютерную среду, такую как консоль Windows или оболочка Unix / Linux, где вводится команда, и система отвечает выводом в интерактивном режиме. Node.js или Node поставляется в комплекте со средой REPL. Он выполняет следующие задачи —
-
Read (Читать) — читает вводимые пользователем данные, анализирует их в структуру данных JavaScript и сохраняет в памяти.
-
Eval — принимает и оценивает структуру данных.
-
Печать (Print) — печать результата.
-
Цикл (Loop) — Повторяет вышеуказанную команду, пока пользователь не нажмет ctrl-c дважды.
Функция REPL в Node очень полезна для экспериментов с кодами Node.js и для отладки JavaScript-кодов.
Терминал онлайн REPL
Чтобы упростить ваше обучение, мы создали простую в использовании среду REPL Node.js, в которой вы можете попрактиковаться в синтаксисе Node.js — Запустите Node.js REPL Terminal
Начиная REPL
REPL можно запустить, просто запустив узел в оболочке / консоли без аргументов, как указано ниже.
Leave a Reply