私はBackboneJSの学習を始めたばかりで、その動作方法をテストするために小さなサンプルドキュメントを作成しています。しかし、私はそれを理解するのに苦労していて、現時点ではまったく意味がありません:)
だから、私は次のファイル構造を持っています:
/* application.js */
var Application = Application || {};
;(function ( $, window, document, undefined ) {
new Application.ApplicationView();
})( jQuery, window, document );
/* sample.js */
var Application = Application || {};
;(function ( $, window, document, undefined ) {
Application.ApplicationView = Backbone.View.extend({
});
})( jQuery, window, document );
/* utilities.js */
var Application = Application || {};
;(function ( $, window, document, undefined ) {
Application.ApplicationUtilities = Backbone.Collection.extend({
polyfillize : function(tests) {
return _.each(tests, function(obj){
console.log(obj);
Modernizr.load([{
test : _.reduce(obj.test, function(initial_value, current_value){
return initial_value && current_value;
}, 1),
nope : obj.polyfill,
callback: function(url, result, key) {
console.log('Polyfill : ', [ url ]);
}
}]);
});
}
});
})( jQuery, window, document );
/* options.js */
var Application = Application || {};
;(function ( $, window, document, undefined ) {
Application.ApplicationOptions = Backbone.Model.extend({
version : [ 1 ],
prettify : true,
libraries : {
google_code_prettyfier : 'assets/js/libraries/google/prettify.js'
},
dependencies : {
google_code_prettyfier : function() {
return Modernizr.load([{
test : this.prettify,
yep : [ this.libraries.google_code_prettyfier ],
callback: function(url, result, key) {
return window.prettyPrint && prettyPrint();
}
}]);
}
},
polyfills : {
json_polyfill_url : 'http://cdn.chaoscod3r.com/code/polyfills/json3_polyfill.js',
storage_polyfill_url : 'http://cdn.chaoscod3r.com/code/polyfills/localstorage_polyfill.js'
}
});
})( jQuery, window, document );
/* polyfills.js */
var Application = Application || {};
;(function ( $, window, document, undefined ) {
Application.ApplicationPolyfills = Backbone.Model.extend({
loadPolyfills : function() {
return Application.ApplicationUtilities.polyfillize([
{
test : [Modernizr.localstorage, Modernizr.sessionstorage],
polyfill : [Application.ApplicationOptions.polyfills.storage_polyfill_url]
},
{
test : [Modernizr.json],
polyfill : [Application.ApplicationOptions.polyfills.json_polyfill_url]
}
]);
}
});
})( jQuery, window, document );
独自のmodelsフォルダーに配置された各モデル、collectionsフォルダー内の各コレクションなど。次に、すべてのスクリプトをDOMにロードします。最初にコレクション、次にモデル、ビュー、最後にapplication.js
。
私がやりたいのは、ビューまたはモデルでいつでも使用できる関数のコレクションとしてコレクションを使用できるようにすることです。オプションは、任意のレベルおよび任意のコレクション/モデル/ビューで使用できる必要があります。したがって、私のsample.js
ファイルには、必要に応じてすべてのポリフィルをロードしたり、google code prettifierを有効にしたりするなど、onDOMロードを実行するために必要なすべてを初期化するメインビューが含まれるようになります。
明らかに、この状態では何も機能しないので、可能であればもっと経験豊富な誰かが私を助けてくれるか、あるいは私が今やろうとしていることに一致するいくつかのチュートリアルを指摘してほしいです:)