Перевод книги Node Hero от RisingStack. Переведено с разрешения правообладателей.
Мы начнем с основ: никаких предварительных знаний Node.js не требуется. Цель этой книги — начать работу с Node.js и убедиться, что вы понимаете, как писать приложение с использованием этой платформы.
В первой главе вы узнаете, что такое Node.js, как установить её на свой компьютер и как начать с ней работать — так что в следующих главах можно будет приступить к реальной разработке. Приступим!
Node.js — это среда выполнения JavaScript, построенная на JavaScript-движке V8 из Chrome. В основе Node.js лежит событийно-управляемая модель с неблокирующими операциями I/O, что делает её легкой и эффективной.
Другими словами: Node.js предлагает вам возможность писать невероятно производительный серверный код с использованием JavaScript. Как говорится в официальном описании: Node.js — это среда выполнения, использующая тот же JavaScript-движок V8, который вы можете найти в браузере Google Chrome. Но этого недостаточно для успеха Node.js. В Node.js используется libuv - кросс-платформенная библиотека поддержки с акцентом на асинхронный ввод-вывод.
С точки зрения разработчика, Node.js однопоточна, но под капотом libuv использует треды, события файловой системы, реализует цикл событий, включает в себя тред-пулинг и так далее. В большинстве случаев вы не будете взаимодействовать с libuv напрямую.
Последнюю версию Node.js вы можете найти на официальном сайте: https://nodejs.org/en/download/.
При таком подходе довольно легко начать работу, но если позже вы захотите добавить в систему больше версий Node.js, лучше начать использовать nvm (node version manager) - диспетчер версий Node.js.
После его установки вы сможете использовать очень простой CLI API для смены версии Node.js:
Установка различных версий Node.js
nvm install 4.4
Затем, если вы хотите проверить в работе экспериментальную версию:
nvm install 5
Чтобы убедиться, что у вас установлена и запущена Node.js, выполните:
node --version
Если все в порядке, эта команда вернет номер версии текущего активного бинарного файла 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, давайте попробуем её в консоли! Запустите 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
.
Как только вы успешно переместитесь в нужное место, запустите файл, используя команду node index.js
. Вы увидите, что эта команда будет выдавать тот же результат, что и раньше, выводя строку непосредственно в терминале.
Теперь у вас есть файл index.js
, поэтому пришло время перейти на следующий уровень! Давайте создадим что-то более сложное, разделив наш исходный код на несколько JavaScript-файлов с целью удобочитаемости и поддерживаемости. Чтобы начать работу, вернитесь в свою IDE и создайте следующую структуру каталогов (с пустыми файлами), но пока не трогайте package.json
, мы сгенерируем его автоматически на следующем шаге:
├── app
| ├── calc.js
| └── index.js
├── index.js
└── package.json
Каждый проект Node.js начинается с создания файла package.json
. Вы можете думать о нем как о JSON-представлении приложения и его зависимостей. Он содержит имя вашего приложения, автора (вас) и все зависимости, необходимые для запуска приложения. Мы рассмотрим раздел зависимостей позже в главе «Использование NPM».
Вы можете интерактивно генерировать файл package.json
с помощью команды npm init
в терминале. После запуска команды вас попросят ввести некоторые данные, например имя вашего приложения, версию, описание и так далее. Не нужно беспокоиться, просто нажимайте Enter, пока не получите сформированный JSON и вопрос is it ok?
. Нажмите 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-провайдера: они могут распознать команду start
и использовать её для запуска приложения.
Теперь давайте вернемся к первому созданному вами файлу под названием 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.
Слушайте наш подкаст в iTunes и SoundCloud, читайте нас на Medium, контрибьютьте на GitHub, общайтесь в группе Telegram, следите в Twitter и канале Telegram, рекомендуйте в VK и Facebook.