Що таке Node.js? Основи серверної розробки на JavaScript

Що таке Node.js? Основи серверної розробки на JavaScript
Переклад 7 хв. читання
04 серпня 2023

Node.js - це потужне середовище виконання для запуску JavaScript-коду поза веб-браузером. Воно дозволяє запускати JavaScript на стороні сервера, що дає змогу розробникам створювати масштабовані, високопродуктивні та керовані подіями застосунки.

Node.js дозволяє розробникам використовувати JavaScript як на стороні клієнта, так і на стороні сервера, забезпечуючи уніфіковану мову та екосистему. Це усуває необхідність перемикання контексту і дозволяє повторно використовувати код між фронтендом і бекендом. Це призводить до підвищення продуктивності та скорочення часу розробки.

Node.js має велику та активну екосистему модулів та бібліотек, доступних через Node Package Manager (npm). Ця багата екосистема пропонує готові до використання інструменти та пакети для різних задач, таких як веб-фреймворки, коннектори для баз даних, автентифікація та фреймворки для тестування.

Розробники можуть використовувати ці модулі для прискорення розробки та покращення функціональності програм.

Враховуючи все це, Node.js особливо добре підходить для:

  • Веб-програм
  • Масштабованих API
  • Застосунків у режимі реального часу, що вимагають миттєвого оновлення даних і двостороннього зв'язку, таких як програми для чату та мультиплеєрні ігри
  • Потокових застосунків, таких як обробка аудіо- та відеоданих або аналітика в реальному часі
  • Односторінкові застосунки
  • Розгортання Інтернету речей

Звучить так, ніби все це добре підходить для деяких корисних веб-застосунків? Я так і думав. Тож розглянемо, як це все працює.

Як створити серверне середовище Node.js

По-перше, вам не потрібно налаштовувати та запускати сторонні веб-сервери, такі як Apache HTTPD або NGINX, або розміщувати свій контент в ієрархії каталогів /var/www/html. Це тому, що Node.js - це, серед іншого, фреймворк веб-сервера.

Далі я вам розповім, що це означає. Вам потрібно переконатися, що у вас встановлений Node.js разом з необхідними залежностями. Загалом, для цього ви будете використовувати менеджер пакетів NPM. На офіційному сайті є чудова документація з встановлення Node у вашій ОС.

Ви можете переконатися, що і Node, і NPM працюють і чекають на дії, виконавши ці команди:

$ node -v
v18.16.0
$ npm -v
9.5.1

Щоб мати якийсь HTML для роботи, ви повинні знайти або створити простий файл index.html і зберегти його в локальній директорії на вашому комп'ютері. Ця команда завантажить html сторінки LPI, якщо вам потрібно отримати щось швидко і легко:

wget https://bootstrap-it.com/lpi/

Розглянемо код server.js, який ми використовували для нашого сервера Node.

const http = require('http');
const fs = require('fs');

const server = http.createServer((req, res) => {
  // Read the HTML file
  fs.readFile('index.html', 'utf8', (err, data) => {
    if (err) {
      res.writeHead(500, { 'Content-Type': 'text/plain' });
      res.end('Error loading HTML file');
      return;
    }

    res.writeHead(200, { 'Content-Type': 'text/html' });
    res.end(data);
  });
});

const port = 3000;
server.listen(port, () => {
  console.log(`Server is running on http://localhost:${port}`);
});

Тепер пропрацюємо цей код, по одному розділу за раз. Почнемо з завантаження двох необхідних модулів: http для керування хостингом сайту та fs для читання HTML-файлів.

const http = require('http');
const fs = require('fs');

