Пошук уроків, статей та іншого контенту
Розглянемо Node.js, його ключові можливості та типові сценарії використання на сервері й поза браузером.
Node.js — це середовище виконання JavaScript поза браузером. Воно дає змогу запускати JavaScript на сервері, у командному рядку та в інших програмах.
Зазвичай JavaScript асоціюють із вебсторінками:
браузер завантажує HTML;
JavaScript змінює сторінку та реагує на дії користувача;
код виконується на комп’ютері користувача.
Node.js використовує JavaScript без браузера. Наприклад, програма на Node.js може:
приймати HTTP-запити від клієнтів;
працювати з файлами;
підключатися до бази даних;
створювати API;
обробляти команди в терміналі;
виконувати фонові завдання.
Node.js — це не окрема мова програмування і не фреймворк. Це середовище, у якому виконується JavaScript.
В основі Node.js лежить JavaScript-рушій V8, який використовується у браузері Google Chrome. Node.js доповнює V8 можливостями для роботи з операційною системою та мережею.
Наприклад, у браузері JavaScript не має довільного доступу до файлів на комп’ютері користувача з міркувань безпеки. У Node.js можна використовувати вбудовані модулі для:
читання та запису файлів;
створення HTTP-сервера;
роботи з мережевими з’єднаннями;
взаємодії з операційною системою;
обробки шляхів до файлів.
Node.js особливо добре підходить для програм, які часто очікують на завершення операцій введення-виведення: запитів до бази даних, HTTP-запитів або читання файлів.
Під час роботи із зовнішніми ресурсами Node.js не обов’язково зупиняє виконання всієї програми. Він може передати операцію системі, а після її завершення виконати відповідний код.
Наприклад:
програма починає читати файл;
Node.js не чекає завершення читання, блокуючи весь процес;
виконується інший доступний код;
після читання запускається функція, яка обробляє результат.
Такий підхід дає змогу одному процесу обробляти багато одночасних запитів. Однак важкі обчислення, які надовго займають процесор, можуть блокувати виконання інших операцій.
Одна з найпоширеніших ролей Node.js — запуск серверних програм.
Серверна програма може:
прийняти запит від браузера або іншого клієнта;
перевірити дані;
звернутися до бази даних;
виконати потрібну логіку;
повернути відповідь.
Наприклад, сервер може повернути JSON із даними про користувача або HTML-код вебсторінки.
Node.js має вбудований модуль http, тому для простого сервера не потрібна додаткова бібліотека.
Створимо файл server.js:
const http = require('node:http');
const server = http.createServer((request, response) => {
response.statusCode = 200;
response.setHeader('Content-Type', 'text/plain; charset=utf-8');
if (request.url === '/about') {
response.end('Це сторінка про наш застосунок');
return;
}
response.end('Вітаємо на сервері Node.js');
});
const port = 3000;
server.listen(port, () => {
console.log(`Сервер запущено: http://localhost:${port}`);
});Запустіть програму командою:
node server.jsПісля цього відкрийте в браузері:
http://localhost:3000
http://localhost:3000/about
Для першої адреси сервер поверне:
Вітаємо на сервері Node.jsДля другої:
Це сторінка про наш застосунокРозглянемо основні частини прикладу:
require('node:http') підключає вбудований модуль для HTTP;
http.createServer(...) створює сервер;
request містить інформацію про вхідний запит;
response використовується для формування відповіді;
response.statusCode задає HTTP-статус;
response.setHeader(...) задає заголовок відповіді;
response.end(...) завершує відповідь і надсилає її клієнту;
server.listen(...) запускає прослуховування порту.
Щоб зупинити сервер, натисніть Ctrl + C у терміналі.
Node.js часто використовують для створення API. API приймає запити від вебсайту, мобільного застосунку або іншого сервера та повертає дані.
Наприклад, API може мати такі операції:
отримати список товарів;
створити нове замовлення;
авторизувати користувача;
оновити профіль;
видалити запис.
Node.js відповідає за серверну частину: маршрутизацію запитів, перевірку даних і взаємодію з базою даних.
На Node.js можна реалізовувати серверну частину повноцінних вебзастосунків. Сервер може:
віддавати файли клієнтської частини;
формувати HTML;
обробляти форми;
зберігати дані;
керувати доступом користувачів.
Node.js дає змогу створювати програми, які запускаються з термінала. Наприклад:
інструменти для розробників;
генератори файлів;
програми для перевірки коду;
скрипти для автоматизації повторюваних дій.
Такі програми не потребують браузера. Користувач запускає їх командою, а програма читає аргументи, обробляє дані та виводить результат.
Node.js може використовуватися для програм, які:
регулярно виконують певну операцію;
обробляють повідомлення;
взаємодіють з іншими сервісами;
передають дані через мережу.
Вибір Node.js залежить від завдання. Для інтенсивних обчислень, які постійно навантажують процесор, можуть краще підходити інші підходи або технології.
У браузері та Node.js використовується JavaScript, але доступні можливості відрізняються.
| Браузер | Node.js | |---|---| | Працює з вебсторінкою через DOM | Працює з файлами, мережею та операційною системою | | Має window і document | Має модулі Node.js та глобальний об’єкт process | | Код обмежений правилами безпеки браузера | Код запускається як звичайна програма на сервері або комп’ютері | | Реагує на дії користувача на сторінці | Обробляє запити, команди та серверні події |
Код, написаний для браузера, не завжди можна без змін виконати в Node.js. Наприклад, у Node.js немає об’єкта document, тому код на кшталт document.querySelector(...) там не працюватиме.
І навпаки, код Node.js, який читає файли або запускає HTTP-сервер, не можна просто виконати в браузері.
Після встановлення Node.js у терміналі стають доступними команди:
node --versionВона показує версію Node.js.
Щоб виконати файл JavaScript, використовуйте:
node ім'я-файлу.jsНаприклад:
node server.jsNode.js запускає файл і виконує його зверху вниз. Якщо програма створює сервер або очікує на інші події, процес продовжує працювати після завершення початкового коду.
Node.js часто обирають через такі властивості:
JavaScript на сервері. Одну мову можна використовувати для клієнтської та серверної частин застосунку.
Асинхронна робота з введенням-виведенням. Програма може ефективно обробляти багато мережевих запитів.
Велика екосистема. Для Node.js існує багато готових пакетів та інструментів.
Кросплатформність. Програми можуть працювати в різних операційних системах.
Зручний запуск. JavaScript-файли можна виконувати без браузера однією командою.
Водночас Node.js не є найкращим рішенням для кожного завдання. Вибір технології залежить від вимог до програми, характеру навантаження та команди розробників.
JavaScript — це мова програмування, а Node.js — середовище її виконання.
Правильніше сказати:
«Програма написана JavaScript і запускається в Node.js».
window або documentЦі об’єкти належать браузерному середовищу. У Node.js їх немає.
Для роботи з сервером потрібно використовувати можливості Node.js, а не браузерний DOM API.
Якщо сервер отримав запит, він має завершити відповідь за допомогою response.end(...). Інакше клієнт може нескінченно чекати на результат.
Node.js добре працює з мережевими операціями та іншими задачами введення-виведення. Але довге синхронне обчислення може заблокувати обробку інших запитів.
Звичайний запуск через node server.js не перезапускає програму після зміни файлу. Для цього процес потрібно зупинити та запустити знову або використовувати спеціальний інструмент розробки.
Node.js — середовище виконання JavaScript поза браузером.
Воно використовує рушій V8 і надає доступ до можливостей операційної системи та мережі.
Node.js підходить для серверів, API, командних програм і мережевих завдань.
Вбудований модуль http дає змогу створити простий вебсервер без додаткових бібліотек.
Node.js і браузер мають спільну мову — JavaScript, але різні доступні API.
Node.js ефективно працює з операціями введення-виведення, але важкі синхронні обчислення можуть блокувати процес.