October 30, 2023
Шаблонизатор ejs
//index.js
const express = require('express');
const app = express();
const path = require('path');
const readline = require('readline');
// Устанавливаем папку для хранения шаблонов
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
// Маршрут для загрузки шаблона
app.get('/', (req, res) => {
res.render('index', { name: 'John' }); // Рендерим шаблон index.ejs с данными
});
// Запускаем сервер
// Ожидание команды из консоли для выключения сервера
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('SIGINT', function () {
console.log('Сервер остановлен');
process.exit();
});
// Запуск сервера
const port = 3003;
app.listen(port, function() {
console.log(`Сервер запущен на порту ${port}`);
});
<!-- views/index.ejs--> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>EJS Пример</title> </head> <body> <h1>Привет, <%= name %>!</h1> </body> </html>
<!-- views|404.ejs --> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Error</title> </head> <body> <h1>Error 404</h1> </body> </html>
Универсальный маршрутизатор с использованием sqlite3
const express = require('express');
const sqlite3 = require('sqlite3').verbose();
const path = require('path');
const app = express();
// Подключение к базе данных SQLite3
const db = new sqlite3.Database(':memory:'); // Или замените на путь к вашей базе данных SQLite3
// Создание таблицы "pages" в базе данных
db.serialize(() => {
db.run('CREATE TABLE IF NOT EXISTS pages (alias TEXT, template TEXT)');
});
// Настройка пути до папки views
app.set('views', path.join(__dirname, 'views'));
// Установка шаблонизатора EJS
app.set('view engine', 'ejs');
// Маршрут для отображения страницы по алиасу
app.get('/:alias', (req, res) => {
const alias = req.params.alias;
// Поиск страницы по алиасу в базе данных
db.get('SELECT template FROM pages WHERE alias = ?', [alias], (err, row) => {
if (err || !row) {
// Если страница не найдена, отобразить страницу 404
res.status(404).render('404');
} else {
// Отобразить соответствующий шаблон страницы
res.render(row.template);
}
});
});
// Обработчик для отображения главной страницы
app.get('/', (req, res) => {
// Обработка главной страницы, например, отображение шаблона "home"
db.get('SELECT template FROM pages WHERE alias = ?', ['/'], (err, row) => {
if (err || !row) {
// Если главная страница не найдена, отобразить страницу 404
res.status(404).render('404');
} else {
// Отобразить шаблон главной страницы
res.render(row.template);
}
});
});
// Обработчик для отображения страницы 404
app.use((req, res) => {
res.status(404).render('404');
});
app.listen(3000, () => {
console.log('Сервер запущен на порту 3000');
});