Node.js для начинающих: пошаговая установка и создание приложения
Перейти

Node.js для начинающих: пошаговая установка и создание приложения

#Node.js  #npm и зависимости  #Установка софта  
Пройдите тест, узнайте какой профессии подходите
Сколько вам лет
0%
До 18
От 18 до 24
От 25 до 34
От 35 до 44
От 45 до 49
От 50 до 54
Больше 55

Для кого эта статья:

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

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

Что такое Node.js и почему он популярен в веб-разработке

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

До появления Node.js в 2009 году, JavaScript использовался исключительно в браузерах. Разработчикам приходилось изучать отдельный язык для написания серверной логики (PHP, Ruby, Python). Node.js изменил правила игры, позволив использовать один язык как для фронтенда, так и для бэкенда.

Артём Соколов, ведущий архитектор веб-приложений

Помню свой первый проект на Node.js в 2012 году. Мы с командой привыкли разделять разработку: фронтенд-команда писала на JavaScript, бэкенд-специалисты использовали PHP. Коммуникация между ними часто затягивалась, что тормозило проект. Когда мы перешли на Node.js для API-слоя, эффективность выросла на 40%. Разработчики могли свободно перемещаться между задачами без необходимости "переключать" мышление между разными языками. Особенно ценным оказалась возможность переиспользовать модели данных и валидационную логику и на клиенте, и на сервере. Наш первый сервис на Node.js обрабатывал более 5000 запросов в секунду на обычном виртуальном хостинге — цифры, которые впечатляли в то время.

Преимущества Node.js, сделавшие его стандартом индустрии:

  • Асинхронность и неблокирующий ввод-вывод: Node.js не ждет завершения операций ввода-вывода (чтения файла, запроса к БД), а продолжает выполнять код, обрабатывая результат по готовности.
  • Высокая производительность: Благодаря событийно-ориентированной архитектуре и движку V8, Node.js демонстрирует впечатляющую скорость для задач с интенсивным вводом-выводом.
  • Единая экосистема: NPM (Node Package Manager) — крупнейший в мире репозиторий модулей с более чем 1,3 миллиона пакетов.
  • Универсальность: Подходит для широкого спектра задач — от API и микросервисов до десктопных приложений и IoT-устройств.
Тип приложений Почему Node.js подходит Примеры использования
Веб-серверы и API Асинхронная обработка множества одновременных запросов REST API, GraphQL серверы
Приложения реального времени Отличная поддержка WebSockets Чаты, стриминг, онлайн-игры
Однострочные приложения (SPA) Рендеринг на стороне сервера React (Next.js), Vue (Nuxt.js)
Микросервисы Легкие, быстро масштабируемые процессы Сервисы обработки данных, шлюзы API

Сегодня Node.js используется такими компаниями как Netflix, PayPal, Uber, LinkedIn и многими другими. Согласно статистике Stack Overflow 2023 года, Node.js остается одной из самых любимых и востребованных технологий с более чем 65% разработчиков, использующих его регулярно. 💼

Пошаговый план для смены профессии

Установка Node.js на Windows, macOS и Linux

Установка Node.js — это первый шаг в вашем путешествии по серверной разработке на JavaScript. Процесс установки отличается в зависимости от операционной системы, но в любом случае занимает не более 5 минут.

Перед установкой стоит знать, что существуют две версии Node.js:

  • LTS (Long Term Support) — стабильная версия с долгосрочной поддержкой, рекомендуемая для большинства пользователей
  • Current — содержит новейшие функции, но может быть менее стабильной

Для начинающих всегда рекомендую выбирать LTS-версию, поскольку она обеспечивает большую совместимость с пакетами NPM и более предсказуемое поведение.

Теперь рассмотрим процесс установки на разных платформах:

Установка на Windows

  1. Перейдите на официальный сайт nodejs.org
  2. Скачайте установщик LTS-версии для Windows (.msi файл)
  3. Запустите загруженный файл и следуйте инструкциям мастера установки
  4. Убедитесь, что опция "Automatically install the necessary tools..." отмечена
  5. После завершения установки откройте командную строку (CMD) или PowerShell и проверьте установку, введя:
node -v
npm -v

Установка на macOS

На macOS у вас есть несколько вариантов установки:

  1. Через установщик:
    • Скачайте macOS Installer (.pkg) с официального сайта
    • Запустите файл и следуйте инструкциям установки
  2. Через Homebrew (рекомендуемый способ):
    • Установите Homebrew, если он еще не установлен, выполнив в терминале:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

  • Затем установите Node.js:
brew install node

  1. Через NVM (Node Version Manager):
    • Установите NVM:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash

  • Затем установите последнюю LTS-версию Node.js:
nvm install --lts

Установка на Linux

В зависимости от дистрибутива Linux:

Ubuntu/Debian:

  1. Обновите список пакетов:
sudo apt update

  1. Установите Node.js и npm:
sudo apt install nodejs npm

Для более новых версий через NodeSource:

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs

CentOS/RHEL/Fedora:

sudo dnf module install nodejs:18/common

Михаил Петров, DevOps-инженер

Однажды я настраивал развертывание Node.js приложения для стартапа, который разрабатывал платформу анализа данных. Команда разработчиков жаловалась на "магические" ошибки: код работал на одних машинах и не работал на других. После расследования обнаружил, что причиной были разные версии Node.js. Один разработчик использовал последнюю версию Current, другой — LTS, а на сервере была установлена устаревшая версия. Я внедрил NVM (Node Version Manager) для локальной разработки и Docker для производственной среды, зафиксировав точную версию Node.js в Dockerfile. Этот простой шаг устранил 90% непредсказуемых багов и сократил время деплоя с 15 до 3 минут. С тех пор я всегда рекомендую команде фиксировать версию Node.js в начале проекта и использовать инструменты управления версиями для обеспечения согласованной среды разработки.

После установки важно проверить, что Node.js и npm (менеджер пакетов, который устанавливается вместе с Node.js) работают корректно. Откройте терминал или командную строку и выполните:

node -v
npm -v

Если вы видите номера версий (например, v18.17.1 для Node.js и 9.6.7 для npm), значит установка прошла успешно. 🎉

Для более продвинутых пользователей или тех, кто работает с несколькими проектами, требующими разные версии Node.js, рекомендую использовать инструменты управления версиями:

  • nvm (Node Version Manager) — для Unix-подобных систем
  • nvm-windows — для Windows
  • n — облегченный менеджер версий для Unix-систем

Первые шаги: работа с npm и создание package.json

После установки Node.js пора познакомиться с npm (Node Package Manager) — одним из самых мощных инструментов в экосистеме Node.js. NPM — это не просто менеджер пакетов, а целая инфраструктура для обмена кодом между разработчиками.

NPM предоставляет три ключевые функциональности:

  • Веб-сайт npmjs.com для поиска пакетов и управления профилями
  • Интерфейс командной строки (CLI) для взаимодействия с реестром
  • Реестр — база данных с метаданными о пакетах

Центральным элементом любого Node.js проекта является файл package.json. Этот файл содержит метаданные о вашем проекте, включая список зависимостей, скрипты запуска, информацию о версии и авторах.

Создание нового проекта с package.json

Для создания нового проекта выполните следующие шаги:

  1. Создайте новую папку для проекта и перейдите в нее:
mkdir my-first-node-app
cd my-first-node-app

  1. Инициализируйте проект с помощью npm:
npm init

Команда npm init запустит интерактивный процесс настройки, где вам будет предложено ввести различные данные о проекте. Вы можете нажимать Enter для использования значений по умолчанию или вводить свои варианты.

Для быстрой инициализации с параметрами по умолчанию используйте:

npm init -y

После завершения процесса в вашей папке появится файл package.json, который будет выглядеть примерно так:

json
Скопировать код
{
"name": "my-first-node-app",
"version": "1.0.0",
"description": "My first Node.js application",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Your Name",
"license": "ISC"
}

Установка пакетов

