Есть вопрос, как сделать ту же задачу, по выводу новостей, без использования большого количества app.render(). Есть ли возможность использовать только один app.render()?
Код:
const express = require('express')
const app = express();
const hbs = require('handlebars')
const cons = require('consolidate');
const bodyParser = require('body-parser')
const urlencodedParser = bodyParser.urlencoded({ extended: false })
var yandex = {
newsOne: 'Новость 1',
newsTwo: 'Новость 2',
newsThree: 'Новость 3',
newsFour: 'Новость 4',
newsFive: 'Новость 5'
}
var lenta = {
newsOne: 'Новость 1',
newsTwo: 'Новость 2',
newsThree: 'Новость 3',
newsFour: 'Новость 4',
newsFive: 'Новость 5'
}
var tj = {
newsOne: 'Новость 1',
newsTwo: 'Новость 2',
newsThree: 'Новость 3',
newsFour: 'Новость 4',
newsFive: 'Новость 5'
}
app.engine('hbs', cons.handlebars)
app.set('view engine', 'hbs')
app.get('/', function(req, res) {
res.render('index', {})
})
app.post('/', urlencodedParser, function(req, res) {
if (req.body.news == 'yandex') {
console.log('Был получен запрос: Яндекс.Новости')
res.render('index', yandex)
} else if (req.body.news == 'lenta') {
console.log('Был получен запрос: Лента')
res.render('index', lenta)
} else if (req.body.news == 'tj') {
console.log('Был получен запрос: TJ')
res.render('index', tj)
}
})
app.listen('9000')
И есть hbs шаблон:
1. Это отвечает за выдачу новостей
<div id="getNews">
<p>
<p>{{newsOne}}</p>
<p>{{newsTwo}}</p>
<p>{{newsThree}}</p>
<p>{{newsFour}}</p>
<p>{{newsFive}}</p>
</p>
</div>
2. Это за выбор новостей:
<form id="input" method="post">
<p>Пожалуйста, выберите источник, с которого мы будем отправлять Вам новости:</p>
<div>
<input type="radio" id="yandex"
name="news" value="yandex" form="input">
<label for="yandex">Яндекс Новости</label>
<input type="radio" id="lenta"
name="news" value="lenta" form="input">
<label for="lenta">Лента</label>
<input type="radio" id="tj"
name="news" value="tj" form="input">
<label for="tj">TJ</label>
</div>
<div>
<button type="submit">Submit</button>
</div>
</form>