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>

шаблон страницы ошибка 404

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