Рендеринг def файла независимо в dot.js
Я включаю файл header.def в index.dot, используя фрагмент {{#def.header}}, и отображаю файл index.dot, используя следующий фрагмент.
var dotjs = require('dot');
var dots = dotjs.process({ path: "./views"});
app.get('/',function(request, response){
response.send(dots.index());
});
То, что я также хочу сделать, это сделать только заголовок на отдельном URL. Что-то вроде:
app.get('/header',function(request, response){
response.send(dots.header()); // header.def is not compiled to a dot.header function
});
1 ответ
Может быть, вы можете создать другой файл.def (например, "onlyHead.dot") и включить в него статический заголовок без чего-либо еще. Затем отправьте onlyHead.dot так же, как и вы.
Вы также можете использовать шаблонизатор, выполняя что-то вроде этого:
В основном приложении:
/* Template = doT*/
var dot = require("dot").process({
path: (__dirname + "/views")
});
// view engine setup using .dot files
app.engine('dot', function(template, options, cb){
return cb(null, dot[path.parse(template).name](options));
});
Затем в ваших представлениях вы можете отобразить это так (с router.get или, как у вас это с app.get):
app.get('/',function(request, response){
var myData = {
title : 'My title',
someData : 'My Data'}
response.render('index', myData);
});
Ваш шаблон index.dot может выглядеть примерно так:
{{#def.static}}
<h1>{{=it.title}}</h1>
<div>The requested data is: {{=it.someData}} </div>