我想将jade模板从服务器中的玉器模板传递给浏览器。
我的问题是,目前服务器正在解释玉模板......
以下是我宣布模板的方式:
script#entry-row(type='text/template')
tr
td= number
td= sum + '€'
td= description || ''
td= moment(date, 'YYYY-MM-DDTHH:mm:ss:SSSZ').format('dddd DD MMMM YYYY')
td
span.label= category
td
input(type='checkbox', disabled='disabled', checked=shared)
我找到的唯一解决方案是在行开头添加一个管道,但这不是一个好方法:
script#entry-row(type='text/template')
| tr
| td= number
| td= sum + '€'
| td= description || ''
| td= moment(date, 'YYYY-MM-DDTHH:mm:ss:SSSZ').format('dddd DD MMMM YYYY')
| td
| span.label= category
| td
| input(type='checkbox', disabled='disabled', checked=shared)
还有其他想法吗?
答案 0 :(得分:1)
我最近在这方面困扰了好几天,我找到了更好的解决方案。
您可以将jade partial模板重命名为html扩展名,并将其包含在主
中玉页。所以jade不会尝试在服务器端编译包含的部分,而你
在浏览器端获得了你想要的东西。
以下是我的示例编码:
的 index.jade:强> 的
extends layout
block content
.container
.header
a= title
.input-append
input.input-medium(type="text", placeholder="电子邮箱")
button.btn(id='subscribe') 订阅
.clear
.row-fluid
.span8
ul.tweets
.span3
ul.users
script#tweet-template(type='template')
include templates/tweet.html
和部分 templates / tweet.html
li
.media
img.pull-left(src=tweet.user_img)
.media-body
h5.media-heading= tweet.user_name
p.text
span #{tweet.text}
- if (tweet.pic_name != '') {
br
img.img-polaroid(src='/images/tweets/' + tweet.pic_name + '_thumb.jpg', class='thumb_img')
img.img-polaroid(src='/images/tweets/' + tweet.pic_name + '_middle.jpg', class='middle_img')
- }
p.tail
- if (tweet.pic_name != '') {
a(href='/images/tweets/' + tweet.pic_name + '_large.jpg') 查看大图
- }
span.time #{tweet.create_at}
转发(#{tweet.reposts_count}) 评论(#{tweet.comments_count})
答案 1 :(得分:0)
正在使用express?
您可以将资产挂钩到Express:
assets.on('complete', function() {
var app = express.createServer();
app.configure(function() {
app.use(assets); // that's all you need to do
});
app.listen(8000);
});
创建您的Jade资产:
var assets = new AssetRack([
new rack.JadeAsset({
url: '/templates.js',
dirname: __dirname + '/templates'
})
]);