【问题标题】:optimizing scripts by using requirejs with loading jquery from cdn通过使用 requirejs 从 cdn 加载 jquery 来优化脚本
【发布时间】:2013-12-06 12:21:06
【问题描述】:

main.js 下面

requirejs.config({
    baseUrl: ".",
    shim: {
        p: ['jquery']
    },
    paths: {
        'jquery': '//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min',
        'p': 'p'
    }
});

require(['jquery', 'c'], function ($) {
    console.log($)
});

下面的c.js

define(['p'], function () {
    return {};
});

下面的build.js

({
    baseUrl: ".",
    name: "main",
    out: "main-built.js",
    optimize: "none",
    mainConfigFile: 'main.js'

})

p.js

$('body').html('p!');

构建命令:

node path/to/r.js -o ./build.js

这是我的 index.html

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>

<script src="../app/libs/requirejs/require.js" data-main="main-built"></script>

</body>
</html>

我在尝试打开此文件时遇到了错误:

Uncaught ReferenceError: $ is not defined 

这个问题可以解决吗?

谢谢!

UDP1: 我将此添加到 build.js,但它不起作用

paths: {
        jquery: "empty:"
    }

【问题讨论】:

  • 添加paths 配置后,它是否以与以前完全相同的方式失败?另外,您确定您使用的是新版本的构建文件吗?如果您正在使用从本地文件系统加载文件的浏览器进行测试,您可能会遇到缓存问题。 (清除缓存可确保您加载的是最新文件。)
  • 是的,它的失败方式与以前完全相同。我使用了 2.1.9 版本的 r.js 和 requirejs。我使用 nginx 作为本地 http 服务器,并清除了浏览器缓存。

标签: jquery requirejs cdn minify r.js


【解决方案1】:

在您的构建配置中使用"empty:" path

({
    baseUrl: ".",
    name: "main",
    out: "main-built.js",
    optimize: "none",
    mainConfigFile: 'main.js',
    paths: {
        jquery: "empty:"
    }
})

【讨论】:

    最近更新 更多