我使用Grunt和Assemble在我的網站上創建預編譯模板,但我需要根據存儲在客戶端存儲中的信息動態創建一些部分。有沒有辦法免除預編譯模板的各個部分?使用匯編混合動態/預編譯的句柄模板
回答
我們不能做自定義分隔符(Handlebars的缺點),但有一些解決方案可能適用於您。這兩者都不一定是慣用的,所以你要判斷這些對你正在進行的項目來說是多麼合適。
字符串替換
你可以使用一些自定義(臨時)分隔符不應該被編譯在內容模板,然後創建一個塊助手將在那些分隔符轉換回有效車把表達式編譯時間(我測試了這此答案和它的作品):
例如:
Handlebars.registerHelper("raw", function(options) {
return options.fn(this).replace(/\[\[/g, '{{').replace(/\]\]/g, '}}');
});
然後使用它像這樣:
{{#raw}}
{{> foo }}
{{/raw}}
裏面foo.hbs
,你可能有這樣的事情:
<title>[[title]]</title>
,它會渲染到:
<title>{{title}}</title>
該解決方案是哈克肯定的,如果你可能有問題你會在包含的內容中嵌入任何代碼示例,並且其中一個示例恰好具有該語法(如[0,1,[foo, bar]]
。
逃逸
這個解決方案是最有可能是更好的方式去。把手不會評估任何之前有\
的模板。所以,你可以這樣做:
<title>\{{title}}</title>
,它會渲染到:
<title>{{title}}</title>
第一個建議可能是不值得增加,但是,嘿,你永遠不知道對不對?
這很好。只需按照http://assemble.io/docs/Custom-Helpers.html和http://assemble.io/docs/options-helpers.html安裝Assemble的助手。謝謝。 – eloone
\ {{title}}做了詭計;)感謝隊友 – DominikAngerer
- 1. 手動使用預編譯的句柄模板
- 2. 如何使用emberjs 1.0.0-rc.2預編譯的句柄模板?
- 3. EmberJS - 註冊預編譯的句柄模板
- 4. 只有預編譯的句柄部分
- 5. 預編譯JavaScript的模板
- 6. 使用ember.js預編譯handlebars模板
- 7. 使用ANT預編譯handlebars.js模板
- 8. 使用Gulp預編譯模板
- 9. 獵豹預編譯模板使用
- 10. 預編譯車把模板
- 11. 預編譯jsrender模板
- 12. .NET中的混合模式彙編4
- 13. 腳本標記中的腳本預編譯手柄模板
- 14. VS2015內部的預編譯手柄模板
- 15. 帶骨架的預編譯手柄嵌入模板
- 16. 如何獲得已編譯的句柄模板的源代碼?
- 17. 將變量傳遞給已編譯的句柄模板(expressjs)
- 18. 用預編譯的靜態庫編譯
- 19. 編譯錯誤「預期不合格-ID」使用模板
- 20. 遞歸動態模板編譯
- 21. 使用預編譯模板時咕嚕-燼模板
- 22. C++模板彙編
- 23. Windows中的預編譯Handlebars.js模板
- 24. 與RequireJS預編譯的把手模板
- 25. ::的ActionView ::模板錯誤(不預編譯):
- 26. Ember.js通過Gulp預編譯的手柄
- 27. 在linux中混合使用彙編語言和C編程
- 28. 使用模板繼承與彙編
- 29. 什麼是javascript模板預編譯?
- 30. handlebars預編譯模板問題
我認爲這可能需要一個針對handlebars和使用助手的解決方案。如果您找到解決方案,請發佈。我會看看我們的手柄是否有任何東西 - 助手lib可能會有所幫助。 – doowb