browserifyで少し問題が発生しています。
目標
私は基本的な TodoMVC シングルページ アプリを Backbone で構築しようとしていますが<script>
、index.html
.
これが私がこれまで行ってきたことです。
lib/モデル/todo.js
var backbone = require("backbone");
var Todo = module.exports = backbone.Model.extend({
defaults: function() {
return {
title: "",
completed: false,
createdAt: Date.now(),
};
},
});
lib/collections/todo.js
var backbone = require("backbone"),
LocalStorage = require("backbone.localstorage");
var TodoCollection = module.exports = backbone.Collection.extend({
localStorage: new LocalStorage('todomvc'),
});
lib/app.js
var Todo = require("./models/todo"),
TodoCollection = require("./collections/todo");
(function(global) {
global.todoCollection = new TodoCollection([], {model: Todo});
})(window);
私のバンドルを構築するために、私は使用しています
browserify lib/app.js > js/app.js
最後に、私のindex.html
ものはとてもシンプルです
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Todo MVC</title>
</head>
<body>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script src="/js/app.js"></script>
</body>
</html>
問題
コンソールを開いてこのコマンドを実行しようとすると
todoCollection.create({title: "My first todo"});
エラーが発生する
「未定義のプロパティ 'Deferred' を読み取ることができません」
スタックトレース
TypeError: Cannot read property 'Deferred' of undefined
at Backbone.LocalStorage.sync.window.Store.sync.Backbone.localSync (http://localhost:4000/js/app.js:182:47)
at Backbone.sync (http://localhost:4000/js/app.js:255:40)
at _.extend.sync (http://localhost:4000/js/app.js:1773:28)
at _.extend.save (http://localhost:4000/js/app.js:1979:18)
at _.extend.create (http://localhost:4000/js/app.js:2370:13)
at <anonymous>:2:16
at Object.InjectedScript._evaluateOn (<anonymous>:580:39)
at Object.InjectedScript._evaluateAndWrap (<anonymous>:539:52)
at Object.InjectedScript.evaluate (<anonymous>:458:21)
質問
バックボーン アプリをブラウザ化する方法についてかなりの検索を行いましたが、私の目的に一致するものはほとんど見つかりませんでした。
app.js
単一ページのバックボーン アプリを、html で要求できる単一のアプリにバンドルするにはどうすればよいですか?
余談として
jQueryを適切に組み込んでいるかどうかもわかりません。バックボーンがブラウザ化されたバンドルの一部でない場合、バックボーンは jQuery に接続するのに問題がありますか?
どんなヒントでも大歓迎です。