2015-05-29 46 views
2

我有我的Sails.js應用以下文件夾結構:如何在Sails.js上註冊Handlebars partial partials文件夾?

assets/ myModule/ views/ partials/ myModule是骨幹組件(雖然我的客戶是不是一個全骨幹應用程序)

有一個給定的車把部分x.handlebars需要通過服務器端和客戶端進行渲染。

我的奮鬥始於views/在客戶端無法訪問因此無法在Backbone模塊上加載它。

然後我試圖將它移到assets/myModule/templates/這將是訪問,但現在如果我嘗試像我的主模板views/layout.handlebars無法加載部分:

{{> ../assets/myModule/templates/x}}

不作爲工作(我假設Handlebars使用視圖/作爲佈局的根級別)。

這裏只有兩種可能的解決方案,我看到在這種情況下:

  • 複製這些佈局,並使用一個在每個位置(不理想,但工程)

  • 將它放在assets/myModules/templates/x和在Sails上註冊Handlebars部分以使其可用於服務器端呈現。

我該怎麼做第二個解決方案?是否可以使用config/views.js下的助手功能來註冊全局部分?

我的目標是在配置層使用Handlebars.registerPartial函數,之外使用控制器,以便部分可以被其他模板重用。

回答

2

複製代碼不是必需的。有很多不同的方法可以實現這一點,並取決於您要尋找的優化配置文件。

一個簡單的解決辦法是閱讀的API /控制器節點的FS哈佛商學院的文件,然後把手編譯它,並把它傳遞給模板這樣的:

var rawTemplate = fs.readFileSync('assets/hbs/client-side-template.hbs', "utf8"); 
var processedTemplate = Handlebars.compile(rawTemplate); 

return res.render('whiteboard/dualloadview', {  
    myPartialAsVariable: processedTemplate({}) 
}); 

你必須得弄清楚如何處理partials使用的上下文和變量。您還可以通過查看保存文件在內存中的讀取並查看如何使用Handlebars註冊部分而不是使用變量來改進此代碼片段。

相關問題