Downloading and installing Node.js and npm
To publish and install packages to and from the public npm registry or a private npm registry, you must install Node.js and the npm command line interface using either a Node version manager or a Node installer. We strongly recommend using a Node version manager like nvm to install Node.js and npm. We do not recommend using a Node installer, since the Node installation process installs npm in a directory with local permissions and can cause permissions errors when you run npm packages globally.
Note: to download the latest version of npm, on the command line, run the following command:
Checking your version of npm and Node.js
To see if you already have Node.js and npm installed and check the installed version, run the following commands:
Using a Node version manager to install Node.js and npm
Node version managers allow you to install and switch between multiple versions of Node.js and npm on your system so you can test your applications on multiple versions of npm to ensure they work for users on different versions.
OSX or Linux Node version managers
Windows Node version managers
Using a Node installer to install Node.js and npm
If you are unable to use a Node version manager, you can use a Node installer to install both Node.js and npm on your system.
If you use Linux, we recommend that you use a NodeSource installer.
OS X or Windows Node installers
If you're using OS X or Windows, use one of the installers from the Node.js download page. Be sure to install the version labeled LTS. Other versions have not yet been tested with npm.
Linux or other operating systems Node installers
If you're using Linux or another operating system, use one of the following installers:
-
(recommended)
- One of the installers on the Node.js download page
Or see this page to install npm for Linux in the way many Linux developers prefer.
Установка Node.js через пакетный менеджер
Заметка: Пакеты, описанные на этой странице, разрабатываются и поддерживаются соответствующими упаковщиками, а не командой Node.js. Пожалуйста, сообщайте о любых проблемах, с которыми вы сталкиваетесь с конкретным пакетом. Если выяснится, что ваша проблема ― ошибка в самом Node.js, проблема будет передана выше.
Android
Поддержка Android все еще является экспериментальной в Node.js, поэтому предварительно скомпилированные двоичные файлы еще не предоставлены в открытом доступе.
Однако есть и сторонние решения. Например, сообщество Termux предоставляет эмулятор терминала и среду Linux для Android, а также собственный менеджер пакетов и обширную коллекцию многих предварительно скомпилированных приложений. Эта команда в приложении Termux установит последнюю доступную версию Node.js:
В настоящее время двоичные файлы Termux Node.js связаны с system-icu (в зависимости от пакета libicu ).
Arch Linux
Пакеты Node.js и npm доступны в репозитории сообщества.
Дистрибутивы Linux на основе Debian и Ubuntu, пакеты Enterprise Linux/Fedora и Snap
FreeBSD
Самый последний выпуск Node.js доступен через порт www/node.
Установите бинарный пакет через pkg:
Или скомпилируйте свой используя порты:
Gentoo
Node.js доступен в дереве портежей.
NetBSD
Node.js доступен в дереве pkgsrc:
Или установите бинарный пакет (если он доступен для вашей платформы) с помощью pkgin:
Node Version Manager ― это bash-скрипт, используемый для управления несколькими выпущенными версиями Node.js. Он позволяет выполнять такие операции, как установка, удаление, переключение версий и т.д.. Чтобы установить nvm, используйте этот скрипт установки.
В системах Unix/OS X Node.js, созданный из исходного кода, можно установить с помощью nvm путем установки в папку по умолчанию nvm:
После этого вы можете использовать nvm для переключения между выпущенными версиями и версиями построенных из исходного кода. Например, если версия Node.js v8.0.0-pre:
После выхода официального релиза вы захотите удалить встроенную версию:
Windows
The nvs version manager is cross-platform and can be used on Windows, macOS, and Unix-like systems
To install nvs on Windows go to the release page here and download the MSI installer file of the latest release.
You can also use chocolatey to install it:
macOS,UnixLike
You can find the documentation regarding the installation steps of nvs in macOS/Unix-like systems here
Usage
After this you can use nvs to switch between different versions of node.
To add the latest version of node:
Or to add the latest LTS version of node:
Then run the nvs use command to add a version of node to your PATH for the current shell:
To add it to PATH permanently, use nvs link :
OpenBSD
Node.js доступен через систему портов.
Использование pkg_add в OpenBSD:
openSUSE и SLE
Node.js доступен в основных репозиториях в следующих пакетах:
- openSUSE Leap 42.2: nodejs4
- openSUSE Leap 42.3: nodejs4 , nodejs6
- openSUSE Tumbleweed: nodejs4 , nodejs6 , nodejs8
- SUSE Linux Enterprise Server (SLES) 12: nodejs4 , nodejs6 ("Модуль Web и Scripting" должен быть добавлен перед установкой.)
Например, чтобы установить Node.js 4.x в openSUSE Leap 42.2, запустите следующее от имени пользователя root:
macOS
Просто загрузите установщик macOS прямо с веб-сайта nodejs.org.
Если вы хотите скачать пакет с bash:
Альтернативы
Использование Homebrew:
Использование MacPorts:
Использование pkgsrc:
Установка бинарных файлов:
Или сборка с помощью pkgsrc:
SmartOS и illumos
Образы SmartOS поставляются с предустановленным pkgsrc. В других дистрибутивах Illumos сначала установите pkgsrc, затем вы сможете установить бинарный пакет как обычно:
Node Hero — Руководство по началу работы с Node.js
Это первый пост из предстоящей серии уроков по Node.js под названием “Node Hero” — в этих главах вы можете узнать как приступить к работе с Node.js и создавать программные продукты, используя эту платформу.
Мы собираемся начать с основ — никаких предварительных знаний по Node.js не требуется. Цель этой серии в том, чтобы вы познакомились с Node.js и поняли принципы написания приложения, поэтому не стесняйтесь задавать нам вопросы, если что-то непонятно!
Предстоящие главы из серии уроков Node Hero:
- Руководство по началу работы с Node.js [вы сейчас читаете]
- Использование NPM
- Понимание асинхронного программирования
- Ваш первый Node.js сервер
- Руководство по базам данных в Node.js
- Руководство по Node.js модулю request
- Структура Node.js проекта
- Node.js аутентификация, при помощи Passport.js
- Руководство по модульному тестированию в Node.js
- Отладка Node.js приложений
- Руководство по безопасности в Node.js
- Развертывание Node.js приложений
- Мониторинг Node.js приложений
В этом самом первом уроке, вы узнаете, что такое Node.js, как установить его на свой компьютер и как начать с ним работать — так что в следующих уроках, мы сможем приступить к реальной разработке. Давайте начнем!
Node.js в двух словах
Node.js — это среда выполнения JavaScript, основанная на V8 JavaScript движке браузера Chrome. Node.js использует событийно-ориентированную, неблокирующую модель ввода/вывода, что делает его легким и эффективным.
Другими словами: Node.js предоставляет вам возможность писать сервера на JavaScript с невероятной производительностью. В официальной документации говорится: Node.js является средой выполнения, которая использует тот же V8 JavaScript движок, который вы можете увидеть в браузере Google Chrome. Но этого было бы недостаточно для успеха Node.js — Node.js использует libuv, мультиплатформенную библиотеку, фокусирующуюся на асинхронном вводе-выводе.
С точки зрения разработчика, Node.js однопоточный, но под капотом libuv обрабатывает многопоточность, события файловой системы, реализует цикл обработки событий, функции объединения потоков в пул и так далее. В большинстве случаев вы не будете взаимодействовать с ней напрямую.
Установка Node.js для начала работы
Чтобы получить последний бинарник Node.js, вы можете зайти на официальный сайт Node.js: https://nodejs.org/en/download/.
С таким подходом довольно просто начать — но если в будущем вы захотите добавить больше версий Node.js, то лучше начать использовать nvm, Node Version Manager.
После его установки вы сможете использовать очень простой CLI API, через который можно делать следующие вещи:
Установка версий Node.js
Далее, если вы хотите ознакомиться с экспериментальной версией:
Чтобы проверить, что Node.js установлен и запущен, выполните следующее:
Если все в порядке, то результатом выполнения будет номер версии активного на данный момент бинарника Node.js.
Использование версий Node.js
Если вы работаете над проектом, поддерживающим Node.js v4, можете начать её использовать при помощи следующей команды:
Потом вы можете переключиться на Node.js v5 при помощи той же команды:
Хорошо, теперь мы знаем, как устанавливать и переключаться между версиями Node.js — но какой смысл?
С тех пор как был сформирован Node.js Foundation, у Node.js появился план релизов. Он очень похож на другие проекты Linux Foundation. Это означает, что есть два релиза: стабильный и экспериментальный. В Node.js стабильными версиями с долгосрочной поддержкой (LTS), являются те, которые начинаются с четных чисел (4, 6, 8 …), а экспериментальные версии с нечетных чисел (5, 7 …). Мы рекомендуем использовать LTS версию на бою и пробовать новые вещи с экспериментальной.
Если вы на Windows, то есть альтернатива для nvm: nvm-windows.
Node.js руководство: Hello World
Для начала работы с Node.js, давайте попробуем его в терминале! Запустите Node.js, просто набрав node:
Хорошо, давайте попробуем что-нибудь напечатать:
После того как вы нажмете Enter, вы получите что-то вроде этого:
Не стесняйтесь экспериментировать с Node.js используя этот интерфейс — я обычно тестирую небольшие части кода здесь, если не хочу помещать их в файл.
Пришло время для создания нашего Hello Node.js приложения!
Давайте начнем с создания файла под названием index.js. Откройте вашу IDE (Atom, Sublime, Code — что угодно), создайте новый файл и сохраните его под именем index.js. Если вы закончили, скопируйте следующий код в этот файл:
Чтобы запустить этот файл, нужно снова открыть терминал и перейти в директорию с index.js.
После того как вы успешно переместились в нужное место, запустите файл с помощью команды node index.js. Можно увидеть, что на выходе результат будет таким же как и раньше — печать строки непосредственно в терминал.
Модульность приложения
Теперь у вас есть файл index.js, настало время перейти на следующий уровень! Давайте создадим что-то более сложное, разбив наш исходный код на несколько JavaScript файлов, с целью улучшения читаемости и поддерживаемости. Для начала, вернитесь к IDE (Atom, Sublime, Code — что угодно) и создайте следующую файловую структуру (с пустыми файлами), но пока пропустите package.json, мы сгенерируем его автоматически на следующем шаге:
Каждый Node.js проект начинается с создания файла package.json — можете воспринимать его как JSON представление приложения и его зависимостей. Он содержит имя вашего приложения, автора (вас) и все зависимости, которые необходимы для запуска приложения. Мы разберем раздел зависимостей позже, в главе “Использование NPM”.
Вы можете создать файл package.json в интерактивном режиме при помощи команды npm init в терминале. После нажатия Enter, вам предложат ввести некоторые данные, такие как имя приложения, версия, описание и так далее. Не стоит волноваться, просто жмите Enter, пока не увидите фрагмент JSON кода и вопрос is it ok?. Нажмите Enter в последний раз и вуаля, package.json был автоматически сгенерирован и помещен в папку приложения. Если открыть этот файл в IDE, он будет похож на фрагмент кода ниже:
Это хорошая практика — добавлять скрипт запуска (start) в package.json — как только вы сделаете так, как показано в примере выше, вы также сможете запускать приложение при помощи команды npm start. Это может пригодиться, если вы захотите развернуть свое приложение на PaaS сервисе — они могут распознать скрипт и запустить ваше приложение, используя его.
Теперь давайте вернемся к изначально созданному файлу под названием index.js. Я рекомендую сохранять этот файл очень тонким — только подключение самого приложения (файл index.js из поддиректории /app, созданный ранее). Чтобы сделать это, скопируйте следующий скрипт в файл index.js и нажмите сохранить:
Теперь пора создать настоящее приложение. Откройте файл index.js в директории /app, чтобы сделать очень простой пример: сложение массива чисел. В данном случае index.js будет содержать только цифры, которые мы хотим сложить, а логика, которая делает вычисления, должна быть помещена в отдельный модуль.
Вставьте следующий скрипт в файл index.js из директории /app.
Теперь добавьте текущую бизнес-логику в файл calc.js, который можно найти в той же папке.
Чтобы проверить, все ли прошло успешно, сохраните эти файлы, откройте терминал и введите npm start или node index.js. Если вы сделали все правильно, то получите ответ: 19. Если что-то пошло не так, внимательно просмотрите логи в консоли и основываясь на них, найдите проблему.
Далее
В следующей главе, под названием “Использование NPM”, мы рассмотрим как использовать NPM — менеджер пакетов для JavaScript.
Руководство по Node.js, часть 1: общие сведения и начало работы
Мы начинаем публикацию серии материалов, которые представляют собой поэтапный перевод руководства по Node.js для начинающих. А именно, в данном случае «начинающий» — это тот, кто обладает некоторыми познаниями в области браузерного JavaScript. Он слышал о том, что существует серверная платформа, программы для которой тоже пишут на JS, и хотел бы эту платформу освоить. Возможно, вы найдёте здесь что-то полезное для себя и в том случае, если уже знакомы с Node.js.
Кстати, в прошлом году у нас был похожий по масштабам проект, посвящённый bash-скриптам. Тогда мы, после публикации всех запланированных материалов, собрали их в виде PDF-файла. Так же планируется поступить и в этот раз.

