RequireJS的Hottowel Durandal 2问题

时间:2013-08-21 17:00:19

标签: requirejs durandal hottowel

当Durandal 2.0问世时,我一直致力于Hottowel项目,所以我自然而然地升级了。它混淆了文件结构,将require.jsdurandal文件夹移动到Scripts文件夹等。我最终将durandal文件夹移回App文件夹,与原始Hottowel模板一样,并指向require.jsScripts文件夹中的index.cshtml

但突然间,我在页面加载时遇到了这些错误:

GET http://localhost:7153/App/jquery.js 404 (Not Found) require.js:1880
GET http://localhost:7153/App/plugins/history.js 404 (Not Found) require.js:1880
GET http://localhost:7153/App/knockout.js 404 (Not Found) require.js:1880

我在加载require和start durandal之前加载jQuery和knockout捆绑(使用ASP.NET捆绑):

@Scripts.Render("~/scripts/vendor")
    @if(HttpContext.Current.IsDebuggingEnabled) {
        <script type="text/javascript" src="~/Scripts/require.js" data-main="@Url.Content("~/App/main.js")"></script>
    } else {
        <script type="text/javascript" src="~/App/main-built.js"></script>
    }

知道怎么解决吗?我不想再回到Durandal 1.2。

1 个答案:

答案 0 :(得分:1)

考虑require尝试查找文件的位置。例如,如果http://localhost:7153/App/jquery.js导致404,那么我认为是因为该文件不在该位置。

RequireJS将根据baseUrl加载资源(如果已指定),以及作为任何require.config()调用的一部分设置的任何路径。

看看你是否可以找到将jQuery指定为定义模块的依赖项,或者需要它的位置。我认为它只是被要求作为'jquery'。

在这种情况下,您需要告诉需要jQuery所在的位置。同样适用于淘汰赛。对于Durandal的东西,您可能需要将整个durandal文件夹重新指定到特定的位置,具体取决于您找到文件的位置。

您的require config调用可能如下所示:

require.config({
    baseUrl: '/',
    paths: {
        'jquery': 'scripts/jquery',
        'knockout': 'scripts/knockout-debug',
        'durandal': 'scripts/durandal'
    }
});

如果可能,请查看Durandal示例2.0,您将看到示例中使用的require.config(),您可以将其与文件夹结构进行比较。