проблема не выводит виджет (partial) в шаблон houme
houme
Добро пожаловать на сайт турфирмы
{{>weather}}
server
function getWeatherData(){
return {
locations: [{
name:'Protland',
forecatUrl: 'http://www.wunderground.com/US/OR/Portland.html',
iconUrl: 'http://..icons-ak.wxug.com/i/c/k/cloudy.gif',
weather:'Cloudy',
temp: '54.1 F (12.3 C)'
},
{
name: 'Band',
forecatUrl: 'http://www.wunderground.com/US/OR/Band.html',
iconUrl: 'http://..icons-ak.wxug.com/i/c/k/rain.gif',
weather:'Rain',
temp: '55.0 F (12.8 C)'
},
{
name: 'Minsanita',
forecatUrl: 'http://www.wunderground.com/US/OR/Minzanita.html',
iconUrl: 'http://..icons-ak.wxug.com/i/c/k/rain.gif',
weather:'Rain',
temp: '55.0 F (12.8 C)'
}]
};
}
//Виджет
app.use(function(req, res, next){
if (!res.locals.partials) res.locals.partials = {};
res.locals.partials.weatherContext = getWeatherData();
next();
});
views/partial/weather
**Это пример с учебника. Почему не работает не пойму. Шаблон с ссылкой выводит нормально все что находиться в блоке each вообще не выводит.
Ответ
Уххх, как весело:)
Вы используете шаблонный менеджер handlebars
Обычный пакет handlebars у Вас уже 99% стоит, но сверху еще надо сделать вот так
npm i hbs
Добавляем в какую-нибудь корневую для рэндэров middleware следующий код
const hbs = require('hbs'); // лучше вне middleware
// папка с partials!!
hbs.registerPartial('weather', fs.readFileSync(__dirname + '/../views/partials/weather.hbs', 'utf8'));
Обратите внимание на строку с путем - начинается со слеша, задается относительно файла, в котором находится.
После указанных выше манипуляций у меня Ваш пример, хоть чуть и упрощенный стартанул. Если Вам не удастся воспроизвести по этому ответу, выложу код на гит, или дополню ответ где надо.