【发布时间】:2013-07-09 14:45:02
【问题描述】:
我正在使用 Durandal JS 构建多个应用程序。所有这些应用程序都位于同一文档根目录下的同一台服务器上,并共享一些公共代码。例如,他们都使用相同的模型和视图进行登录。
如何在所有这些应用程序中重用/共享登录模型和视图,而无需将文件复制并粘贴到项目中?
我已经尝试了以下文件夹结构:
ProjectsDir/Project1/app/durandal/..
/models/Shell.js, Main.js, ...
/views/Shell.html, Main.html, ...
/main.js
/main-built.js
ProjectsDir/Project2/app/durandal/..
/models/Shell.js, Main.js, ...
/views/Shell.html, Main.html, ...
/main.js
/main-built.js
ProjectsDir/ProjectsBase/app/models/Login.js
/views/Login.html
这样,通过在相应的 shell.js 中设置正确的路由,就可以从所有其他项目中引用我的 ProjectsBase 中的相同登录模型和视图。这条路线可能看起来像这样:
router.map([
{
url: 'Login',
moduleId: '../../ProjectsBase/app/models/Login',
name:'Login',
visible: true
},
{
url: 'Main',
moduleId: 'models/Main',
name:'Main',
visible: true
}
]);
这在调试过程中按预期工作,但不幸的是,使用 durandal 优化器构建生产版本不起作用。 实际上,构建确实有效(它可以很好地生成 main-built.js),但是当我使用引用的生产文件启动站点时,出现以下错误:
Uncaught Error: undefined missing durandal/../../../MPBase/durandal-app/models/Login
对于如何使构建的生产文件与我上面描述的设置一起工作的任何想法,我真的很感激。
当然,对于如何使模型和视图在多个项目之间可重用/共享的其他想法,我也持开放态度。
谢谢
【问题讨论】:
-
您当前的构建过程是什么?你用咕噜声吗?
-
我现在真的没有构建过程。我正在谈论的项目基本上不是太大并且仅供私人使用,因此构建过程将是手动组合/缩小所有文件与 Durandal 优化器,然后将它们上传到我服务器上的“生产”位置。我已经在Durandals Google Groups 上收到了我的问题的答案,这似乎很有希望。在我成功尝试了那里的建议后,我将自己回答这个问题......
标签: javascript single-page-application durandal singlepage