Створення і запуск проекту Express.js із ServBay
Що таке Express.js?
Express.js — це швидкий, відкритий та мінімалістичний веб-фреймворк на базі Node.js. Він надає потужний набір функцій для розробки односторінкових, багатосторінкових і гібридних веб-додатків. Express.js — один із найпопулярніших фреймворків у екосистемі Node.js, який цінують розробники за його простоту й гнучкість.
Основні особливості та переваги Express.js
- Простий і гнучкий: Express.js має лаконічний API і гнучку систему middleware, що значно спрощує розробку веб-додатків.
- Middleware: Підтримує безліч middleware для легкого оброблення запитів та відповідей (наприклад, парсинг тіла запиту, сесії, статичні файли тощо).
- Маршрутизація: Потужна система маршрутів, яка дозволяє обробляти запити відповідно до методу HTTP (GET, POST, PUT, DELETE тощо) та шляху URL.
- Легка інтеграція: Express.js легко інтегрується із шаблонізаторами (Pug, EJS, Handlebars), базами даних (MongoDB, MySQL, PostgreSQL) та іншими модулями для Node.js.
- Сильна спільнота та екосистема: Потужна спільнота, багатство сторонніх middleware та плагінів — ви легко знайдете відповіді й ресурси у разі виникнення складнощів.
Express.js дозволяє швидко створювати високопродуктивні веб-додатки та API. Середовище ServBay — це потужний локальний інструмент для web-розробки, який надає оптимізоване Node.js-середовище разом із інструментами управління сайтами (зворотний проксі) та базами даних для ваших Express.js проєктів.
Створення і запуск Express.js-проєкту в ServBay
У цій інструкції ви дізнаєтесь, як створити, налаштувати й запустити Express.js-проєкт із використанням Node.js-середовища від ServBay. Ми задіємо функцію сайтів ServBay для створення веб-сервера та налаштування доступу до проєкту через зворотний проксі. Такий підхід особливо корисний для сервісів на Node.js, Python, Go, Java тощо, які працюють на власних портах.
Що потрібно підготувати
Перш ніж почати, переконайтесь, що:
- Ви вже встановили ServBay на macOS.
- У ServBay встановлений та увімкнений потрібний Node.js-пакет. Вибір і активація здійснюється на вкладці "Пакети" у панелі керування ServBay.
- (Необов’язково) Якщо плануєте працювати з базою даних, впевніться, що встановлено і активовано відповідний пакет бази даних (MariaDB, PostgreSQL, MongoDB, Redis, MySQL).
- Ви володієте базовими навичками роботи у терміналі або командному рядку.
Створення проекту Express.js
Ініціалізуйте проект
Відкрийте термінал, перейдіть у рекомендовану директорію сайтів ServBay
/Applications/ServBay/www
. Далі використайте командуnpx express-generator
, щоб швидко створити каркас проєкту Express.js.npx
— інструмент, доступний у npm v5.2+ для виконання команд з Node.js-пакетів.bashcd /Applications/ServBay/www npx express-generator servbay-express-app
1
2У результаті буде створено нову папку
servbay-express-app
у/Applications/ServBay/www
з базовою структурою проєкту.Встановіть залежності проекту
Перейдіть до папки
servbay-express-app
та встановіть залежності за допомогоюnpm install
. Це додасть Express.js і всі необхідні пакети для типового стартового проєкту (шаблонізатор, статичні файли тощо).bashcd servbay-express-app npm install
1
2Дочекайтеся завершення встановлення пакетів.
Зміна вмісту головної сторінки Express.js-проєкту
Щоб перевірити роботу проекту, змінимо вивід головної сторінки за замовчуванням.
Редагуйте файл
routes/index.js
Express.js зазвичай використовує окремі файли маршрутів для обробки різних URL. Відкрийте
routes/index.js
у вашому проєкті. Цей файл відповідає за GET-запити до кореня (/
). Замініть рендеринг шаблону Pug на просту відповідь текстом.javascriptvar express = require('express'); var router = express.Router(); /* GET home page. */ router.get('/', function(req, res, next) { // Змінити на відправку текстової відповіді res.send('Hello ServBay!'); }); module.exports = router;
1
2
3
4
5
6
7
8
9
10Збережіть зміни.
Перехід у режим розробки
Під час розробки ми запускаємо локальний сервер, щоб відразу бачити результат змін. Для цього достатньо скористатися npm start
.
Запуск локального сервера
В директорії проєкту
servbay-express-app
виконайте команду для запуску сервера. Задаємо порт (8585
) через зміннуPORT
, аDEBUG
— для логування відлагоджувальної інформації.bashcd /Applications/ServBay/www/servbay-express-app PORT=8585 DEBUG=servbay-express-app:* npm start
1
2У терміналі має з’явитись інформація про запуск та прослуховування порту
8585
.Налаштуйте зворотний проксі (Reverse Proxy) у ServBay
Оскільки програма працює на порту 8585, а не 80/443, потрібно налаштувати сайт у ServBay як зворотний проксі. Веб-сервер ServBay (за замовчуванням це Caddy) слухає стандартні порти (80/443) і може переспрямувати запити до Express.js на порт
127.0.0.1:8585
.В панелі керування ServBay відкрийте вкладку "Сайти" й натисніть "Створити сайт". Заповніть так:
- Ім’я:
My first Express.js dev site
(довільне, для ідентифікації) - Домен:
servbay-express-test.servbay.demo
(доменної зони.servbay.demo
достатньо для автоматичної підтримки HTTPS завдяки локальному CA) - Тип сайту:
Зворотний проксі
- IP-адреса:
127.0.0.1
(абоlocalhost
) - Порт:
8585
Після збереження й застосування змін ServBay автоматично налаштує web-сервер, а також згенерує SSL-сертифікат для домену
.servbay.demo
.Детальні кроки див. у інструкції з додавання Node.js-сайтів у документації ServBay.
- Ім’я:
Відкрийте сайт у браузері
Відкрийте браузер і перейдіть за адресою
https://servbay-express-test.servbay.demo
. Веб-сервер ServBay прийме запит і через зворотний проксі передасть його Express.js-проєкту на порт 8585. Ви повинні побачити "Hello ServBay!".Завдяки підтримці користувацьких доменів і безкоштовних SSL-сертифікатів (включно з автоматичним HTTPS для .servbay.demo) ви можете легко розробляти локальні білди із захищеним HTTPS-доступом подібно до production-середовища.
Деплой та запуск у prod-режимі
Завершивши розробку, ви захочете протестувати проект у ближчому до "бойового" середовищі.
Налаштуйте production-режим
У production середовищі для Express.js важливо вказати змінну
NODE_ENV=production
, що впливає на працездатність і оптимізації деяких пакетів (наприклад, вимкнення DEBUG, покращення продуктивності). Переконайтесь, що додаток правильно налаштовується на цю змінну.Запустіть сервер у production-режимі
У корені проєкту виконайте команду для старту сервера на іншому порту (наприклад, 8586), з відповідним env:
bashcd /Applications/ServBay/www/servbay-express-app PORT=8586 NODE_ENV=production npm start
1
2Сервер повідомить про запуск на порту 8586.
Створіть новий сайт зі зворотним проксі для production-версії
Аналогічно розробці, у ServBay створіть ще один сайт зі зворотнім проксі для production.
- Ім’я:
My first Express.js production site
- Домен:
servbay-express-test-prod.servbay.demo
(або будь-який інший для імітації production) - Тип:
Зворотний проксі
- IP:
127.0.0.1
- Порт:
8586
Збережіть і застосуйте зміни.
- Ім’я:
Відкрийте production-сайт у браузері
Перейдіть до
https://servbay-express-test-prod.servbay.demo
у браузері. Ви потрапите на продакшн-версію проєкту, що допоможе імітувати production-середовище та протестувати ваш додаток "на фінал".
Підключення баз даних
ServBay підтримує різноманітні дискові сховища та кеші — MariaDB, PostgreSQL, MongoDB, Redis (у вигляді пакетів). Якщо певний пакет активовано, Express.js-додатки можуть підключатись напряму з типовими налаштуваннями (наприклад, логін root/пароль password
для MariaDB/MySQL, користувач user
/пароль password
/БД servbay_default
для PostgreSQL). Подивіться налаштування у GUI ServBay або скористайтесь типово заданими параметрами.
Далі — приклади підключення до різних баз даних із Express.js. Адекватний драйвер встановіть через npm install <package-name>
.
Підключення до MongoDB
Встановіть драйвер mongoose:
bashnpm install mongoose
1Додайте підключення у ваш проект (наприклад, в
app.js
чи окремому файлі з налаштуваннями БД):javascriptvar mongoose = require('mongoose'); // Підключення до локальної MongoDB (БД: servbay-express-app) // За замовчуванням у ServBay MongoDB не потребує авторизації mongoose.connect('mongodb://localhost/servbay-express-app', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('Connected to MongoDB')) .catch(err => console.error('MongoDB connection error:', err));
1
2
3
4
5
6
7
8
9
10Перевірте, чи активний пакет MongoDB у ServBay.
Підключення до Redis
Встановіть клієнт redis:
bashnpm install redis
1Додайте підключення у проект:
javascriptvar redis = require('redis'); // За замовчуванням, Redis на localhost:6379, без пароля var client = redis.createClient({ host: 'localhost', port: 6379 }); client.on('connect', function() { console.log('Connected to Redis'); }); client.on('error', function (err) { console.log('Redis Error: ' + err); }); // Приклад: встановлення й отримання значення // client.set('mykey', 'Hello from Express!', redis.print); // client.get('mykey', function(err, reply) { // if (err) throw err; // console.log(reply); // Виведе "Hello from Express!" // }); // Надалі використовуйте об'єкт client для роботи з Redis
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23Не забудьте активувати Redis у ServBay.
Підключення до MariaDB / MySQL
ServBay підтримує MariaDB і MySQL. Підійдуть бібліотеки
mariadb
абоmysql2
. Нижче приклад дляmariadb
:Встановіть потрібний NPM-пакет:
bashnpm install mariadb # або npm install mysql2
1Підключайтесь із типовими даними (root/
password
). Базу данихservbay_express_app
спочатку створіть через інтерфейс (phpMyAdmin, Adminer, тощо).javascriptvar mariadb = require('mariadb'); // MariaDB/MySQL: localhost:3306 var pool = mariadb.createPool({ host: 'localhost', port: 3306, // Стандартний порт user: 'root', password: 'password', database: 'servbay_express_app', // Створіть цю БД у ServBay connectionLimit: 5 }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB/MySQL"); // conn використовуйте для виконання запитів // conn.query("SELECT 1").then(...).catch(...).finally(() => conn.release()); conn.release(); }) .catch(err => { console.log("Not connected due to error: " + err); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Не забудьте активувати відповідний пакет у ServBay.
Підключення до PostgreSQL
Спершу встановіть клієнтський модуль
pg
:bashnpm install pg
1Підключайтесь з такими налаштуваннями (user:
user
, пароль:password
, БД:servbay_default
):javascriptvar { Pool } = require('pg'); // PostgreSQL: localhost:5432 var pool = new Pool({ user: 'user', host: 'localhost', database: 'servbay_default', password: 'password', port: 5432, }); pool.connect((err, client, done) => { if (err) { console.error('PostgreSQL connection error:', err); return; } console.log('Connected to PostgreSQL'); // client для виконання запитів // client.query('SELECT NOW()', (err, res) => { ... done(); }); done(); }); // Або через async/await: // try { // const client = await pool.connect(); // console.log('Connected to PostgreSQL'); // // const res = await client.query('SELECT NOW()'); // // console.log(res.rows[0]); // client.release(); // } catch (err) { // console.error('PostgreSQL connection error:', err); // }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31Переконайтесь, що PostgreSQL-пакет увімкнено у ServBay.
Підсумок
Дотримуючись цієї інструкції, ви змогли створити, налаштувати та запустити Express.js-проєкт у середовищі ServBay. Отже, ви навчились:
- Ініціалізувати проект через
express-generator
. - Запускати Express.js-додаток на заданому порту.
- Налаштовувати зворотний проксі у сайтах ServBay й отримувати доступ через стандартні HTTP/S-порти.
- Підключати різні популярні бази даних у локальному середовищі ServBay.
ServBay значно спрощує налаштування й адміністрування локального середовища розробки (у тому числі для Node.js/Express.js), дозволяючи вам більше уваги зосереджувати на коді. Додаткові можливості, як-от автоматичне SSL, бекапи, перегляд логів тощо, ще більше підсилюють ваш локальний dev-процес.