服务客户端Jade模板

Jie*_*eng 4 node.js express backbone.js marionette pug

我想在客户端使用Backbone的Jade模板.我怎样才能做到这一点?

目前,我已成功配置Backbone(Marionette)来编译Jade模板,以便在其视图中使用:

Marionette.TemplateCache.prototype.compileTemplate = (tmplStr) ->
    console.log "jade stuff: ", jade.compile(tmplStr)
    return jade.compile(tmplStr)
Run Code Online (Sandbox Code Playgroud)

"问题"是:我目前正在编写以下模板:

script(type="text/template", id="tmplMainView")
    | h1= title
    | p= content
Run Code Online (Sandbox Code Playgroud)

注意那些管道(|)是为了防止Jade在服务器端尝试解释/解析它们.我怎样才能消除这些?

UPDATE

也许我可以使用jade --client标志......但是它提供了一个编译函数:例如

h1= title
Run Code Online (Sandbox Code Playgroud)

function anonymous(locals, attrs, escape, rethrow, merge) {
attrs = attrs || jade.attrs; escape = escape || jade.escape; rethrow = rethrow || jade.rethrow; merge = merge || jade.merge;
var buf = [];
with (locals || {}) {
var interp;
buf.push('<h1>');
var __val__ = title
buf.push(escape(null == __val__ ? "" : __val__));
buf.push('</h1>');
}
return buf.join("");
}
Run Code Online (Sandbox Code Playgroud)

这意味着每个模板必须有1个Jade /编译JS?我怎么用它?另外我认为很多JS文件工作起来很慢?但由于模板函数都是匿名的,我怎么能连接或以某种方式有效地使用它们呢?

Fel*_*tro 6

检查ClientJade项目.

从他们的网站:

clientjade是一个命令行工具,用于将您的jade模板编译为客户端模板,以便在浏览器中使用.它将自动包含呈现模板所需的一切,无需包含jade.js或runtime.js.

$ clientjade test1.jade test2.jade > templates.js
Run Code Online (Sandbox Code Playgroud)

然后在你的html中包含template.js文件.要渲染模板,只需进行如下调用:

//jade.render(domNode, templateName, data);    
jade.render(document.getElementById('test1'), 'test1', { name: 'Bob' });
Run Code Online (Sandbox Code Playgroud)