Программирование • 05 ноября 2024 • 5 мин чтения

Руководство по Node.js для новичков

Объясняем, что такое Node.js, какие в ней есть библиотеки, фреймворки и полезные инструменты. А также рассказываем, как установить, настроить и запустить приложение.

Что такое Node.js и зачем он нужен

Node.js — это бесплатная кросс-платформенная среда выполнения JavaScript с открытым исходным кодом. Она создана на движке V8 от Google, он используется для преобразования JavaScript в компьютерный код. В отличие от браузера, где возможности языка ограничены взаимодействием с веб-страницей, Node.js придаёт JavaScript универсальность. 

Вот несколько примеров задач, которые решаются в Node.js: 

  • Разработка серверных приложений. Среда позволяет разрабатывать веб-серверы, способные работать с миллионами одновременных соединений. Это позволяет создавать приложения с высокой нагрузкой.
  • Асинхронное программирование.js выполняет код асинхронно, благодаря чему ресурсы сервера расходуются грамотнее, а приложение может обрабатывать множество запросов одновременно.
  • Работа с большими объёмами данных. За счёт того, что Node.js хорошо справляется с высокой нагрузкой, её часто применяют для создания приложений, где нужна обработка больших объёмов информации.
  • Создание микросервисов. Архитектура среды позволяет разрабатывать небольшие изолированные сервисы, которые легко масштабировать и изменять.
  • Разработка сетевых приложений. К примеру, Node.js подходит для разработки чатов, игровых серверов и RESTful API, в которых нужна высокая скорость обработки запросов.
  • Интеграция со сторонними инструментами через API. С помощью Node.js настраивают взаимодействие сайта с базами данных, фреймворками и библиотеками. Благодаря этому функционал среды расширяется и появляется возможность разрабатывать приложения со сложной архитектурой.

Stackoverflow признал Node.js самой востребованной средой разработки

Эту среду применяют программисты многих компаний. Например, благодаря Node.js, Netflix удалось снизить скорость загрузки приложения, Trello втрое сократил количество кода, а Ebay создал микросервисы, не нагружая основную инфраструктуру. 

Погрузиться в бэкенд и разобраться, как работать в среде, поможет курс «Бэкенд на Node.js для фронтенд-разработчиков». Он подходит для программистов с опытом и помогает освоить программирование приложений с помощью Nest.js и PostgreSQL, создание API с помощью Express, MongoDB и Mongoose и многое другое.

Как установить и настроить среду разработки

Для работы с Node.js достаточно установить актуальную версию среды, которую можно скачать на официальном сайте. Доступно два варианта: LTS-версия с долгосрочной поддержкой или новая версия, где быстрее появляются обновления. Обычно разработчики выбирают первую как наиболее стабильную.

Кнопка скачивания Node.js находится на главной странице сайта

Вместе с Node.js автоматически устанавливается npm (Node Package Manager). Инструмент делает работу с библиотеками и модулями (modules) более удобной. Настройка среды разработки проходит в несколько этапов.

Установка редактора. Сперва нужно установить удобный для разработчика редактор, например VS Code или любой другой. В редакторе стоит настроить автоматическое форматирование кода и сохранение файлов при переключении между окнами. Это поможет исключить такие ситуации, как потеря данных в процессе работы. В VS Code это можно сделать так:

{
"editor.formatOnSave": true,
"eslint.autoFixOnSave": true,
"files.autoSave": "onFocusChange"
}

  • Скачивание Node Version Manager (nvm). Инструмент позволяет управлять версиями Node.js и быстро переключаться между ними, что особенно полезно при работе с несколькими проектами. Его можно скачать на Mac и Linux. При использовании Windows рекомендуется сначала установить nvm-windows и уже через него поставить Node.js.
  • Установка ESLint. Он пригодится для проверки кода и стиля, чтобы сразу писать чистый код. Для того чтобы он работал на всех проектах, которыми занимается программист, нужно ввести:

npm install -g eslint.

А для создания конфигурации в конкретном проекте необходима команда:

eslint --init

Основы JavaScript и библиотеки Node.js

Node.js поддерживает тысячи библиотек (пакетов) через npm. Они представляют собой наборы функций, которые упрощают разработку приложений на JavaScript. Говоря простыми словами, это готовые решения для различных задач, например для работы с базами данных, обработки файлов или отправки электронных писем. 

