Я новичок в узле и пытаюсь найти способ интегрировать усы таким образом, чтобы он был гибким для того, как я создаю шаблоны. Пробовав хоган, усы-экспресс и другие перестановки усов, я нашел для меня смысл.- это идеальная функция частичных усов node.js?
Я не уверен, есть ли более эффективный способ обращения с этим. В принципе, мне нравится управлять частичными шаблонами, чтобы я мог загружать их в позиции модулей в главном шаблоне. Итак, это базовая настройка.
У меня есть 3 частичных шаблона и один шаблон-обертка/мастер, следующие значения приведены, например.
./views/wrapper.tpl
<html>
<title>{{ title }}</title>
<body>
<h1>{{ heading }}</h1>
<div>{{> position_1 }}</div>
<div>{{> position_2 }}</div>
<div>{{> position_3 }}</div>
</body>
</html>
./views/module_1.tpl
<h2>{{module_1.title}}</h2>
<p>{{module_1.body}}</p>
./views/module_2.tpl
<h2>{{module_2.title}}</h2>
<p>{{module_2.body}}</p>
./views/module_3.tpl
<h2>{{module_3.title}}</h2>
<p>{{module_3.body}}</p>
Im используя Экспресс, кроме удаленных нефрита по умолчанию движок рендеринга. Я включил только код, который нужно добавить к экспресс-установке по умолчанию. усов и фс необходимы
.
.
.
var mustache = require('mustache');
var fs = require('fs');
.
.
.
app.get('/', function(req, res){
// grab master template
var wrapper = fs.readFileSync('./views/wrapper.tpl', "utf8");
// load data that will be used in template & partials
var data = {
'title': 'dashboard',
'heading': 'welcome to your dashboard',
'module_1':{
'title': 'module 1 title',
'body': 'module 1 body'},
'module_2':{
'title': 'module 2 title',
'body': 'module 2 body'},
'module_3':{
'title': 'module 3 title',
'body': 'module 3 body'}};
// load partial templates
var partials = {'position_1': fs.readFileSync('./views/module_1.tpl', "utf8"),
'position_2': fs.readFileSync('./views/module_2.tpl', "utf8"),
'position_3': fs.readFileSync('./views/module_3.tpl', "utf8")}
// include partials and then replace variables with given data
var html = mustache.to_html(wrapper, data, partials);
// send output to browser
res.send(html);
});
.
.
.
.
мне это делает много больше смысла, чем другие примеры, которые я видел, и он хорошо работает с усами. Я могу дать пользователю пользовательский контроль относительно того, где они хотят, чтобы модули были расположены. Так что мои вопросы:
Есть ли более эффективный способ сделать это?
Есть ли что-то не так с тем, как я об этом?
Обходя возможности экспресс-рендеринга, чего я пропускаю?
Почему я должен использовать библиотеки, например, консолидировать и добавлять еще один слой для выражения?
Спасибо!