如何在dot.js模板引擎中包含页眉、页脚

How to include headers, footers in dot.js templating engine?

本文关键字:包含页 页脚 引擎 dot js      更新时间:2023-09-26

我想我所要做的(根据git hub上的文档(就是把{{#def.loadfile('/snippet.txt')}}放进我的模板中,这样它就会看起来像这样:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset='utf-8'>
        <title>Data</title>
        <link href="/css/style.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
        {{#def.loadfile('/views/includes/header.txt')}}
        <section>
            {{~it.arrOut:value:index}}
                {{=value}}!
            {{~}}
        </section>
    </body>
    </html>

但它似乎不起作用。我甚至试着用doT.js导入,但仍然一无所获。我得到的只是"内部服务器错误",如果你能在dot.js上制作包含文件的工作,请分享你的知识。我喜欢这个漂亮的引擎,但它的文档没有那么漂亮。

我不知道它是否适用于您,但在nodejs上,使用expressjs和express-dot.js,我所做的是定义加载文件:

在app.js 中

var doT = require('express-dot');
doT.setGlobals({
    loadfile:function(path){return fs.readFileSync(__dirname + path, 'utf8');}
});

在index.dot:中

{{#def.loadfile('/views/_submit_form.html')}}

基本上,它将loadfile添加为一个函数,该函数在dotjs的"def"对象中获取路径并输出字符串。

您当然可以根据您的特定需求进行调整和增强

我很确定doT正在寻找与当前文件从同一目录开始的includes。假设当前模板在视图中,我认为只需从路径中删除"/views"就可以了。。。