【JavaScript】backbone専用スレ [転載禁止]©2ch.net
語れ
Backbone.jsは小さく、モバイル環境や低速な接続の環境にも適しています。
2時間か3時間もあれば、Backbone.jsのソースコード全体を読み理解できるでしょう。
とオライリーのbackbone.jsアプリケーション開発ガイドにあるけど
本当でしょうか?
正直かなりbackbone.jsについて勉強しているのですが
いまだに「こうする場合にはどうするんだ?」ということが掴めてません
コードを読めば二三時間で理解できるものなのでしょうか?
>>4 Backboneを使うには、backbone.js(7.5KB)とは別に
underscore.js(6.0KB)とjQuery(29.3KB)が別に必要になる。合わせると37.4KB
backbone.jsはjQueryの代わりにZepto(10.3KB)も使えるから、その場合は18.4KB
AngularJSは、44.9KB、Knockoutは22.0KBである
よってサイズは、他のメジャーなフレームよりも小さい。
そしてAngularJSやKnockoutのようなデータバインディングタイプは
その仕様上、必然的に重くなる。
なので開発しやすさは無視するとして、
> 小さく、モバイル環境や低速な接続の環境にも適しています。
というのは間違いではない。
だけどフレームワークはウェブサイト全体にわかって使う時に
便利になるものでページの一部に取り入れるだけなら、
jQuery(Zepto)だけを使った方がいい。
フレームワークで2、3時間で理解できるものなんてないよ
2、3時間でやれることはサンプルを動かす程度
それだけでわかったつもりになっている奴もいるが
ベストプラクティス(どういう作り方をするべきものか)を
理解してフレームワークの機能の足りない部分を
拡張するための方法まで理解するには数日、人によっては
数週間かかる
8 :
Name_Not_Found:2015/01/24(土) 18:28:47.76 ID:jlKAUAJ/
ありがとうございます
9 :
Name_Not_Found:2015/01/27(火) 14:13:55.49 ID:CrSdih1E
delegateEventsって、よくやるようにdocumentで受けるように出来るのかと思っていたのですが
http://backbonejs.org/docs/backbone.html ここでコードを見ていると、this.$elにonしていました
デレゲートといっても$elに委譲するのが限界のようです
backboneを使う場合はdocumentで受ける方法は使わない方がいいんでしょうか?
backboneの枠から外れたやり方でハンドラをセットすればもちろん可能ですが、
フレームワーク標準でないやり方を混ぜるのはあまりいいと思いませんし・・
要素がページ上に存在している場合は、その要素を指すCSSのセレクタを el として指定します。
el: '#footer'
以下のように、ビューを生成する際に既存の要素を el として指定できます。
var todosView = new TodosView({el:$('#footer')});
と、「Backbone.jsアプリケーション開発ガイド」にありますが
var todosView = new TodosView({el:'#footer'});
の間違いではないのでしょうか?
あるいはelにDOM要素を設定するなら分かりますが、
jQueryオブジェクトを渡しているので奇妙だと思います
elはjqueryオブジェクトなのか?
と思いましたが
view.$el は $(view.el) と同義
とあるのでやっぱりelはdom要素のはず
var button1 = $('<button></button>');
var view = new View({el: button1});
というようなコードがあったので、elにはjQueryオブジェクトを入れるようです・・
$elとの違いが曖昧でなんか気持ち悪い仕様ですね
コードを読んだところ
コンストラクタからも呼ばれるsetElementはjQueryオブジェクトなるいはdomエレメントを取り、
jqueryオブジェクトの時は最初のdomエレメントをelに設定する
という挙動でした
それならおかしくもないかな
>>13 > コンストラクタからも呼ばれるsetElementはjQueryオブジェクトなるいはdomエレメントを取り、
まあそれどちらかと言ったらjQueryの仕様なんだけどね。
$(ここ) には、セレクタ、DOM要素、jQueryオブジェクト どれを入れてもいい。
ただ本来、el (backboneの世界)にはjQueryオブジェクトを出さないほうがいいと思う。
elは要素、またはセレクタがいいだろう。
backboneはまともに使ってないから、backboneの考え方よくわからんけど。
15 :
Name_Not_Found:2015/02/03(火) 02:47:57.14 ID:8/LFUgFK
たしかにsetElementはセレクタやタグも受けるので、
jqueryの機能と思想をかなり取り入れてる感じです
>>9の件ですが
オライリーのbackbone本に
DOMのイベントに関連付けを行うには、ビューの events プロパティか jQuery.on() を使います。
とありました
jqueryでのイベントハンドリングも特に否定はしてないようですね
var TodoList = Backbone.Collection.extend({
model: app.Todo,
// 完了済みの Todo 項目だけをフィルタリングして返します
completed: function() {
return this.filter(function(todo) {
return todo.get('completed');
});
},
// 未了の Todo 項目だけをフィルタリングして返します
remaining: function() {
// apply を使うことによって、関数内で this が指すコンテキストを
// 指定できます
return this.without.apply(this, this.completed());
}
});
こんなコードがオライリー「backboneアプリケーション開発ガイド」にあるのですが
filterには使っていないapplyをなぜwithoutには使っているのでしょうか?
filterもwithoutもコレクションに追加されたunderscoreの関数です。
どちらのメソッドの中でもthisはコレクション自身を指すはずなので、
わざわざapplyでthisを指定する必要はないと思うのですが、
どうなのでしょう
オブジェクトが自分自身のメソッドを、applyで呼ぶ
ということに強い違和感があります
それならそのメソッドをそのオブジェクトが持つ意味があんまりないので
ここのはそういう目的にapplyじゃないだろ。よく見ろ。