Вот несколько примеров популярных категорий библиотек Node.js: 

  • Работа с файлами и системой. Встроенная библиотека fs позволяет разработчикам читать, записывать файлы и папки на сервере и управлять ими. А встроенный в Node.js path помогает обрабатывать пути к файлам и папкам, что упрощает навигацию по файловой системе и делает код более универсальным и легко поддерживаемым.
  • Веб-серверы и API. Библиотека express пригодится для маршрутизации, обработки запросов, ответов, а также работы с базами данных. А её современная альтернатива koa упрощает асинхронные операции и тестирование кода благодаря модульной структуре.
  • Работа с базами данных. К примеру, для MongoDB понадобится библиотека mongoose. Она позволяет моделировать данные, сохранять связи между документами и управлять миграциями. Для работы с PostgreSQL нужна библиотека pg, с помощью которой можно выполнять запросы, обрабатывать результаты и проводить транзакции.
  • Инструменты для тестирования. Библиотека jest, благодаря которой можно запускать автоматические тесты и создавать мок-объекты, которые имитируют поведение реальных объектов. Ещё одна популярная библиотека — mocha. Она поддерживает несколько стилей тестирования, включая TDD (разработка через тестирование) и BDD (поведенческое тестирование), а также параллельное выполнение тестов. Также стоит упомянуть chai — библиотеку Node.js для проверки утверждений и создания понятных и кратких тестов.
  • Работа с запросами. Например, axios — библиотека для отправки HTTP-запросов в Node.js и других средах JavaScript. Она предоставляет удобный и гибкий интерфейс для работы с RESTful API и другими веб-сервисами, а также делает запросы к API проще.

Node.js: фреймворки и инструменты

В Node.js есть несколько популярных фреймворков и инструментов, которые упрощают программирование, особенно для создания приложений и API. Они помогают новичкам быстро войти в разработку серверных приложений, используя более структурированный подход.

Примеры полезных инструментов и фреймворков Node.js:

NestJS. Мощный фреймворк Node.js с архитектурой MVC (Model-View-Controller), то есть он основан на модульной системе, которая упрощает организацию кода и делает его более читаемым и поддерживаемым. По функционалу NestJS похож на Angular от Google и ориентирован на масштабируемые серверные приложения.
Socket.IO. Инструмент позволяет создавать приложения с поддержкой двусторонней связи в режиме реального времени, например чаты и уведомления. Он обеспечивает обмен данными между клиентом и сервером через веб-сокеты или другие технологии, как, например, HTTP long-polling.
PM2. Production Monitoring 2 — это процесс-менеджер для управления Node.js-приложениями в продакшене. Он позволяет запускать, останавливать и перезапускать приложения, мониторить их состояние и автоматически распределять нагрузку между разными экземплярами.

Создание и запуск первого приложения на Node.js

Рассмотрим, как создать и запустить приложение в Node.js, на примере простого API для списка задач. Для этого нужно сделать следующее:

1. Создать и открыть папку проекта:

mkdir todo-app && cd todo-app

2. Инициализировать проект и установить библиотеку express:

npm init -y
npm install express

3. Создать файл index.js и добавить базовый сервер с маршрутом для списка задач:

const express = require('express');
const app = express();
app.use(express.json());

let todos = [
{ id: 1, task: 'Learn Node.js', completed: false },
{ id: 2, task: 'Build API', completed: false },
];

app.get('/todos', (req, res) => res.json(todos));

app.post('/todos', (req, res) => {
const newTodo = { id: todos.length + 1, task: req.body.task, completed: false };
todos.push(newTodo);
res.status(201).json(newTodo);
});

app.listen(3000, () => console.log('Server is running on port 3000'));

4. Запустить сервер:

node index.js

5. Теперь открываем Postman или используем curl для создания и получения задач на http://localhost:3000/todos.

6. Например, добавим новую задачу с помощью POS-запроса.

Метод: POST
URL: http://localhost:3000/todos
Headers: Content-Type: application/json
Body: В разделе "Body" в Postman выбираем вкладку raw и JSON в выпадающем списке, а затем введём данные новой задачи в формате JSON:

{
"task": "Finish Node.js guide"
}

Если запрос успешен, API вернёт ответ с кодом 201 Created и JSON с данными новой задачи, допустим:

{
"id": 3,
"task": "Finish Node.js guide",
"completed": false
}

Мы создали в Node.js приложение, где каждый новый элемент автоматически получает id, поэтому нет необходимости указывать его вручную в запросе

7. Открыв http://localhost:3000/todos в браузере, можно увидеть список задач.

В списке отображаются все задачи, включая последнюю, добавленную вручную с помощью POST-запроса

Совет эксперта

Руслан Посевкин Для успешного освоения Node.js нужно:
Практиковаться через мини-проекты. Пишите код и создавайте что-то небольшое: чат, ToDo приложение, небольшое API. Это поможет освоить не только синтаксис, но и логику Node.js.
Учиться работать с асинхронным кодом. async/await — ваши лучшие друзья в Node.js. Это помогает упростить чтение и понимание асинхронного кода.
Отлаживать через консоль. Используйте console.log() для вывода данных или изучите встроенный в VS Code отладчик для отслеживания и отладки ошибок.
Работать с документацией. Многое в Node.js имеет хорошую документацию, и полезно использовать её как основной источник для изучения.
Освоение Node.js может показаться сложным на старте, но с каждым проектом будет становиться проще.

Статью подготовили:
Руслан Посевкин
Яндекс Практикум
Software Engineer
Женя Соловьёва
Яндекс Практикум
Редактор
Полина Овчинникова
Яндекс Практикум
Иллюстратор

Дайджест блога: ежемесячная подборка лучших статей от редакции

Поделиться

Успейте начать учебу в Практикуме до конца ноября со скидкой 20%

Tue Nov 05 2024 16:43:50 GMT+0300 (Moscow Standard Time)