【问题标题】:Require.js in MVC appMVC 应用程序中的 Require.js
【发布时间】:2013-03-20 20:08:27
【问题描述】:

出了点问题,我想不通。

_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>
}

它会抛出 404 试图查找 jquery.js。我做错了什么?

upd: 是的 main.js 被调用,如果注释 index.cshtml 中的所有内容并将其放在 main.js 的末尾,则类似于

require([
    'jquery'
], function ($) {
   $(function(){
      alert('jquery loaded');
   })
});

它显示消息

【问题讨论】:

  • 首先,你为什么要渲染脚本?让 requireJs 来解决这个问题。其次,你有没有调试到 main.js 看是否被调用?
  • 愚蠢的问题:jquery.js 是在正确的地方,是吗?
  • 是的,@DavidL main 已被调用。我希望每个视图都有code-behind.js。所以每个视图脚本部分都应该需要一个模块
  • @Agzam 这是一种方法。但是,这是传统的全视图应用程序还是部分/SPA 应用程序?如果每个控制器都返回一个全新的视图,我可以理解您的设计决定。如果没有,我建议使用 RequireJS 来处理加载什么模块以及何时加载

标签: c# javascript asp.net-mvc-4 requirejs


【解决方案1】:

我刚刚想到你的问题是什么。您正在使用应该使用地图的路径。

尝试以下操作,它会将您的 jquery 文件映射到一个短名称。

require.config({
   baseUrl: '/scripts',
   map: {
       "jquery": "jquery-1.9.1.js"
   }
});

此外,如果您点击 index 很有可能没有及时加载您的 requirejs 文件。如果您首先在索引中声明它,我认为这将防止出现竞争条件。

【讨论】:

    【解决方案2】:

    @David L is correct.

    当 index.cshtml 中脚本块内的 javascript 运行时,您的 require.config 块可能尚未运行。

    【讨论】:

      【解决方案3】:

      看来你应该把script部分放在_Layout.cshtml的head标签中,main.js的引用一般在head中,所以之前调用了config,我猜是这个原因。

      【讨论】:

        【解决方案4】:

        所以我最终从_Layout.cshtml 中删除了data-main 属性并直接从页面调用main:

        @section scripts
        {
            <script type="text/javascript">
                require(['Scripts/main'], function () {
                    require([ "views/home-index"] );
                });
            </script>
        }
        

        【讨论】:

          猜你喜欢
          • 2023-03-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多