Browserifyで次のように書いたら動かなかった。(bowerとdebowerifyも使ってる)
app.js
var Backbone = require('backbone');
var view = new Backbone.View(); //=> Uncaught TypeError: Property '$' of object #<Object> is not a function
これはBackbone.jsの現在のバージョン(1.1.0)での$
の解決がrequire
を使わずに次のようになっているから。
backbone.js
Backbone.$ = root.jQuery || root.Zepto || root.ender || root.$;
※ ちなみにUnderscore.jsはrequire
で解決されてる。(source)
なのでjQueryは自分で解決してあげないとだめ。
app.js
var $ = require('jquery');
var Backbone = require('backbone');
Backbone.$ = $;
var view = new Backbone.View();
せっかくBrowserifyとBowerでいい感じに依存関係解決できるのにつらい感じはある。
と思ってたけど、Backboneのmasterではこの問題が解決されてる(source)。
ので、
$ bower install backbone#master
すれば、自動的にjQueryを解決してくれる。
はよリリースしてほしい。