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文件工作起来很慢?但由于模板函数都是匿名的,我怎么能连接或以某种方式有效地使用它们呢?
检查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)
| 归档时间: |
|
| 查看次数: |
2954 次 |
| 最近记录: |