2011-09-29 54 views
2

我玩弄一个Express网站使用的是Node.js快递玉石,模板添加代码布局

我有一个布局文件,该文件,让我们说,是这样的:

html 
    title foo 
body!= body 

从我已经能够理解的,模板的输出被插入到一个名为body的变量中,并将其添加到第3行的布局中。但是,如果我想要一个模板添加<head>元素中的<meta>标记,我该怎么做?

我确实看到了扩展模板和使用块的解释,但我不确定它如何将它与使用布局联系起来。模板本身不应该扩展布局,对吧?或者,模板继承是否根本不需要布局?我不会怀疑,但我不确定。

此外,由于我在这里,您如何指定要使用的不同布局,或者根本没有使用布局。目前,意见呈现如下:

res.render('templateName', { myTemplateVars : 'foo' }); 

回答

3

你要求的是3天前发布。

http://tjholowaychuk.com/post/10695801204/jade-stylus-0-16-0-released

我本人一直在使用它的几个星期,爱最近的补充。块语句允许您指定默认内容,并且任何扩展模板都可以覆盖已命名的块。

基本上,块重写,包括append和extends选择你的父模板。

+0

好了,在我的情况下,布局应该有'块meta'然后里面什么都没有那么,然后模板可以写'block meta'并添加它想要的任何标签? – nickf

+0

是的,块声明可以声明没有嵌套的内容,充当内容占位符。继承模板可以声明没有内容的块,但只需注意破坏父块。 – collinwat

+0

Grr ... bad enter key :) 因此,添加元块,并在您的继承模板中定义元块,并在该模板的块中添加所需的任何标签。 此外,删除主体变量,并使其在您的子模板中被覆盖的块。 希望它有帮助。 – collinwat

1

尝试dust模板引擎。
它更有趣和设计师友好。
在灰尘,你可以写base.html文件:

<html> 
<head> 
    <meta http-equiv="content-type" content="text/html;charset=utf-8" /> 
    <title>kiss.js example</title> 
    <link rel="stylesheet" href="/css/css1.css" /> 
    <link rel="stylesheet" href="/css/css2.css" /> 
    <script type="text/javascript" src="/js/js1.js"></script> 
    <script type="text/javascript" src="/js/js2.js"></script> 
    {+head/} 
</head> 
<body> 
    <div style="height: 100%"> 
     <div id="header"> 
      <h1>kiss.js example - {+header}{/header}</h1> 
      {+header_buttons}{/header_buttons} 
     </div> 
     <div id="content"> 
      {+content}{/content} 
     </div> 
     <div id="footer"> 
      <table> 
       <tr> 
        <td> 
         &nbsp;&nbsp; 
        </td> 
        <td style="width: 100%; text-align: center;">made with kiss.js</td> 
        <td>{+footer_buttons}{/footer_buttons}</td> 
       </tr> 
      </table> 
     </div> 
    </div> 
</body> 

和view.html:

{>base.html/} {<content} <h2>name: {name}</h2> <h3>{foo}</h3> {#numbers} <div>{.}</div> {/numbers} {/content}
+0

你可以粘贴你如何配置app.js使用防尘模板? – chovy