互いに関連する 2 つの問題があります。
1 つ目は、backbone という名前のフォルダーを作成したいということです。これは、パス内のライブラリの短い名前として backbone を使用することと衝突します。RequireJS は backbone/model/User が backbone ライブラリの子か何かだと考えているようです。解決策として、ライブラリの名前を大文字の B で Backbone にします。
2 つ目の問題は、依存関係として「バックボーン」を持つ ModelBinder を使用していることです。解決策、縮小されたファイルを変更します。
どちらのソリューションも、RequireJS 構成で何かを正しく行っていないための悪いハックのように思えますが、何が間違っているのかわかりません。
私のパブリック フォルダー構造は次のようなものです。
public/
js/
backbone/
model/
...
view/
...
vendor/
backbone.min.js
Backbone.ModelBinder.js
...
common.js
私のcommon.jsには次のようなものがあります:
require.config({
baseUrl: "/js",
shim: {
'underscore': {
exports: '_'
},
"Backbone" : {
deps: ["underscore", "jquery"],
exports: 'Backbone'
}
},
paths: {
underscore: 'vendor/underscore.min',
jquery: 'vendor/jquery',
model_binder: 'vendor/Backbone.ModelBinder',
Backbone: 'vendor/backbone.min'
}
});
したがって、私の2つの質問は次のとおりです。Backbone.ModelBinderをそのまま維持し、そのライブラリがバックボーンを要求するときに、グローバルパスを「汚染」することなくjs/vendor/backbone.min.jsを要求するようにrequirejsに指示するにはどうすればよいですか?
また、パスでバックボーン (小文字の b) とディレクトリを両方とも使用できないのはなぜですか?