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
}
]);
これはデバッグ中は期待どおりに機能しますが、残念ながらデュランダル オプティマイザーを使用して製品版をビルドすることはできません。実際にはビルドは機能します (main-built.js が正常に生成されます) が、プロダクション ファイルを参照してサイトを起動すると、次のエラーが発生します。
Uncaught Error: undefined missing durandal/../../../MPBase/durandal-app/models/Login
上記で説明したセットアップでビルドされたプロダクション ファイルを機能させる方法についてのアイデアをいただければ幸いです。
もちろん、モデルとビューを複数のプロジェクト間で再利用可能/共有可能にする方法に関する他のアイデアも受け入れています。
ありがとう