1

我可以将 davisjs 用作带有 requirejs 的 AMD 模块吗?我试过了,但也许我在需要配置中忘记了一些东西?

requirejs([
   "jquery",
   "davis"
],
function   ($, routing) {
    var app = routing(function () {
        this.get('/welcome/:name', function (req) {
            alert("Hello " + req.params['name']);
        });
    });
}

这有效:

var app = Davis(function () {..});
4

1 回答 1

1

听起来有人遇到了 Missing Shim 的案例。您需要配置 RequireJS 以将非 AMD 兼容的库调整为 AMD 模块,如下所示:

requirejs.config({
  paths: {
    Davis: 'script/davis'
  },
  shim: {
    Davis: {
      exports: 'Davis'
    }
  }
});

require([
  "Davis"
], function (davis) {
  console.log("Davis?", davis);
});

RequireJS 文档中的更多信息


直接调用Davis()有效,因为它在全局范围内可用;它只是没有“注册”为 AMD 模块:这就是undefinedRequireJS 要求它的原因。

于 2013-08-16T14:25:08.037 回答