0
我們在web應用程序中使用handlebars預編譯模板。我們最近破壞了其中一個元素 - 在某個位置正在使用錯誤的HTML。在查看預編譯的js時,我可以看到缺少元素。預編譯的HTML相當大且很複雜,有很多句柄操作符。這裏是一個非常簡化的版本:handlebars預編譯模板問題
{{#if isGeneric}}
<!-- SEARCH FOR ME-->
<td class="empty"> </td>
<td class="empty"> </td>
<!-- THE END FOR ME-->
{{else}}
<td class="description"><p id="{{productId}}" isGeneric="{{isGeneric}}" productType="{{productType}}" class="bluetext productid_opener">{{description}}</p>
<td class="something">{{productName}}</td>
{{/if}}
這段代碼在HTML是非常相似的另一個片段(如果讓任何區別)。
當我進行預編譯並在生成的programXX
中搜索HTML時,我無法在任何地方找到代碼(例如「搜索我」)。我注意到,在特定的代碼段之前和之後的句柄程序編號有一個缺口。例如: -
function program52(depth0,data) { // find elements in the condition just prior to the "if" above }
function program54(depth0,data) { // find elements from HTML in condition just after the "if" above }
從我會假設函數
program53
包含了相關的代碼,但它爲什麼不包含在生成的HTML
這樣嗎? handlebars如何確定在HTML中包含或排除什麼?
你能自己編譯違規模板嗎?您是否嘗試過使用簡單的'Handlebars.compile'調用在瀏覽器中手動編譯它? – 2013-02-22 17:31:21
瀏覽器內編譯工作。該模板在客戶端檢索並編譯並正確呈現,但行爲不一致 - 在沒有對代碼庫進行任何更改的情況下,預編譯模板從正確的代碼片段使用不正確的片段,然後再次開始工作,我們的源代碼歷史記錄,代碼庫沒有變化。我們通過一個nodejs腳本運行預編譯,我能想到的唯一合乎邏輯的原因是在主機+異步nodejs性質上預編譯速度。 – Brett 2013-02-25 10:04:45