Основная сила npm — это возможность устанавливать и использовать тысячи готовых пакетов. Существует два типа зависимостей:

  • Зависимости проекта (dependencies) — пакеты, необходимые для работы приложения
  • Зависимости разработки (devDependencies) — пакеты, используемые только при разработке и тестировании

Установка пакета как зависимости проекта:

npm install express

или сокращенно

npm i express

Установка пакета как зависимости разработки:

npm install --save-dev nodemon

или

npm i -D nodemon

После установки в вашем проекте появится папка node_modules, содержащая все установленные пакеты, а файл package.json будет обновлен новыми зависимостями:

json
Скопировать код
{
"name": "my-first-node-app",
"version": "1.0.0",
"description": "My first Node.js application",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Your Name",
"license": "ISC",
"dependencies": {
"express": "^4.18.2"
},
"devDependencies": {
"nodemon": "^3.0.1"
}
}

Символы ^ или ~ перед номером версии указывают на стратегию обновления при установке пакетов:

Префикс Значение Пример
^ Совместимое обновление (обновляет до последней минорной/патч-версии) ^4.18.2 может обновиться до 4.99.99, но не до 5.0.0
~ Обновление патчей (только исправления ошибок) ~4.18.2 может обновиться до 4.18.9, но не до 4.19.0
без префикса Точная версия (без автоматического обновления) 4.18.2 всегда будет 4.18.2
latest Всегда последняя опубликованная версия Может привести к непредсказуемым результатам в продакшене

Использование скриптов npm

Секция scripts в package.json позволяет определить команды, которые можно запускать с помощью npm. Это удобный способ автоматизировать повторяющиеся задачи. Например, добавим скрипты для запуска приложения:

json
Скопировать код
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js",
"test": "echo \"Error: no test specified\" && exit 1"
}

Теперь вы можете запустить эти команды с помощью:

npm start

(запуск в обычном режиме)

npm run dev

(запуск с автоматическим перезапуском при изменении файлов)

Важно понимать, что npm start — это специальный сокращенный скрипт. Для всех остальных скриптов необходимо использовать префикс run, например npm run dev. 🔄

Создаём простое серверное приложение на Node.js

Теперь, когда вы освоили базовые инструменты Node.js, пришло время создать ваше первое работающее приложение. Мы создадим простой веб-сервер, который будет отвечать на HTTP-запросы.

Существует два основных подхода к созданию веб-сервера на Node.js:

  1. Использование встроенного модуля http — базовый способ, но требует написания большего количества кода
  2. Использование фреймворка Express — более высокоуровневый подход, значительно упрощающий разработку

Начнем с простейшего примера с использованием встроенного модуля http. Создайте файл index.js в корне вашего проекта и добавьте следующий код:

JS
Скопировать код
// Импортируем встроенный модуль http
const http = require('http');

// Определяем порт, на котором будет работать сервер
const PORT = 3000;

// Создаем HTTP сервер
const server = http.createServer((req, res) => {
// Устанавливаем заголовок ответа с типом содержимого
res.setHeader('Content-Type', 'text/html');

// В зависимости от запрошенного URL отправляем разный контент
if (req.url === '/') {
res.statusCode = 200;
res.end('<h1>Добро пожаловать на мой первый Node.js сервер!</h1>');
} else if (req.url === '/about') {
res.statusCode = 200;
res.end('<h1>О сервере</h1><p>Это простой веб-сервер на Node.js.</p>');
} else {
res.statusCode = 404;
res.end('<h1>404: Страница не найдена</h1>');
}
});

// Запускаем сервер на указанном порту
server.listen(PORT, () => {
console.log(`Сервер запущен на порту ${PORT}`);
});

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

node index.js

Вы должны увидеть сообщение "Сервер запущен на порту 3000" в консоли. Откройте браузер и перейдите по адресу http://localhost:3000, чтобы увидеть ваш сервер в действии.

Хотя этот пример демонстрирует основные принципы работы с HTTP в Node.js, в реальных проектах обычно используют Express.js — самый популярный веб-фреймворк для Node.js. Express значительно упрощает создание маршрутов, обработку запросов и управление middleware.

Создадим тот же сервер, но с использованием Express. Сначала установим его, если еще не сделали это:

