我正在学习 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?谢谢你的帮助。