根据当地条件加载不同脚本时,Require.js最佳做法

时间:2013-02-08 12:45:05

标签: requirejs

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

使用Require.js时,这样做是否明智?

1 个答案:

答案 0 :(得分: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这样的构建工具将无法找到您放在那里的其他依赖项。

你的选择..

相关问题