2012-12-06 56 views
8

我得到了服務器和客戶端模板的想法,但是dust.js讓我有點困惑。如何使用dustjs-linkedin作爲客戶端模板?

爲了使用dust.js用於客戶端模板,你需要三個步驟:

  1. complie模板
  2. 負載模板
  3. 呈現模板

,對嗎?

但模板從哪裏來?我看到了兩種不同的方法:

1. <script> template <script> 
2. <div> template </div> 

......兩者都在DOM中。哪個是對的?

我也注意到你可以通過ajax加載模板,所以模板不會在DOM中看到,但我不知道該怎麼做。

此外,我目前正在使用玉作爲快速查看引擎。是否有必要切換到dust.js?有什麼優勢?

回答

11

這是LinkedIn塵JS wiki頁面,可以回答你的問題,具有非常好的例子:http://linkedin.github.com/dustjs/

但在這裏回答你的問題:

是的,你需要編譯成爲一個JavaScript你的塵土模板文件,您可以通過<script>標記添加到您的頁面,然後致電dust.render方法來呈現您的模板。下面是一個例子:

在模板文件
  1. 寫入下面的代碼和在命令行它由dustc sample.tl保存爲sample.tl

    <p>Hi {firstName} {lastName}</p> 
    
  2. 編譯sample.tl到sample.js或使用dust.compile("your_template_code", "template_name")編譯模板並將輸出保存在JavaScript文件(sample.js)中,或者使用duster.js通過nodejs觀察和編譯模板:https://github.com/dmix/dusterjs

  3. 在您的html中添加sample.js:

    <script type="text/javascript" src="sample.js"></script> 
    

    這也會將您的模板註冊到dust.cache。

  4. 在JavaScript

    var your_json = {firstName:'James', lastName:'Smith'}; 
    
    dust.render('sample', your_json, function(err, out){ 
    
        your_dom_element.innerHTML = out; 
    
    }); 
    

    以上dust.render方法的結果將是<p>Hi James Smith</p>

    所以你需要傳遞3個參數來dust.renderdust.render(template_name, json, callback)

+0

我使用linkedin-dust並表示,如何在客戶端訪問dust.render?我認爲我必須包含一個js文件,但是我必須手動添加它作爲靜態切斷的內容,還是灰塵包含文件的請求處理程序? – James

+0

是的,您需要將dust-core.js添加到您的頁面才能渲染防塵模板。您還需要添加已編譯的灰塵模板文件。 https://github.com/linkedin/dustjs/blob/master/dist/dust-core.js –

0

正如維基所言,您可以在客戶端或服務器中使用灰塵。如果你在客戶端使用它,你應該得到模板(例如使用ajax請求),在瀏覽器中編譯一個渲染器。你將不得不在你的頁面中包含灰塵腳本文件。

另一方面,您可以在服務器中使用灰塵(使用rhino或nodejs)。在這種情況下,您將在服務器中編譯和渲染模板,以便瀏覽器接收html。

+2

由如果你對錶演感興趣,這是一個不好的建議。如果你的模板沒有改變,編譯一次,然後直接將編譯後的模板提供給客戶端,而不是在客戶端編譯它們會更好。這樣你就不需要發送dust.js到客戶端,客戶端也不需要花時間編譯你的模板。 – fabspro

+1

最好在構建時或作爲開發的一部分進行預編譯,然後在客戶端上使用模型進行編譯。這樣你可以允許本地緩存你的模板。 – pilau

相關問題