議論のために、デフォルトでZeptoをロードしたいが、IE(すべてのバージョン)の代わりにjQueryを使用するとします。
Require.jsを使用するときにこれを行うための賢明な方法は何でしょうか?
議論のために、デフォルトでZeptoをロードしたいが、IE(すべてのバージョン)の代わりにjQueryを使用するとします。
Require.jsを使用するときにこれを行うための賢明な方法は何でしょうか?
2 つのアプローチがあります: 「適切な」しかし長いと「手先の早業」しかし短いです。
「適切」だが長い:
require.config({
paths: {
jquery:'path/to/jquery'
, zepto: 'path/to/zepto'
}
})
var iNeed = []
if (!('__proto__' in {})) {
// This is IE
iNeed.push('jquery')
} else {
// Everything else
iNeed.push('zepto')
}
require(iNeed, callback)
「手先の早業」だが短い:
var AMDConfig = {
paths: {
jquery:'path/to/zepto'
}
}
if (!('__proto__' in {})) {
// This is IE
AMDConfig.paths.jquery = 'path/to/jquery'
}
require.config(AMDConfig)
require(['jquery'], callback)
「手先の早業」が「適切」ではない理由は、「jquery」の背後にあるものの真の性質を隠しているためです。アプリを成長させると、いくつかの jQuery プラグインが登場して zepto では機能しない可能性がありますが、そうではありません。問題が何であるかをすぐに明確にします。
「適切な」ソリューションも 1 つの点で問題です。要件配列を動的に定義すると、ビルド ツールは、r.js
そこに配置した他の依存関係を見つけることができなくなります。
あなたの選択..