2011-09-29 56 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