与Backbone.js一起使用HAML模板的最佳策略

Vla*_*ich 38 javascript haml templates backbone.js

我进入Backbone.js为我的项目构建javascript代码,我喜欢HAML在后端(rails)进行模板化,所以我喜欢将它用于Backbone Views模板.我知道有几个HAML端口到Javascript,如 https://github.com/creationix/haml-js和骨干支持JST和小胡子轻松.

什么是使用haml模板的最佳方式.

在客户端使用HAML有什么缺点吗?性能,额外的脚本加载时间(由jammit等资产打包工具处理)

Cra*_*aig 26

我知道你已经提到了它,但我建议将haml-js与Jammit一起使用.只需在javascripts和assets.yml中添加haml.js,并将template_function: Haml模板文件包含在包中.例如

  javascript_templates:
    - app/views/**/*.jst.haml
Run Code Online (Sandbox Code Playgroud)

然后在您的视图中,您可以包含此包(= include_javascripts :javascript_templates),Jammit会将任何.jst.haml文件打包到window.JST['file/path'].(如果您查看页面源,您应该看到一个javascript文件<script src="/assets/javascript_templates.jst" type="text/javascript"></script>)

要使用这些模板,只需调用其中一个JST Jammit创建.即

$('div').html(JST['file/path']({ foo: 'Hello', bar: 'World' }));
Run Code Online (Sandbox Code Playgroud)

Jammit将使用Haml-js模板函数函数来渲染模板.

注意:请务必在Gemfile中指向Jammit的github repo,以获取支持haml-js工作所需的换行符的最新版本.


Duk*_*uke 14

我准备给哈哈咖啡一杯.(没有双关语)我不能赞美咖啡的赞美; 加上它现在是Rails 3.1中的默认值.现在我可以在我最喜欢的模板语言中嵌入coffeescript,并预编译该批次.

哦,快乐..现在让它发挥作用.

  • 现在这比"正式"答案要好得多,看看它是如何与资产管道开箱即用的(据我所能说的那样?).我只是简单地玩它,但到目前为止,这看起来正是我需要的.与Backbone,Haml,Coffeescript,资产管道配合使用.爱它! (3认同)
  • 我最近给了[haml-coffee](https://github.com/9elements/haml-coffee)很多爱,并且完全符合HAML标准.此外,我创建了[haml_coffee_assets](https://github.com/netzpirat/haml_coffee_assets),用于在Rails 3.1资产管道中使用haml-coffee模板. (2认同)

Jul*_*ien 6

我知道这会有点绕过这个问题但是我们走了:)

我的rails应用程序我使用haml来获取后端的所有视图.太棒了.由于某些原因(主要是i18n),我不喜欢在客户端使用模板.我是这样做的:

  • 在ruby haml中创建所有模板,并将它们存储到带有时髦类型的脚本标记中(我使用text/js-template).这将创建prerendered html,您可以使用jquery和backbone.
  • 在创建主干视图时,加载存储的模板并将其附加到文档中
  • 通过更改预先存在的模板来渲染视图

你只处理html和jQuery是非常棒的.对于一些不需要i18​​n的视图,我使用下划线模板,因为它已经存在.

至于haml模板性能,似乎胡子和把手更快.