我可以将davisjs用作带有requirejs的AMD模块吗?我尝试过,但也许我忘记了require config中的某些内容?

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


这有效:

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

最佳答案

听起来好像有人遗失了Shim。您需要配置RequireJS才能将非AMD兼容的库改编为AMD模块,如下所示:

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

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


RequireJS documentation中的更多信息



调用Davis()直接可行,因为它可以在全局范围内使用。它只是没有“注册”为AMD模块:这就是为什么RequireJS要求undefined的原因。

10-05 20:15