У меня есть веб-приложение на NodeJS и PUG / Jade. Я хочу отделить логи c приложения, контролируемого разработчиком, от текстового контента, контролируемого маркетологом и переводчиками, сохраняя при этом весь исходный код интегрированным. (Я спросил о способах этого разделения здесь и не получил ответов на момент написания этой статьи).
Для Engli sh я использую JSON объект en.json
с:
{
"404": {
"notFound": "Page not found"
}
}
контроллер загружает его с помощью:
let localText = require('./en.json');
res.status(404).render('404', {
text: localText
});
и представление отображает его с помощью:
h1 #{text['404'].notFound}
Я хотел бы включить ссылки в JSON Объект, такой как:
{
"404": {
"notFound": "Page not found. Go to <a href=\"www.twitter.com\">Twitter</a>, maybe?"
}
}
NodeJS отображает страницу с исходным кодом, а не со ссылкой. Я временно исправил это, разделив его на три части:
{
"404": {
"notFound1": "Page not found. Go to",
"notFound2": "Twitter",
"notFound3": ", maybe?"
}
}
и вид:
h1 #{text['404'].notFound1} #[a(href="www.twitter.com") #{text['404'].notFound2}] #{text['404'.notFound3}
И теперь стало трудно поддерживать.
I из этой страницы понять, что я мог бы создать фильтр для предварительной обработки всех ссылок, например:
options.filters = {
'my-own-filter': function (text) {
text = text.replace("Twitter", "<a href=\"www.twitter.com\">Twitter</a>")
/* all other replacements */
return text;
}
};
Я не смог найти способ передачи таких параметров фильтра в веб-приложение, чья единственная строка PUG - app.set('view engine', 'pug');
.
Как я могу предварительно обработать простой текст с помощью NodeJS и Jade, чтобы заполнять ссылки и красиво отображать их пользователю браузера?