@dmitriu256

Как сделать динамичный шаблон на expressjs?

Вопрос назрел очень давно, тк всегда остается вопрос что дальше?, и всегда на одном и том же этапе
И так суть
Что хочу получить:
- каждая секция независима и получает данные из БД по отдельному маршруту
- для каждой секции есть свои данные и связи между таблицами
(/features, /clients, /products...)

Как грамотно создать динамический шаблон сайта (для примера взял лендинг) именно под nodejs-express
Стек технологий: верстка далее серверная часть на expressjs mysql--- шаблонизатор ejs (пробовал разные модификации).
Разрезаю статический шаблон (по секциям) одна секция отдельный под шаблон(статический), далее в index.ejs
связываю все воедино.
<%- include('layout/head'); -%>

<%- include('navigation'); -%>
<!-- /.navigation -->

<%- include('header'); -%>
<!-- END HEADER -->

<%- include('main'); -%>
<!-- /#main.main -->
<%- include('features'); -%>
<!-- /#features.features -->


Как сделать каждую секцию динамической, данные беру из mysql(под каждую секцию своя таблица с данными и тд).

Как правильно это реализовать?
1) Для каждой секции создать свой GET запрос и делать обращение к серверу через ajax? как по мне не очень разумное решение, особенно если есть множество секций.
2) Создать единый запрос к бд на корневом маршруте - если данных очень мало то сойдет, однако очень плохое решение.

3) Создать отдельные GET запросы (для каждой секции) и при помощи к примеру Angular фреймворка ссылаться на эти маршруты в формате JSON?

const connection = mysql.createPool({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'bd_cardboard'
});


app.set("view engine", "ejs");
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.use(express.static(__dirname + '/public'));

/*Routing*/

app.get('/', function(req,res){
    res.render('index');
});

app.get('/features', function(req,res){
    connection.query('SELECT features.title, features.descr, features.photo_id, photos.path, photos.category, photos.exp, photos.altText FROM features\n' +
        'INNER JOIN photos WHERE features.photo_id = photos.id;', function(err, rows){
        if(err) throw new  Error;
        res.json(rows);
    });
});


Буду благодарен за Вашу помощь! Очень хочу в этом вопросе разобраться!
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы