2015-05-29 52 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注册部分而不是使用变量来改进此代码片段。

相关问题