因为我需要服务器端的重要设置,所以我需要将主文件放在HTML文件中。但我现在的问题是别名文件仍然加载,但不能作为变量使用。 (也不在app.js文件或其他定义的文件中。)所以当我这样做时:(见HTML页面底部)
require([
'jquery'
'app'
], function($, App) {
alert($);
App.initialize();
});
警报将显示未定义的变量,但是当我查看我加载的文件时。加载了jQuery文件。 (与下划线和主干变量相同的问题,但不是app变量,只有别名的问题。) 你知道如何解决这个问题吗?
<html>
<head>
<title>Domain.net</title>
<link rel="stylesheet" href="css/reset.css" />
<link rel="stylesheet" href="css/style.css" />
<script src="js/lib/modernizr.js"></script>
<script src="js/lib/require.js"></script>
<script type="text/javascript">
// Require.js allows us to configure shortcut alias
require.config({
baseUrl: "js",
paths: {
jquery: 'lib/jquery',
underscore: 'lib/underscore',
backbone: 'lib/backbone',
templates: '../templates'
}
});
define('config', function() {
return {
/** My serverside config */
}
});
//Load the App
require([
'jquery',
'app'
], function($, App) {
alert($);
App.initialize();
});
</script>
答案 0 :(得分:1)
我不确定您使用的是哪个版本的jQuery,但如果它不是1.7或更高版本,则默认情况下它不支持amd,这可以解释为什么你得到undefined
。在这种情况下,最好的解决方案是更新它。
或者,尝试在您的配置中添加shim exports: jQuery
:
require.config({
baseUrl: "js",
paths: {
jquery: 'lib/jquery',
underscore: 'lib/underscore',
backbone: 'lib/backbone',
templates: '../templates'
},
shim: {
jquery: {
exports: 'jQuery'
}
}
});
另请注意,您设置服务器端配置的方式很容易出现竞争情况,请参阅此answer。