2013-01-08 56 views
4

我正在通過Twitter查看Hogan.js。預編譯Hogan.js模板服務器端ASP.NET MVC

http://twitter.github.com/hogan.js/

他們談論能夠通過我的理解可以是一個PERF增益服務器預編譯模板。

目前,每個我使我執行後的AJAX擊到服務器,以獲得以下模板時間數據:

 var template = Hogan.compile($('#seasonsTmpl').html()); 
    $('#main').html(template.render(data)); 

考慮下面的模板:

<script type="text/html" id="seasonsTmpl"> 

    <ul> 
    {{#season}} 
     <li>{{.}}</li> 
    {{/season}} 
    </ul> 

</script> 

我能做些什麼「預編譯」服務器端使用ASP.MVC後端?這是不可能的,因爲它似乎是圍繞使用Node.js

回答

1

您有正確的想法來優化您的模板。有兩種選擇,選擇可能取決於您是要渲染模板客戶端還是服務器端。

如果你想渲染它們在客戶端,你可以使用Hogan.js做一個真正的預編譯。是的,這不能在.NET上運行,但我認爲在預編譯可能的時候你誤會了。作爲構建過程的一部分,您可以預先編譯您的模板,而不是期望它發生在每個Web請求或頁面加載上。你需要需要安裝node和npm來設置它,但是你只需要在你自己的機器上本地運行它,或者如果你使用的是一個構建箱。無論何時更新模板,您都會再次運行Hogan來更新輸出文件。編譯後的輸出將是一個JavaScript文件,其中包含爲以後使用而優化的函數。這些函數包括您的模板字符串以及用於呈現數據的邏輯。然後,您可以像包含任何其他JavaScript一樣包含輸出文件,或者將其與其他來源進行縮小,以便進行縮小。

第二個選項是呈現模板服務器端。這與預編譯不同,服務器將針對每個Web請求再次編譯和呈現模板。從Hogan.js中退出並查看諸如Nustache之類的.NET選擇。關於鬍鬚的好處是它有一個規範,並已被移植到幾種服務器端語言。

這些選項在渲染髮生的位置方面存在根本差異。您甚至可能希望在某些情況下使用這兩種方法,例如,如果要使用Nustache呈現初始頁面加載服務器端,但必須使用通過Hogan預編譯的模板在瀏覽器中呈現動態元素。

更多信息: Nustache on Github

我希望對您有所幫助!