1

我想从服务器中的翡翠模板将翡翠模板传递给浏览器。

我的问题是玉模板目前由服务器解释......

这是我声明模板的方式:

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)

还有其他想法吗?

4

2 回答 2

1

我最近在这个问题上困扰了几天,我找到了一个更好的解决方案。

您可以将您的翡翠部分模板重命名为 html 扩展名,并将其包含在主

玉页。所以玉不会尝试在服务器端编译包含的部分,而你

在浏览器端得到你想要的。

这是我的示例编码:

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

和部分模板/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})
于 2013-05-27T13:30:00.140 回答
0

正在使用快递吗?

一个可能的解决方案可能是JadeAsset另请参阅此处的讨论。

您可以将资产挂钩到 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'
    })
]);
于 2013-01-06T10:34:43.067 回答