在优化代码时使用JavaScript和Require.JS挑选jQuery 1.9或2.0

时间:2013-05-16 18:23:44

标签: jquery requirejs

升级到jQuery 2.0之后我遇到了问题我的应用程序停止了在IE8上工作而不是更少。该应用程序目前使用Require.JS来模块化我的代码。

我找到了一个非常好的解决方案here用于浏览器的条件检查。但我的应用程序还使用here描述的优化来缩小代码。所以我有一个app.build.js,如下所示:

({
appDir:         '../',
baseUrl:        'js/',
dir:            '../../v3-build',
locale:         'en-us',
paths: {
    'modernizr':                'libs/modernizr-2.5.3',
    'jQuery':                   'libs/jquery/jquery-2.0.0',
    'underscore':               'libs/underscore-1.4.4',
    'backbone':                 'libs/backbone-0.9.9',
    'bootstrap':                'libs/bootstrap/bootstrap'        

    // Application - bootstrap for frontend app
    'application':              'application'
},
shim: {
    'jQuery': {
        exports:                '$'
    },

    'underscore': {
        deps:                   ['jQuery'],
        exports:                '_'
    },

    'backbone': {
        deps:                   ['jQuery', 'underscore'],
        exports:                'Backbone'
    },

    'application':              ['jQuery']
},
optimize:                   'uglify2',
modules:        [
    {
        name:       'main'
    }
]

})

现在如何在此处添加jquery路径检查?

1 个答案:

答案 0 :(得分:2)

如果要在运行时决定jQuery版本,则不能将其包含在r.js创建的包中。您需要告诉优化器使用特殊的"empty:" directive将其遗漏,例如:

paths: {
    jquery: "empty:"
}

不确定是否为所有这些问题节省了大量带宽,但我想如果你在运行时为他们提供一条应该有用的CDN路径。