requirejs在优化后不再加载cdn脚本

Rob*_*Rob 5 requirejs

在使用r.js 进行优化之后,我很难让requirejs工作.它正常工作我正在遵循配置main.js和构建配置文件的文档empty: 但是在优化之后,不再加载CDN脚本.

公共/ index.html的

<script data-main="editor/js/main" src="editor/js/vendor/require.js"></script>
Run Code Online (Sandbox Code Playgroud)

公共/编辑/ JS/main.js

requirejs.config({
  baseUrl: "/editor/js",
  paths: {
      "jquery": "http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min",
      "order": "vendor/require_order",
      "underscore": "vendor/underscore",
      "handlebars": "vendor/handlebars-1.0.0.beta.4",
      "jquery.mobile.router": "vendor/jquery.mobile.router",
      "jquery.mobile": "http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min"
  }
});
require(["order!jquery", "order!underscore", "order!handlebars", "order!jam", "order!jquery.mobile"], function () {
  //loaded
});
Run Code Online (Sandbox Code Playgroud)

配置/ build.js

({
  baseUrl: "../public/editor/js",
  name: "main",
  out: "../public/editor/js/main-built.js",
  paths: {
      "order": "vendor/require_order",
      "underscore": "vendor/underscore",
      "handlebars": "vendor/handlebars-1.0.0.beta.4",
      "jquery.mobile.router": "vendor/jquery.mobile.router",
      "jquery": "empty:",
      "jquery.mobile": "empty:"
  }
})
Run Code Online (Sandbox Code Playgroud)

当我运行r.js node config/r.js -o config/build.js main-built.js成功构建.

und*_*Pez 0

您使用订单插件加载所有内容是否有特殊原因?

您构建的 JavaScript 中是否遇到加载顺序问题?

如果您正常加载 jQuery mobile(没有插件),您的“空”配置应该会生效。

require(["jquery", "underscore", "handlebars", "jam", "jquery.mobile"], function () {
Run Code Online (Sandbox Code Playgroud)

http://requirejs.org/docs/optimization.html#empty

您还需要定义 jQuery.mobile.router 的依赖链

requirejs.config({

    paths: {
      "jquery": "http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min",
      "order": "vendor/require_order",
      "underscore": "vendor/underscore",
      "handlebars": "vendor/handlebars-1.0.0.beta.4",
      "jquery.mobile.router": "vendor/jquery.mobile.router",
      "jquery.mobile": "http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min"

    },

    shim: {
        "router": {
            "deps" : ["jquery.mobile"]
        },
        "jquery.mobile" : {
            "deps" : [ "jquery.mobile.router"],
            "exports": "$.mobile" 
        },

        "jquery.mobile.router": {
          "exports": "$.mobile.Router"
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

看这个问题的答案:

Require.js 与 jQueryMobile-Router

我希望这能解决您使用 requirejs 的问题,一旦您习惯了它的结构,我发现它是一个非常强大且有用的工具。

_佩兹