我可以将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
的原因。