Знижка 20% на курс GRASP & GOF Design Patterns
Дізнатися більше
20.12.2024
4 хвилин читання

Створення веб-сервера на Node.js: покрокове керівництво

Створення свого веб-сервера на Node.js звучить так, ніби це тільки для крутих бекенд-розробників? А ось і ні. Node.js дає можливість буквально кожному, навіть початківцю, налаштувати робочий сервер за кілька кроків. І давай, поки ти не закрив вкладку, – розберемо разом, чим же хороший Node.js web server і як його налаштувати. А освоїти подібні курси розробник може в компанії FoxmindEd.

FoxmindEd запрошує розробників-початківців освоїти Node.js на курсах менторингу! Менторинг у нас – формат, що базується повністю на практичних завданнях і підтримці досвідчених менторів.
Деталі курсу

Основні переваги використання Node.js для веб-серверів

Чому ж Node.js сервер такий популярний?

  • По-перше, він створений на базі рушія V8 від Google, який написаний на JavaScript (цю мову багато хто вже знає і любить).
  • По-друге, його асинхронність. Уяви, що ти заходиш у кафе, а офіціант обслуговує одразу кілька столиків. Так само і Node.js обробляє запити: він не витрачає дорогоцінні мілісекунди на очікування, а відразу перемикається на виконання наступного запиту, що збільшує продуктивність і скорочує час відгуку.

Що таке веб-сервер і як він працює в Node.js?

Якщо зовсім по-простому, то веб-сервер – це щось на кшталт кур’єра, який доставляє сторінки з інтернету прямо до тебе на екран. Node.js дає змогу створювати свій сервер з нуля, налаштувавши все так, як потрібно тобі. Цей “кур’єр” приймає HTTP-запити, обробляє їх і відправляє потрібні дані назад. Є також модуль HTTP, який дає змогу легко і швидко створити сервер, не підключаючи купу залежностей і бібліотек.

Встановлення та налаштування Node.js для розробки веб-сервера

Тепер, коли вже зрозуміла загальна ідея, час налаштувати твій робочий інструмент. Почнемо з інсталяції. Завантаж останню версію Node.js з офіційного сайту, дотримуючись інструкцій. Потім відкрий термінал і введи команду node -v, щоб переконатися, що встановлення пройшло успішно.

Створення простого веб-сервера на Node.js

Як створити базовий сервер з використанням HTTP модуля?

Для початку створимо мінімальний сервер, який буде просто “слухати” запити. Створи файл server.js і напиши такий код:

const http = require('http');

const hostname = '127.0.0.1';

const port = 3000;

const server = http.createServer((req, res) => {

  res.statusCode = 200;

  res.setHeader('Content-Type', 'text/plain');

  res.end('Hello, Node.js!');

});

server.listen(port, hostname, () => {

  console.log(`The server is running on http://${hostname}:${port}/`);

});

Запусти сервер командою node server.js, і в тебе вже готовий простий Node.js сервер! Він повертатиме “Hello, Node.js!” для кожного запиту.

Обробка запитів та відповідей на сервері Node.js

Сервер працює, але, чесно кажучи, він нуднуватий. Давай навчимо його обробляти різні запити. Додай перевірку URL і метод запиту:

const server = http.createServer((req, res) => {

  if (req.url === '/' && req.method === 'GET') {

    res.end('Welcome to the main page!');

  } else if (req.url === '/about' && req.method === 'GET') {

    res.end('This is the page about us');

  } else {

    res.statusCode = 404;

    res.end('Page not found');

  }

});

Тепер сервер може відповідати по-різному на запити, використовуючи маршрутизацію. Це просто, але ефективно.

Приклад роботи з маршрутами і статичними файлами

Маршрутизація – це те, що допомагає серверу розуміти, який запит обробити. Але що робити, якщо тобі потрібно видавати статичні файли, такі як HTML, CSS, картинки? Тут можна підключити модуль fs для роботи з файлами.

const fs = require('fs');