npm install express

Теперь обновим наш файл index.js:

JS
Скопировать код
// Импортируем Express
const express = require('express');

// Создаем экземпляр приложения Express
const app = express();
const PORT = 3000;

// Определяем маршрут для главной страницы
app.get('/', (req, res) => {
res.send('<h1>Добро пожаловать на мой первый Express сервер!</h1>');
});

// Маршрут для страницы About
app.get('/about', (req, res) => {
res.send('<h1>О сервере</h1><p>Это простой веб-сервер на Express.js.</p>');
});

// Обработка запросов к неопределенным маршрутам
app.use((req, res) => {
res.status(404).send('<h1>404: Страница не найдена</h1>');
});

// Запускаем сервер
app.listen(PORT, () => {
console.log(`Сервер Express запущен на порту ${PORT}`);
});

Перезапустите сервер и проверьте его работу в браузере. Обратите внимание, насколько код стал чище и более структурированным с использованием Express.

Теперь давайте сделаем наше приложение немного более интерактивным, добавив простую форму и обработку POST-запросов:

Сначала установим middleware для работы с данными формы:

npm install body-parser

Обновим наш файл index.js:

JS
Скопировать код
const express = require('express');
const bodyParser = require('body-parser');

const app = express();
const PORT = 3000;

// Middleware для обработки данных формы
app.use(bodyParser.urlencoded({ extended: false }));

// Главная страница с формой
app.get('/', (req, res) => {
res.send(`
<h1>Мой Node.js сервер</h1>
<form action="/submit" method="POST">
<div>
<label for="name">Ваше имя:</label>
<input type="text" id="name" name="name" required>
</div>
<div>
<label for="message">Сообщение:</label>
<textarea id="message" name="message" required></textarea>
</div>
<button type="submit">Отправить</button>
</form>
`);
});

// Обработка отправки формы
app.post('/submit', (req, res) => {
const { name, message } = req.body;
res.send(`
<h1>Получено сообщение!</h1>
<p><strong>От:</strong> ${name}</p>
<p><strong>Сообщение:</strong> ${message}</p>
<a href="/">Вернуться на главную</a>
`);
});

app.get('/about', (req, res) => {
res.send('<h1>О сервере</h1><p>Это простой веб-сервер на Express.js.</p>');
});

app.use((req, res) => {
res.status(404).send('<h1>404: Страница не найдена</h1>');
});

app.listen(PORT, () => {
console.log(`Сервер Express запущен на порту ${PORT}`);
});

Теперь ваше приложение имеет форму для ввода данных и может обрабатывать отправленную информацию! 📝

Запуск, отладка и расширение возможностей вашего приложения

Теперь, когда у вас есть работающее Node.js приложение, пора рассмотреть, как эффективно запускать, отлаживать и расширять его возможности.

Режимы запуска приложения

Существует несколько способов запуска Node.js приложения, каждый из которых подходит для различных сценариев:

  1. Базовый запуск: node index.js – простой запуск без дополнительных возможностей
  2. Автоматический перезапуск при изменении кода: nodemon index.js – удобно для разработки
  3. Запуск через npm-скрипты: npm start или npm run dev – рекомендуемый подход для проектов

Для удобства разработки, если вы еще не добавили скрипты в package.json, сделайте это сейчас:

json
Скопировать код
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js",
"test": "echo \"Error: no test specified\" && exit 1"
}

Отладка Node.js приложений

Существует несколько способов отладки Node.js приложений:

  1. Использование console.log — простейший способ:
JS
Скопировать код
console.log('Данные запроса:', req.body);
console.log('Что-то пошло не так:', error);

  1. Встроенный отладчик Node.js:
node --inspect index.js

Затем откройте Chrome и перейдите по адресу chrome://inspect, чтобы подключиться к отладчику.

  1. Отладка в VS Code — самый удобный способ:
    • Создайте файл .vscode/launch.json с конфигурацией запуска
    • Установите точки останова, кликнув слева от номера строки
    • Нажмите F5 или выберите "Run and Debug" в меню слева

Пример конфигурации для VS Code (launch.json):

