出了点问题,我无法理解。
_Layout.cshtml
有:
<body>
<script data-main="Scripts/main"
src="@Url.Content("~/Scripts/require.js")"
type="text/javascript">
</script>
@RenderSection("scripts", required: false)
</body>
/Scripts/main.js:
require.config({
paths: {
"jquery": "jquery-1.9.1"
}
});
一直到index.cshtml:
@section scripts
{
<script type="text/javascript">
require(['jquery'], function ($) {
});
</script>
}
并且它试图找到jquery.js抛出404。我做错了什么?
upd:是的,main.js被调用,如果在index.cshtml中注释所有内容并将其放到main.js的末尾,那就像
require([
'jquery'
], function ($) {
$(function(){
alert('jquery loaded');
})
});
显示消息
答案 0 :(得分:2)
我刚刚想到你的问题是什么。您正在使用路径,您应该使用地图。
尝试以下操作,它会将您的jquery文件映射到一个简短的名称。
require.config({
baseUrl: '/scripts',
map: {
"jquery": "jquery-1.9.1.js"
}
});
此外,如果您点击索引它没有及时加载您的requirejs文件,那么很有可能。如果你先在索引中声明它,我认为这可以防止竞争条件。
答案 1 :(得分:1)
当index.cshtml中的脚本块内的javascript运行时,您的require.config
块可能还没有运行。
答案 2 :(得分:1)
看来你应该将脚本部分放在_Layout.cshtml的head标签中,main.js的引用通常在head中,所以之前调用了配置,我猜这就是原因。
答案 3 :(得分:0)
所以我最后从data-main
删除_Layout.cshtml
属性并直接从该页面调用main:
@section scripts
{
<script type="text/javascript">
require(['Scripts/main'], function () {
require([ "views/home-index"] );
});
</script>
}