Потім ми створюємо серверну функцію, яка називається server. При виклику вона або прочитає і віддасть наш файл index.html (згенерувавши код успіху 200), або, якщо виникне проблема з читанням файлу, згенерує повідомлення про помилку з кодом 500.

  fs.readFile('index.html', 'utf8', (err, data) => {
    if (err) {
      res.writeHead(500, { 'Content-Type': 'text/plain' });
      res.end('Error loading HTML file');
      return;
    }

Далі код встановлює 3000 в якості порту для нашої програми - хоча, технічно, ви можете змінити його на будь-яке значення від 1 до 65535.

const port = 3000;

Нарешті, ми викликаємо функцію сервера, використовуючи метод listen і вказуючи номер порту, а потім записуємо запис в console.log.

server.listen(port, () => {
  console.log(`Server is running on http://localhost:${port}`);

Як запустити сервер Node.js

Виконавши команду npm init у тому ж каталозі, де будуть зберігатися ваші програмні файли, ви ініціалізуєте новий проєкт Node.js і створите файл package.json.

Файл package.json слугує маніфестом для проєкту, що містить метадані та інформацію про конфігурацію проєкту, його залежності, скрипти та інші деталі.

Ви можете вручну додавати залежності до файлу або використовувати:

npm install <package-name> 

...для додавання пакетів та їхніх версій до розділу залежностей package.json.

Коли ви запускаєте npm init для ініціалізації каталогу для нового проєкту, скрипт поставить вам декілька запитань. Параметри за замовчуванням, які запропонує вам npm, включатимуть 1.0.0 як номер версії та точку входу в index.js.

У вас також буде можливість налаштувати репозиторій git, ключові слова і вибрати модель ліцензії користувача. Всі налаштування за замовчуванням повинні добре працювати.

Після цього скрипт покаже вам запропоновану версію налаштувань у форматі JSON і запитає вашого підтвердження. Створений файл package.json буде відображати ці налаштування.

Для нашого проєкту встановіть модуль коннектора бази даних MySQL разом з express.js:

npm install mysql
npm install express.js

Обидві операції займають не більше кількох секунд. Коли все буде зроблено, ви побачите, що в нас з'явився новий файл: package-lock.json.

Зазирнувши всередину цього файлу, ви побачите багато цікавого у форматі JSON. Що це таке? Файл package-lock.json автоматично генерується npm, коли ви встановлюєте залежності для вашого проєкту. Він слугує файлом блокування, який забезпечує детермінованість та відтворюваність збірок вашого проєкту у різних середовищах.

Важливо включати файл package-lock.json до систем контролю версій, таких як Git, щоб інші розробники або середовища розгортання могли відтворити точне дерево залежностей і версії, що використовуються у проєкті. Це забезпечує узгодженість і дозволяє уникнути потенційних конфліктів або сюрпризів при роботі з залежностями.

Також буде створено новий каталог node_modules, який буде автоматично створено і заповнено за допомогою операції init. Цей каталог є місцем зберігання усіх пакетів і модулів, від яких залежить наш проєкт. Коли ви встановлюєте пакети за допомогою npm install, завантажені пакети будуть розміщені у цьому каталозі.

npm автоматично вирішує і встановлює необхідні залежності кожного пакета. Він створює ієрархічну структуру в каталозі node_modules, яка відображає дерево залежностей вашого проєкту.

Запустити сервер дуже просто:

node server.js

Щоб переглянути цей сайт, відкрийте браузер і відкрийте URL-адресу застосунку, використовуючи порт 3000. Якщо ваш браузер знаходиться на тій самій машині, що і сервер Node, адреса буде виглядати так:

localhost:3000

Звісно, Node.js потрібен не лише для цього. Цінність Node.js полягає у створенні інтерактивних можливостей для користувача шляхом інтеграції з внутрішньою базою даних. Це можна зробити за допомогою Express.js.

Підбиваємо підсумки

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

Джерело: What is Node.js? Server-Side JavaScript Development Basics
Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Коментарі (3)
  1. leofun01
    Node.js дозволяє розробникам використовувати JavaScript як на стороні клієнта, так і на стороні сервера

    Точніше: Node.js дозволяє розробникам використовувати JavaScript на сервері. Про JavaScript на стороні клієнта ми не можемо стверджувати хоча би щось. Бо все що відбувається на стороні клієнта це поза контролем розробників.

    1 рік тому ·
    0
Щоб залишити коментар необхідно авторизуватися.

Вхід