Сегодня мы обсудим особенности Node.js, начнём знакомство с экосистемой этой платформы и напишем серверный «Hello World».
Обзор Node.js
Node.js — это опенсорсная кроссплатформенная среда выполнения для JavaScript, которая работает на серверах. С момента выпуска этой платформы в 2009 году она стала чрезвычайно популярной и в наши дни играет весьма важную роль в области веб-разработки. Если считать показателем популярности число звёзд, которые собрал некий проект на GitHub, то Node.js, у которого более 50000 звёзд, это очень и очень популярный проект.
Платформа Node.js построена на базе JavaScript движка V8 от Google, который используется в браузере Google Chrome. Данная платформа, в основном, используется для создания веб-серверов, однако сфера её применения этим не ограничивается.
Рассмотрим основные особенности Node.js.
▍Скорость
Одной из основных привлекательных особенностей Node.js является скорость. JavaScript-код, выполняемый в среде Node.js, может быть в два раза быстрее, чем код, написанный на компилируемых языках, вроде C или Java, и на порядки быстрее интерпретируемых языков наподобие Python или Ruby. Причиной подобного является неблокирующая архитектура платформы, а конкретные результаты зависят от используемых тестов производительности, но, в целом, Node.js — это очень быстрая платформа.
▍Простота
Платформа Node.js проста в освоении и использовании. На самом деле, она прямо-таки очень проста, особенно это заметно в сравнении с некоторыми другими серверными платформами.
▍JavaScript
В среде Node.js выполняется код, написанный на JavaScript. Это означает, что миллионы фронтенд-разработчиков, которые уже пользуются JavaScript в браузере, могут писать и серверный, и клиентский код на одном и том же языке программирования без необходимости изучать совершенно новый инструмент для перехода к серверной разработке.
В браузере и на сервере используются одинаковые концепции языка. Кроме того, в Node.js можно оперативно переходить на использование новых стандартов ECMAScript по мере их реализации на платформе. Для этого не нужно ждать до тех пор, пока пользователи обновят браузеры, так как Node.js — это серверная среда, которую полностью контролирует разработчик. В результате новые возможности языка оказываются доступными при установке поддерживающей их версии Node.js.
▍Движок V8
В основе Node.js, помимо других решений, лежит опенсорсный JavaScript-движок V8 от Google, применяемый в браузере Google Chrome и в других браузерах. Это означает, что Node.js пользуется наработками тысяч инженеров, которые сделали среду выполнения JavaScript Chrome невероятно быстрой и продолжают работать в направлении совершенствования V8.
▍Асинхронность
В традиционных языках программирования (C, Java, Python, PHP) все инструкции, по умолчанию, являются блокирующими, если только разработчик явным образом не позаботится об асинхронном выполнении кода. В результате если, например, в такой среде, произвести сетевой запрос для загрузки некоего JSON-кода, выполнение потока, из которого сделан запрос, будет приостановлено до тех пор, пока не завершится получение и обработка ответа.
JavaScript значительно упрощает написание асинхронного и неблокирующего кода с использованием единственного потока, функций обратного вызова (коллбэков) и подхода к разработке, основанной на событиях. Каждый раз, когда нам нужно выполнить тяжёлую операцию, мы передаём соответствующему механизму коллбэк, который будет вызван сразу после завершения этой операции. В результате, для того чтобы программа продолжила работу, ждать результатов выполнения подобных операций не нужно.
Подобный механизм возник в браузерах. Мы не можем позволить себе ждать, скажем, окончания выполнения AJAX-запроса, не имея при этом возможности реагировать на действия пользователя, например, на щелчки по кнопкам. Для того чтобы пользователям было удобно работать с веб-страницами, всё, и загрузка данных из сети, и обработка нажатия на кнопки, должно происходить одновременно, в режиме реального времени.
Если вы создавали когда-нибудь обработчик события нажатия на кнопку, то вы уже пользовались методиками асинхронного программирования.
Асинхронные механизмы позволяют единственному Node.js-серверу одновременно обрабатывать тысячи подключений, не нагружая при этом программиста задачами по управлению потоками и по организации параллельного выполнения кода. Подобные вещи часто являются источниками ошибок.
Node.js предоставляет разработчику неблокирующие базовые механизмы ввода вывода, и, в целом, библиотеки, использующиеся в среде Node.js, написаны с использованием неблокирующих парадигм. Это делает блокирующее поведение кода скорее исключением, чем нормой.
Когда Node.js нужно выполнить операцию ввода-вывода, вроде загрузки данных из сети, доступа к базе данных или к файловой системе, вместо того, чтобы заблокировать ожиданием результатов такой операции главный поток, Node.js инициирует её выполнение и продолжает заниматься другими делами до тех пор, пока результаты выполнения этой операции не будут получены.
▍Библиотеки
Благодаря простоте и удобству работы с менеджером пакетов для Node.js, который называется npm, экосистема Node.js прямо-таки процветает. Сейчас в реестре npm имеется более полумиллиона опенсорсных пакетов, которые может свободно использовать любой Node.js-разработчик.
Рассмотрев некоторые основные особенности платформы Node.js, опробуем её в действии. Начнём с установки.
Установка Node.js
Node.js можно устанавливать различными способами, которые мы сейчас рассмотрим.
Так, официальные установочные пакеты для всех основных платформ можно найти здесь.
Существует ещё один весьма удобный способ установки Node.js, который заключается в использовании менеджера пакетов, имеющегося в операционной системе. Например, менеджер пакетов macOS, который является фактическим стандартом в этой области, называется Homebrew. Если он в вашей системе есть, вы можете установить Node.js, выполнив эту команду в командной строке:
Список менеджеров пакетов для других операционных систем, в том числе — для Linux и Windows, можно найти здесь.
Популярным менеджером версий Node.js является nvm. Это средство позволяет удобно переключаться между различными версиями Node.js, с его помощью можно, например, установить и попробовать новую версию Node.js, после чего, при необходимости, вернуться на старую. Nvm пригодится и в ситуации, когда нужно испытать какой-нибудь код на старой версии Node.js.
Я посоветовал бы начинающим пользоваться официальными установщиками Node.js. Пользователям macOS я порекомендовал бы устанавливать Node.js с помощью Homebrew. Теперь, после того, как вы установили Node.js, пришло время написать «Hello World».
Первое Node.js-приложение
Самым распространённым примером первого приложения для Node.js можно назвать простой веб-сервер. Вот его код:
Для того чтобы запустить этот код, сохраните его в файле server.js и выполните в терминале такую команду:
Для проверки сервера откройте какой-нибудь браузер и введите в адресной строке http://127.0.0.1:3000 , то есть — тот адрес сервера, который будет выведен в консоли после его успешного запуска. Если всё работает как надо — на странице будет выведено «Hello World».
Разберём этот пример.
Для начала, обратите внимание на то, что код содержит команду подключения модуля http.
Платформа Node.js является обладателем замечательного стандартного набора модулей, в который входят отлично проработанные механизмы для работы с сетью.
Метод createServer() объекта http создаёт новый HTTP-сервер и возвращает его.
Сервер настроен на прослушивание определённого порта на заданном хосте. Когда сервер будет готов, вызывается соответствующий коллбэк, сообщающий нам о том, что сервер работает.
Когда сервер получает запрос, вызывается событие request , предоставляющее два объекта. Первый — это запрос ( req , объект http.IncomingMessage), второй — ответ ( res , объект http.ServerResponse). Они представляют собой важнейшие механизмы обработки HTTP-запросов.
Первый предоставляет в наше распоряжение сведения о запросе. В нашем простом примере этими данными мы не пользуемся, но, при необходимости, с помощью объекта req можно получить доступ к заголовкам запроса и к переданным в нём данным.
Второй нужен для формирования и отправки ответа на запрос.
В данном случае ответ на запрос мы формируем следующим образом. Сначала устанавливаем свойство statusCode в значение 200 , что указывает на успешное выполнение операции:
Далее, мы устанавливаем заголовок Content-Type :
После этого мы завершаем подготовку ответа, добавляя его содержимое в качестве аргумента метода end() :
Мы уже говорили о том, что вокруг платформы Node.js сформировалась мощная экосистема. Обсудим теперь некоторые популярные фреймворки и вспомогательные инструменты для Node.js.
Фреймворки и вспомогательные инструменты для Node.js
Node.js — это низкоуровневая платформа. Для того чтобы упростить разработку для неё и облегчить жизнь программистам, было создано огромное количество библиотек. Некоторые из них со временем стали весьма популярными. Вот небольшой список библиотек, которые я считаю отлично сделанными и достойными изучения:
-
. Эта библиотека предоставляет разработчику предельно простой, но мощный инструмент для создания веб-серверов. Ключом к успеху Express стал минималистический подход и ориентация на базовые серверные механизмы без попытки навязать некое видение «единственно правильной» серверной архитектуры. . Это — мощный фулстек-фреймворк, реализующий изоморфный подход к разработке приложений на JavaScript и к использованию кода и на клиенте, и на сервере. Когда-то Meteor представлял собой самостоятельный инструмент, включающий в себя всё, что только может понадобиться разработчику. Теперь он, кроме того, интегрирован с фронтенд-библиотеками, такими, как React, Vue и Angular. Meteor, помимо разработки обычных веб-приложений, можно использовать и в мобильной разработке. . Этот веб-фреймворк создан той же командой, которая занимается работой над Express. При его разработке, в основу которой легли годы опыта работы над Express, внимание уделялось простоте решения и его компактности. Этот проект появился как решение задачи внесения в Express серьёзных изменений, несовместимых с другими механизмами фреймворка, которые могли бы расколоть сообщество. . Этот фреймворк предназначен для организации серверного рендеринга React-приложений. . Это — весьма компактная библиотека для создания асинхронных HTTP-микросервисов. . Это библиотека для разработки сетевых приложений реального времени.
Краткая история Node.js
В этом году Node.js исполнилось уже 9 лет. Это, конечно, не так уж и много, если сравнить этот возраст с возрастом JavaScript, которому уже 23 года, или с 25-летним возрастом веба, существующем в таком виде, в котором мы его знаем, если считать от появления браузера Mosaic.
9 лет — это маленький срок для технологии, но сейчас возникает такое ощущение, что платформа Node.js существовала всегда.
Я начал работу с Node.js с ранних версий платформы, когда ей было ещё только 2 года. Даже тогда, несмотря на то, что информации о Node.js было не так уж и много, уже можно было почувствовать, что Node.js — это очень серьёзно.
Теперь поговорим о технологиях, лежащих в основе Node.js и кратко рассмотрим основные события, связанные с этой платформой.
Итак, JavaScript — это язык программирования, который был создан в Netscape как скриптовый язык, предназначенный для управления веб-страницами в браузере Netscape Navigator.