0

为了争论,假设我想默认加载 Zepto,但使用 jQuery 代替 IE(所有版本)。

使用 Require.js 时,什么是明智的做法?

4

1 回答 1

0

有两种方法:“适当”但很长和“花招”但很短。

“正确”但很长:

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 上运行,但它不会立即弄清楚问题所在。

“正确”的解决方案在一个方面也是一个问题——如果您动态定义需求数组,构建工具r.js将无法找到您放置在那里的其他依赖项。

你的选择..

于 2013-02-15T18:07:02.307 回答