Я создаю сайт с экспресс-использованием рулей для механизма шаблонов.
В этом проекте я хочу дать пользователям возможность изменять HTML-код окончательных представлений ..
Если пользователь указывает пользовательский HTML-код для просмотра, мы сохраняем полный HTML-файл в базе данных и используем его при загрузке страницы.
Итак, мне нужно использовать две схемы для рендеринга vews:
1.- Нормальная схема рулей (просто укажите путь к файлу .hbs)
2. -Пропустите HTML-строку и отрендерите ее.
Это мой ожидаемый код:
router.get('/products/:product_slug', function(req, res, next) {
//Get custom html from db
var CustomHtml?getCustomHtml():false;
Product.find(function(err, products){
if(CustomHtml){
//How can I print the custom html¿?¿?¿?
res.renderHTMLSTRING(CustomHtml, { title: 'Mondo', products: products });
}else{
//Default behaviour of hbs
res.render('default/product/index', { title: 'Mondo', products: products });
}});});
Обновление 1:
Я нашел следующий код для рендеринга шаблона в контроллере, а затемсделать res.send ().
var handlebars = require('handlebars');
// set up your handlebars template
var source = '{{ a }}';
// compile the template
var template = handlebars.compile(source);
// call template as a function, passing in your data as the context
var outputString = template({ a: 'B' });
and then send the output to the client
res.send(outputString);
Но проблема в том, что я хочу указать макет.Мне нужны заголовок, нижний колонтитул, статические файлы и просто изменить тело, которое я настроил ранее.
Любое предложение¿?Спасибо!Метки