我正在使用 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
我真的很感激关于如何使构建的生产文件与我上面描述的设置一起工作的任何想法。
当然,我也对如何使模型和视图在多个项目之间可重用/共享的其他想法持开放态度。
谢谢