0

我正在学习 DurandalJs 并尝试从不同的域加载远程视图,但是,requireJs 不断将“.js”附加到我的 html 视图的 url 中,导致 404 错误。我的目标是建立一个框架,我可以在其中为使用我的应用程序的不同客户重用 html 片段。这是我的客户端应用程序的 index.html 文件中对 requirejs 的调用:

< script src="http://myframework.com/lib/require/require.js" 
  data-main="http://myframework.com/lib/framework"></script>

请注意,我正在从与我的客户端应用程序完全不同的域加载 require.js。我正在将我的应用程序的入口点设置为 myframework.com 服务器上存在的 framework.js。这是farmework.js:

    var framework = 'http://myframework.com/';

    require.config({

        baseUrl: 'app/',

        //Framework paths
        paths: 
        {
            'framework':        framework,
            'appBase':          framework + 'appBase',
            'lib'      :        framework + 'lib',      
            'durandal':         framework + 'lib/durandal',
            'jquery':           framework + 'lib/jquery/jquery-2.1.0.min',
            'knockout':         framework + 'lib/knockout/knockout-3.1.0'
             ...
        },
        urlArgs: 'v=5.1.0.5'
    });

    require(['main']);

在我的远程服务器上的 framework.js 运行后,我在我的框架中建立了一组资源路径。我还将 baseUrl 设置为驻留在我的客户端实现上的“app”。所以,最终结果是我有一组远程资源和一组本地资源。请参阅此链接:我如何完成此操作的来源

无论如何,到目前为止,一切都在进行中。我能够加载我的远程资源。我可以在我的客户端上加载“主要”。尝试加载远程视图模型和关联视图时会发生此问题。我有一个“appBase”路径,我希望在其中拥有通用的 viewModel 和视图,以便在我的应用程序的不同实现中加载。我的路线设置如下:

define(['plugins/router'], function (router)
{
    return {
        router: router,
        activate: function () {
            return router.map([
                { route: ['', 'home'], moduleId: 'appBase/viewmodels/home',title: 'Welcome'},
            ]).mapUnknownRoutes('hello/index', 'not-found')
              .activate();
        }
    };
});

请注意,我使用 'appBase/viewmodels/home' 作为 moduleId。appBase 是在我的框架中建立的路径之一,它指向我的远程服务器上的一个位置。requireJs 正在查找远程资源的路径,但它将“.js”附加到 html 文件扩展名,导致 404 未找到。requireJs 正在产生这个:

http://myframework.com/appBase/views/home.html.js

关于如何让 DurandalJs 在远程服务器上加载视图模块及其视图的任何想法?为什么 .js 会附加到 html 资源的 Url?谢谢你的帮助。

4

1 回答 1

0

我想出了如何删除“.js”扩展名。它与跨域请求有关。在这里找到非常简单的解决方案:

http://rockycode.com/blog/cross-domain-requirejs-text/

于 2014-03-18T05:22:20.743 回答