const server = http.createServer((req, res) => {

  if (req.url === '/index.html' && req.method === 'GET') {

    fs.readFile('index.html', (err, data) => {

      if (err) {

        res.statusCode = 500;

        res.end('Server error');

      } else {

        res.setHeader('Content-Type', 'text/html');

        res.end(data);

      }

    });

  }

});

Тепер сервер вміє віддавати статичні файли, і ти вже можеш розгортати міні-Node.js веб-додаток!

Підпишіться на наш Ютуб-канал! Корисні відео для програмістів чекають на вас! YouTube
Оберіть свій курс програмування! Шлях до кар’єри програміста починається тут! Подивитись

Розробка повноцінного веб-додатку на Node.js

Використання Express.js для створення веб-додатків

З цим фреймворком твій код стане набагато коротшим і чистішим. Express надає зручні методи для маршрутизації та обробки запитів. Встановіть його за допомогою npm install express, потім налаштуйте сервер:

const express = require('express');

const app = express();

const port = 3000;

app.get('/', (req, res) => {

  res.send('Greetings from Express!');

});

app.listen(port, () => {

  console.log(`Express server is running on http://localhost:${port}`);

});

Обробка POST і GET запитів

З Express легко працювати з різними методами запитів, наприклад, GET і POST. Додай обробку POST-запиту:

app.post('/data', (req, res) => {

  res.send('Data accepted!');

});

Налаштування middleware для поліпшення функціональності

Middleware у Node.js – це своєрідні “прошарки” для поліпшення роботи сервера, що додають різні функції. Наприклад, для логування запитів:

const morgan = require('morgan');

app.use(morgan('dev'));

Це просте налаштування додасть журнал усіх запитів у терміналі, що допоможе відстежити активність на сервері.

Обробка помилок та захист веб-сервера на Node.js

Як налаштувати обробку помилок на сервері?

Ніхто не застрахований від помилок. Node.js обробка помилок в Express має вбудований обробник помилок, який допоможе, якщо щось піде не так. Додай такий код наприкінці всіх маршрутів:

app.use((err, req, res, next) => {

  console.error(err.stack);

  res.status(500).send('Something went wrong!');

});

Робота з винятками та запобігання збоям у Node.js

Винятки бувають різними, від невдалої спроби читання файлу до помилки в базі даних. Використовуй try…catch і уникай аварійних зупинок:

try {

  // dangerous code

} catch (error) {

  console.error('An exception occurred:', error);

}

Основи безпеки веб-сервера: захист від XSS і SQL-ін’єкцій

Безпека – твій найкращий друг. Захист від XSS і SQL-ін’єкцій важливий для будь-якого веб-сервера. Встановіть бібліотеку helmet за допомогою npm install helmet, щоб захиститися від XSS:

const helmet = require('helmet');

app.use(helmet());

Ось і все! З цим базовим посібником ти вже можеш розгорнути свій міні Node.js web server або навіть повноцінний Node.js веб-додаток.

FAQ
Навіщо використовувати Node.js для веб-сервера?

Node.js забезпечує високу продуктивність завдяки асинхронній обробці запитів, що скорочує час відгуку і підвищує продуктивність.

Як встановити Node.js?

Скачай останню версію з офіційного сайту і перевір установку командою node -v у терміналі.

Як створити мінімальний веб-сервер?

Використовуй вбудований модуль HTTP. Напиши код у файлі server.js і запусти його командою node server.js.

Що таке маршрутизація?

Маршрутизація дає змогу серверу обробляти запити за різними URL. Наприклад, відповідати на /about або /contact.

Як працювати зі статичними файлами?

Використовуй модуль fs, щоб сервер віддавав HTML, CSS або зображення, зчитуючи їх із файлової системи.

Що робить Express.js?

Express.js спрощує розробку завдяки лаконічному синтаксису для маршрутів, оброблення запитів і роботи з middleware.

✨ Залишилися питання про створення веб-сервера на Node.js? Запитуйте в коментарях нижче!

Додати коментар

Ваш імейл не буде опубліковано. Обов'язкові поля відзначені *

Зберегти моє ім'я, імейл та адресу сайту у цьому браузері для майбутніх коментарів