带有Backbone.js的JS模板系统

我正在寻找一些好的模板系统,以及像Backbone.js这样的MVC框架

我知道一个这样的系统(jQuery Templating)。 然而,由于某些原因,同样已经停止,因此我正在寻找其他一些好的选择。

从视角来看,请建议一些足够灵活的东西。 (例如,基于某些逻辑的具有启用/禁用按钮的动态视图,基于某些逻辑的具有不同样式的表格数据等)

你有开箱即用的Underscore模板系统 。

举例:

# code simplified and not tested var myView = Backbone.View.extend({ template: _.template( "

<%= title %>

" ), render: function(){ this.$el.html( this.template({ title : "The Title" }) ); return this; } });

您可以找到的所有模板系统都具有与此类似的集成。

当然这是一个简化的例子,通常模板是用this.model.toJSON() ,你也可以找到将模板体声明为标签的技巧,你可以使用Mustache语法而不是ERB 。

我真的很喜欢Handlebars.js ……

这是一些JavaScript ……

 var HandlebarsView = Backbone.View.extend({ el: '#result' initialize: function(){ this.template = Handlebars.compile($('#template').html()); }, render: function(){ var html = this.template(this.model.toJSON()); this.$el.html(html); } }); var HandlebarsModel = Backbone.Model.extend({}); var model = new HandlebarsModel({ name: 'Joe Schmo', birthday: '1-1-1970', favoriteColor: 'blue' }); var view = new HandlebarsView({ model: model }); view.render(); 

然后是HTML …

  

给那一枪!

我正在使用haml-coffee和rails资产管道。
相当奇特的选择,但到目前为止工作得很好。

内部视图很简单:

 var MyView = Backbone.View.extend({ template: JST['path/to/mytemplate'] render: function(){ var html = this.template(this.model.toJSON()); this.$el.html(html); } })