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'); });