Рендеринг 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>

Смотрите мой ответ здесь

Другие вопросы по тегам