带有Backbone.js的JS模板系统

时间:2012-03-19 07:01:22

标签: javascript jquery jquery-plugins backbone.js templating-engine

我正在寻找一些与Backbone.js等MVC框架一起使用的良好模板系统

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

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

3 个答案:

答案 0 :(得分:7)

我真的很喜欢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 ......

 <div id="result">
 </div>
 <script id="template" type="text/html">
    <div>Name:{{name}} Birthday: {{birthday}} Favorite Color: {{favoriteColor}} </div>
 </script>

试一试!

答案 1 :(得分:6)

您已开箱即用Underscore's template system

举例:

# code simplified and not tested
var myView = Backbone.View.extend({
  template: _.template( "<h1><%= title %></h1>" ),

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

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

当然这是一个简化的示例,通常模板使用this.model.toJSON(),同时您也可以找到声明template body into an <script> tag的技巧},您可以使用Mustache syntax instead of ERB

答案 2 :(得分:0)

我正在使用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);
  }
})