У меня есть несколько продуктов, и я хотел бы динамически создавать маршрут для каждого из них, поэтому, когда я добавляю продукт в CMS, который я выполняю вызовом API для получения JSON, он автоматически создает страницу, а не кодирует ее вручную.
Выражать:
var scopedEntries;
//get contentful entries
client.getEntries() //get entries
.then(function (entries){
scopedEntries = entries; //assigning globally to later pass into routes
console.log(entries.items[0].fields.companyName); //log data
}); // end of promise
router.get('/test:id', function (req, res) {
//console.log(scopedEntries);
res.render('test' + req.params.id, {
entries: scopedEntries
});
});
Пример шаблона:
<html>
<head>
<title>TEST APP</title>
</head>
<body>
<h1><%= entries.items[0].fields.companyName %></h1>
<h2><%= entries.items[1].fields.productName %></h2>
<p>Description: <%= entries.items[1].fields.productDescription %></p>
<p>Size: <%= entries.items[1].fields.sizetypecolor %></p>
<p>Price: <%= entries.items[1].fields.price %></p>
<p>SKU: <%= entries.items[1].fields.productDescription %></p>
<img src="<%= entries.includes.Asset[0].fields.file.url %>" alt="" />
</body>
</html>
Поэтому в идеале для каждого элемента в ответе JSON есть страница, которая динамически создается с использованием EJS в экспресс-маршруте. Как бы мне сделать это правильно.
Кроме того, JSON не является окончательным JSON. Схема еще не полностью заполнена, поэтому мне нужно будет адаптировать ее к моему дереву.
/product/view/:productName. или/product/view/:productIDи иметь один обработчик маршрута, который обрабатывает все ваши продукты. Если кто-то введет несуществующий productName или productID, вы просто сделаете красивую страницу 404. - person jfriend00   schedule 08.03.2017res.render(), и механизм шаблонов использует эти данные для построения страницы из шаблона, включая ваши данные в то место, где шаблон говорит поместить данные. Таким образом, вы берете входящий продукт, указанный в URL-адресе, ищете кучу данных о нем, а затем передаете все эти данные вres.render()вместе с именем шаблона. Так работают шаблоны Express. - person jfriend00   schedule 08.03.2017