【问题标题】:r.js optimization is not preserving pathsr.js 优化不保留路径
【发布时间】:2013-07-27 03:03:47
【问题描述】:

我正在使用 r.js 优化,CDN 资产在路径配置中设置为 :empty。但是,当我点击优化文件时,require 不会获取 CDN 资产。具体来说,它并没有接触到 jQuery。我也在使用 grunt requirejs 任务。

这是我的 require.js 配置:

require.config({
  paths: {
    jquery               :'//ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min'
  }
});

这里是 grunt.js 配置:

    requirejs: {
        compile: {
            options: {
                baseUrl: "public/resources/javascripts/",
                mainConfigFile: "public/resources/javascripts/main.js",
                out: "public/resources/javascripts/main-build.js",
                paths: {
                    'jquery': 'empty:'
                },
                name: "main",
                generateSourceMaps: true,
                optimize: "uglify2",
                preserveLicenseComments: false
            }
        }
    }

我将构建的资产作为:

<script data-main="/resources/javascripts/main-build.js" src="/resources/javascripts/libs/require.js"></script>

【问题讨论】:

    标签: javascript requirejs r.js


    【解决方案1】:

    您还必须在 exclude 数组中添加从 CDN 加载的资源。否则,该模块被包含,只是空的。

    exclude: [ "jquery" ]
    

    附带说明,从 CDN 加载 jQuery 比将其捆绑到构建文件中要慢。在这种情况下,您不应该使用 CDN。

    【讨论】:

    • 而 exclude 属性进入 grunt.js 配置?
    • 是的,当使用优化的 main-build.js 时,浏览器由于某种原因仍然没有获取 jQuery。正如您提到的,我已将其包含在排除项中。谢谢!
    猜你喜欢
    • 2013-03-18
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多