Официальный логотип Node.js

Node.js - это среда выполнения JavaScript, построенная на движке JavaScript V8 Chrome. Node.js использует управляемую событиями, неблокирующую модель ввода-вывода, что делает его легким и эффективным.

Другими словами: Node.js предлагает вам возможность писать серверы с использованием JavaScript с невероятной производительностью. Как говорится в официальном заявлении: Node.js - это среда выполнения, которая использует тот же движок V8 Javascript, который вы можете найти в браузере Google Chrome. Но этого было бы недостаточно для успеха Node.js - Node.js использует libuv, многоплатформенную вспомогательную библиотеку с упором на асинхронный ввод-вывод.

Официальный логотип libuv

С точки зрения разработчика, Node.js является однопоточным, но под капотом libuv обрабатывает потоки, события файловой системы, реализует цикл событий, поддерживает пул потоков и так далее. В большинстве случаев вы не будете взаимодействовать с ним напрямую.

Установка Node.js для начала

Чтобы получить последнюю версию бинарного файла Node.js, вы можете посетить официальный веб-сайт Node.js: https://nodejs.org/en/download/.

При таком подходе начать работу довольно легко - однако, если в будущем вы захотите добавить больше версий Node.js, лучше начать использовать nvm, диспетчер версий узла.

После его установки вы можете использовать очень простой CLI API, с которым вы можете взаимодействовать:

Установка версий Node.js

nvm install 4.4

Затем, если вы хотите проверить экспериментальную версию:

nvm install 5

Чтобы убедиться, что у вас есть Node.js, запустите это:

node --version

Если все в порядке, он вернет номер версии текущего активного двоичного файла Node.js.

Использование версий Node.js

Если вы работаете над проектом, поддерживающим Node.js v4, вы можете начать использовать его с помощью следующей команды:

nvm use 4

Затем вы можете переключиться на Node.js v5 с помощью той же команды:

nvm use 5

Хорошо, теперь мы знаем, как устанавливать версии 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:

$ node

Хорошо, попробуем что-нибудь напечатать:

$ node 
> console.log('hello from Node.js')

Как только вы нажмете Enter, вы получите что-то вроде этого:

> console.log('hello from Node.js') 
hello from Node.js undefined

Не стесняйтесь играть с Node.js, используя этот интерфейс - я обычно пробую здесь небольшие фрагменты, если не хочу помещать их в файл.

Пришло время создать наше приложение Hello Node.js!

Начнем с создания файла index.js. Откройте свою IDE (Atom, Sublime, Code - вы называете ее), создайте новый файл и сохраните его с именем index.js. Если вы закончили с этим, скопируйте следующий фрагмент в этот файл:

// index.js 
console.log('hello from Node.js')

Чтобы запустить этот файл, вы должны снова открыть свой терминал и перейти в каталог, в который вы поместили index.js.

После того, как вы успешно переместились в нужное место, запустите файл с помощью команды thenode index.js. Вы можете видеть, что он будет производить тот же результат, что и раньше - вывод строки прямо в терминал.

Модуляризация вашего приложения

Теперь у вас есть файл index.js, так что пора повысить уровень вашей игры! Давайте создадим что-то более сложное, разделив наш исходный код на несколько файлов JavaScript для удобства чтения и сопровождения. Для начала вернитесь в свою среду IDE (Atom, Sublime, Code - вы ее называете) и создайте следующую структуру каталогов (с пустыми файлами), но пока оставьте package.json, мы сгенерируем его автоматически в следующем шаг:

├── app 
|    ├── calc.js
|    └── index.js 
├── index.js
└── package.json

Каждый проект Node.js начинается с создания файла package.json - вы можете думать о нем как о JSON-представлении приложения и его зависимостей. Он содержит имя вашего приложения, автора (вас) и все зависимости, необходимые для запуска приложения. Мы рассмотрим раздел о зависимостях позже в главе Использование NPM в Node Hero.

Вы можете в интерактивном режиме сгенерировать файл package.json с помощью команды npm init в терминале. После нажатия клавиши ввода вам будет предложено ввести несколько параметров, например название вашего приложения, версию, описание и так далее. Не беспокойтесь, просто нажимайте Enter, пока не получите фрагмент JSON и вопрос, все ли в порядке ?. Нажмите "Enter" в последний раз, и, альт, ваш package.json был автоматически сгенерирован и помещен в папку вашего приложения. Если вы откроете этот файл в своей среде IDE, он будет очень похож на фрагмент кода ниже.

// package.json 
{ 
  "name": "@risingstack/node-hero", 
  "version": "1.0.0", 
  "description": "", 
  "main": "index.js", 
  "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1", 
    "start": "node index.js"
  }, 
  "author": "", 
  "license": "ISC" 
}

Рекомендуется добавить сценарий запуска в package.json - как только вы это сделаете, как показано в примере выше, вы также можете запустить свое приложение с помощью команды npm start. Это очень удобно, когда вы хотите развернуть свое приложение у поставщика PaaS - они могут распознать его и запустить ваше приложение с его помощью.

Теперь вернемся к первому созданному вами файлу с именем index.js. Я рекомендую, чтобы этот файл был очень тонким - для этого требовалось только само приложение (файл index.js из подкаталога / app, который вы создали ранее). Скопируйте следующий скрипт в свой файл index.js и нажмите «Сохранить», чтобы сделать это:

// index.js 
require('./app/index')

Пришло время приступить к созданию самого приложения. Откройте файл index.js из папки / app, чтобы создать очень простой пример: добавление массива чисел. В этом случае файл index.js будет содержать только числа, которые мы хотим добавить, а логику, выполняющую вычисления, необходимо поместить в отдельный модуль.

Вставьте этот сценарий в файл index.js в каталог / app.

// app/index.js 
const calc = require('./calc') 
const numbersToAdd = [ 3, 4, 10, 2 ] 
const result = calc.sum(numbersToAdd) 
console.log(`The result is: ${result}`)

Теперь вставьте фактическую бизнес-логику в файл calc.js, который находится в той же папке.

// app/calc.js 
function sum (arr) { 
  return arr.reduce(function(a, b) { 
    return a + b 
  }, 0) 
} 
module.exports.sum = sum

Чтобы проверить, все ли получилось, сохраните эти файлы, откройте терминал и введите npm start или node index.js. Если вы все сделали правильно, вы получите ответ: 19. Если что-то пошло не так, внимательно просмотрите журнал консоли и найдите проблему на основе этого.

Следующий

В нашей следующей главе под названием Использование NPM мы рассмотрим, как использовать NPM, менеджер пакетов для JavaScript.

Подпишитесь на нашу рассылку для получения обновлений или перейдите по этой ссылке, чтобы перейти к следующей части.

А пока небольшая задача для вас: напишите небольшое приложение, которое запрашивает у пользователя два числа для ввода со стандартного ввода и выводит результат после него. (подсказка: используйте модуль readline: https://nodejs.org/api/readline.html)

Первоначально опубликовано на сайте RisingStack Engineering 23 марта 2016 г.