[英]Unable to load crossroads.js using RequireJS
我尝试使用RequireJS加载JS文件,但是交叉路口http://millermedeiros.github.io/crossroads.js/似乎未正确加载。 我已经使用Chrome开发工具栏进行了检查,并且实际上已加载了所有JS文件。 但是运行window.crossroad返回我未定义 ?
下面是我的requirejs配置。
index.html
<script data-main="scripts/config" src="scripts/require.js"></script>
config.js
require.config({
shim: {
"zepto.min": {
exports: "$"
},
"underscore.min": {
exports: "_"
},
"crossroads.min": {
exports: "crossroads"
} }
});
require(["zepto.min","underscore.min", "crossroads.min",], function() {
console.log("=> Loading app")
require(["main"]);
});
main.js
require(["hp-config", "hp-model", "hp-view", "hp-controller"], function () {
console.log("=> Init");
console.log(window.crossroads);
//$(document).ready( function(){ HP.C.init(); });
});
如果您查看十字路口的代码,您会发现它检测到它位于AMD环境(RequireJS是)中,并且调用是由自己define
的。 因此,您应该卸下它的垫片。 基本规则是:不调用define
的库需要填充程序,而调用define
的库则不需要。 window.crossroads
之所以未定义,是因为crossroads调用是define
而不是将自身导出到全局空间(在window
)。
给定您当前拥有的require.config
调用,更新后的调用将为:
require.config({
shim: {
"zepto.min": {
exports: "$"
},
"underscore.min": {
exports: "_"
}
}
});
上面的配置是所需的最小更改。 但是,我也建议不要在传递给require
或define
的名称中使用.min
。 因此,您的config.js
可能是:
require.config({
paths: {
zepto: "zepto.min",
underscore: "underscore.min",
crossroads: "crossroads.min"
},
shim: {
zepto: {
exports: "$"
},
underscore: {
exports: "_"
}
}
});
require(["zepto","underscore", "crossroads",], function() {
console.log("=> Loading app")
require(["main"]);
});
这样,如果您想切换到非最小版本(用于调试),则只需更改paths
设置,而不必到处需要这些模块并更改名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.