BrowserifyでBackbone.jsを使うときのjQueryの解決

  • 20
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

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.$;

https://github.com/jashkenas/backbone/blob/1.1.0/backbone.js#L46

※ ちなみに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を解決してくれる。

はよリリースしてほしい。