Что такое Node.js

Пишем JavaScript код для сервера.

Время чтения: меньше 5 мин

Кратко

Скопировано

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

Как пользоваться

Скопировано

Установите Node.js на свой компьютер. Теперь в терминале можно выполнить команду, которая выведет текущую версию платформы и докажет, что все установлено корректно:

        
          
          node -v
          node -v

        
        
          
        
      

Node.js позволяет исполнить любой JavaScript-файл. Создадим демо-файл script.js:

        
          
          const whereIAm = __dirname// __dirname — глобальная переменная, хранящая папку, в которой лежит файл скриптаconsole.log(`I am at ${whereIAm}`)
          const whereIAm = __dirname
// __dirname — глобальная переменная, хранящая папку, в которой лежит файл скрипта

console.log(`I am at ${whereIAm}`)

        
        
          
        
      

Запустим его в терминале:

        
          
          node script.js
          node script.js

        
        
          
        
      

Как понять

Скопировано

За выполнение JavaScript в браузере Google Chrome (и других браузерах основанных на Chromium — Edge, Яндекс.Браузер, Opera) отвечает движок V8, разработанный в Google. В 2009 году Райан Даль, в качестве эксперимента, создал платформу Node.js, которая использует V8 для выполнения JavaScript-кода вне браузера.

В среде Node.js у приложения нет доступа к стандартным браузерным API. Например, document и window недоступны, потому что код исполняется вне браузера. Никаких документов и окон в его контексте не существует.

Абсолютное большинство инструментов для JavaScript-разработки использует Node.js. Многие серверные приложения тоже используют её, в основном при серверном рендеринге клиентских приложений и создании API-гейтвеев.

API-гейтвей — сервис с удобным клиенту API, который сам не выполняет никакой работы, а только вызывает другие сервисы, чтобы получить данные или совершить операцию. Ценность таких сервисов в удобном для клиентского кода API.

Например, можно сделать простое приложение на Node.js, которое отвечает на все запросы одинаковым текстом. В первую очередь, для этого потребуется сторонний npm-пакет:

        
          
          npm init // инициализируем package.jsonnpm install express // добавим пакет для создания веб-приложений
          npm init // инициализируем package.json
npm install express // добавим пакет для создания веб-приложений

        
        
          
        
      

Теперь нужно создать файл с кодом приложения, назовём его server.js:

        
          
          // express — фреймворк для создания веб-приложенийconst express = require('express')// создаём express-приложениеconst app = express()// оно будет работать на определенном порту компьютераconst port = 3000// если отправить GET-запрос на /, то получим ответ 'Hello World!'app.get('/', (req, res) => {  res.send('Hello World!')})// запускаем приложениеapp.listen(port, () => {  console.log(`Приложение запущено на http://localhost:${port}`)})
          // express — фреймворк для создания веб-приложений
const express = require('express')

// создаём express-приложение
const app = express()
// оно будет работать на определенном порту компьютера
const port = 3000

// если отправить GET-запрос на /, то получим ответ 'Hello World!'
app.get('/', (req, res) => {
  res.send('Hello World!')
})

// запускаем приложение
app.listen(port, () => {
  console.log(`Приложение запущено на http://localhost:${port}`)
})

        
        
          
        
      

Все готово к запуску! Исполним файл командой:

        
          
          node server.js
          node server.js

        
        
          
        
      

Если в браузере перейти на http://localhost:3000, то можно увидеть ответ веб-сервера.

Особенности версионирования

Скопировано

Версии в Node.js подчиняются некоторым правилам в зависимости от мажорной версии. Это первое число из полной версии. Например, для Node.js 16.13.1 мажорной версией будет 16.

Нечётные версии (13, 15 и др.) являются экспериментальными. В них, как правило, появляются самые новые возможности, однако период поддержки таких версий всего полгода. Это важно, потому что в программах постоянно выявляются критичные ошибки или опасные уязвимости.

Чётные версии (14, 16 и др.) через полгода разработки переходят в стадию LTS (от английского long-term support, долгосрочная поддержка). Это означает, что в течение 12 месяцев будет вестись активная разработка, будут добавляться новые возможности и исправляться ошибки. По окончании этих 12 месяцев ещё 18 месяцев будут исправляться критичные ошибки и проблемы с безопасностью.

Таким образом, нечётные версии лучше не использовать, кроме случаев когда нужно попробовать новые возможности. В продакшене обязательно нужно использовать LTS версии — они наиболее стабильны и гарантируют, что 30 месяцев будут исправляться критичные уязвимости.

На практике

Скопировано

Игорь Камышев советует

Скопировано

Часто система сборки проекта требует очень специфичной версии Node.js. Например, проект может собираться только на 10 версии. Чтобы не переустанавливать платформу каждый раз при смене проекта, был создан nvmNode Version Manager. Это небольшая консольная программа, которая позволяет легко выбирать версию Node.js и произвольно менять её.

С помощью nvm можно установить любую версию, просто выполнив команду:

        
          
          nvm install 10.10.0
          nvm install 10.10.0

        
        
          
        
      

И изменить используемую версию в любой момент времени с помощью команды:

        
          
          nvm 8.9.1
          nvm 8.9.1