json
Скопировать код
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"skipFiles": ["<node_internals>/**"],
"program": "${workspaceFolder}/index.js"
}
]
}

Расширение возможностей приложения

Когда ваше базовое приложение работает, вы можете расширить его функциональность с помощью дополнительных модулей и инструментов:

Категория Популярные пакеты Применение
Шаблонизация ejs, pug, handlebars Создание динамических HTML-страниц
Базы данных mongoose, sequelize, prisma Работа с MongoDB, MySQL, PostgreSQL
Аутентификация passport, jsonwebtoken, bcrypt Авторизация пользователей, JWT-токены
API-документация swagger-ui-express, openapi Автоматическая генерация документации
Тестирование jest, mocha, supertest Модульное и интеграционное тестирование
Логирование winston, morgan, pino Ведение журналов работы приложения

Пример добавления шаблонизатора EJS

Добавим в наше приложение шаблонизатор EJS для более удобного формирования HTML-страниц:

npm install ejs

Теперь обновим наш файл index.js:

JS
Скопировать код
const express = require('express');
const bodyParser = require('body-parser');

const app = express();
const PORT = 3000;

// Настройка EJS как шаблонизатора
app.set('view engine', 'ejs');
app.set('views', './views');

// Middleware
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static('public')); // Для статических файлов

// Маршруты
app.get('/', (req, res) => {
res.render('index', { title: 'Мой Node.js сервер' });
});

app.post('/submit', (req, res) => {
const { name, message } = req.body;
res.render('message', { 
title: 'Сообщение получено',
name,
message
});
});

app.get('/about', (req, res) => {
res.render('about', { title: 'О сервере' });
});

// Обработка 404
app.use((req, res) => {
res.status(404).render('404', { title: 'Страница не найдена' });
});

app.listen(PORT, () => {
console.log(`Сервер Express запущен на порту ${PORT}`);
});

Затем создайте директорию views и добавьте файлы шаблонов:

views/index.ejs:

ejs
Скопировать код
<%- include('partials/header') %>

<h1><%= title %></h1>
<form action="/submit" method="POST">
<div>
<label for="name">Ваше имя:</label>
<input type="text" id="name" name="name" required>
</div>
<div>
<label for="message">Сообщение:</label>
<textarea id="message" name="message" required></textarea>
</div>
<button type="submit">Отправить</button>
</form>

<%- include('partials/footer') %>

views/partials/header.ejs:

ejs
Скопировать код
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><%= title %></title>
<link rel="stylesheet" href="/css/style.css">
</head>
<body>
<nav>
<a href="/">Главная</a>
<a href="/about">О сервере</a>
</nav>
<main>

views/partials/footer.ejs:

ejs
Скопировать код
</main>
<footer>
<p>&copy; <%= new Date().getFullYear() %> Моё Node.js приложение</p>
</footer>
</body>
</html>

Создайте также директорию public/css и добавьте файл style.css с базовыми стилями:

CSS
Скопировать код
body {
font-family: Arial, sans-serif;
max-width: 800px;
margin: 0 auto;
padding: 20px;
}

nav {
margin-bottom: 20px;
}

nav a {
margin-right: 10px;
}

form div {
margin-bottom: 10px;
}

input, textarea {
width: 100%;
padding: 8px;
margin-top: 5px;
}

button {
background-color: #4CAF50;
color: white;
padding: 10px 15px;
border: none;
cursor: pointer;
}

Теперь у вас есть полноценное приложение с разделенной логикой и представлением, стилизацией и переиспользуемыми компонентами! 🚀

Дальнейшие шаги

Когда вы освоите основы, рассмотрите следующие направления развития:

  • Подключение базы данных (MongoDB с Mongoose или SQL с Sequelize)
  • Добавление аутентификации пользователей
  • Разработка REST API для мобильных приложений
  • Интеграция с внешними API (платежные системы, карты, соцсети)
  • Развертывание на платформах типа Heroku, Vercel или AWS

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

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Что такое Node.js?
1 / 5

Никита Титов

разработчик Node.js

Свежие материалы

Загрузка...