Backbone/Handlebars/Requireを学習しています。 SO-下線の代わりにハンドルバーを使用するのに役立つ情報を提供するチュートリアルやウェブサイトを教えていただけますか?
underscore
テンプレートの代わりにhandlebars.js
を使用するのは簡単です。この例を確認してください。
https://cdnjs.com/libraries/backbone.js/tutorials/what-is-a-view (「テンプレートの読み込み」セクションにスクロールします)
SearchView = Backbone.View.extend({
initialize: function(){
this.render();
},
render: function(){
// Compile the template using underscore
var template = _.template( $("#search_template").html(), {} );
// Load the compiled HTML into the Backbone "el"
this.el.html( template );
}
});
基本的に、バックボーンの規則は、レンダリング関数でhtmlを構築することです。テンプレートエンジンの使用は完全にあなた次第です(私はBackboneが好きです)。したがって、次のように変更します。
SearchView = Backbone.View.extend({
initialize: function(){
this.render();
},
render: function(){
// Compile the template using Handlebars
var template = Handlebars.compile( $("#search_template").html() );
// Load the compiled HTML into the Backbone "el"
this.el.html( template );
}
});
require.js
を使用しているため、モジュールの最上部でHandlebars
を依存関係にすることができます。私はこれにかなり慣れていますが、焦点を合わせるのはBackbone.js
パターンとrequire.js
の使用法だと思われます。
テンプレートを1回(初期化中に)コンパイルすることをお勧めします。これにより、レンダリングのたびにテンプレートを再コンパイルすることを避けられます。また、HTMLを生成するには、コンパイルされたテンプレートにモデルを渡す必要があります。
SearchView = Backbone.View.extend({
initialize: function(){
// Compile the template just once
this.template = Handlebars.compile($("#search_template").html());
this.render();
},
render: function(){
// Render the HTML from the template
this.$el.html(this.template(this.model.toJSON()));
return this;
}
});
Require.jsを使用している場合、現在のHandlebarsファイルを使用することはできません。次の Handlebars Plugin を使用しましたが、現在のバージョンで最新の状態に保たれているようです。 Handlebarsがモジュールでnullを返している場合は、Handlebarsファイルを上記のプラグインに置き換えてください。
define(["app", "handlebars",
"text!apps/templates/menu.tpl"
], function (app, Handlebars, template) {
return {
index: Marionette.ItemView.extend({
template: Handlebars.compile(template),
events: {
'click .admin-menu-ref': 'goToMenuItem'
},
goToMenuItem: function (e) {
//......
}
})
}
});
new view.index({model: models});