Официальный логотип 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 г.