0

議論のために、デフォルトでZeptoをロードしたいが、IE(すべてのバージョン)の代わりにjQueryを使用するとします。

Require.jsを使用するときにこれを行うための賢明な方法は何でしょうか?

4

1 に答える 1

0

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そこに配置した他の依存関係を見つけることができなくなります。

あなたの選択..

于 2013-02-15T18:07:02.307 に答える