HTML5クライアントとnode.jsで実行されているサーバーの間でWebSocketを介してメッセージングを実行しています。当然、私はメッセージ形式としてJSONを選択し、そのため、さまざまなメッセージコンテンツタイプと変換操作を定義する一般的なJavaScriptコードを作成しました。javascriptコードは両方のプロジェクト間で共有されます。
Webクライアントを1つのgitプロジェクトとして作成し、サーバーを別のgitプロジェクトとして作成しました。部分的には、phonegapを使用して、さまざまなタッチベースの環境用のWebkitベースのクライアントを構築しているためです。また、さまざまなロジックをうまく分離することもできます。
共通コードを共有するために、共通ロジック用に別のプロジェクトを作成し、gitのサブプロジェクトを使用してコードを他の2つのプロジェクトに「インポート」しました。
これで、html5ベースのプロジェクトで正常に機能します。これは、次のようにしてコードを含めることができるためです。
<script src="common/js/comms.js" type="text/javascript"></script>
ただし、ノードでは、コードを取得しようとして問題が発生しました。コードを取得するために、私は次のことを行うことになりました。
var fs = require('fs');
eval(fs.readFileSync('./common/js/comms.js').toString());
私が採用したアプローチは機能しますが、依存関係があると(a.jsが必要な場合はx.js、y.js、x.jsが必要です)、非常に厄介になり始めていることに気付きました。これらのエンティティのいずれかを使用したいすべての単一のnode.jsjsファイルに対してそれを行う必要があります。
私もこのeval
アプローチを使うのは苦手です。strictモードを使用したいのですが、セキュリティ上の問題はありません。evalモードとstrictモードは、油と水のように連携することを理解しています。
だから私の質問は、htmlプロジェクトとnode.jsプロジェクトの間に共有jsファイルを含めるための最良の方法は何ですか?私は厳格に従うものを好みます。
このトピックに関してはいくつかの質問がありますが、私が提起している特定の問題に対処する質問は見つかりませんでした。また、「サーバー」からファイルを「提供」したくないことも付け加えておきます。HTML5クライアントは「スタンドアロン」になります。
明確にするために、「一般的なjsファイル」にあるのは次のようなものです。
var Comms = function (options) {
...
}
HTML5では、参照はviaを介して行うことができnew Comms()
ます。これは、node.jsでも実行したいことです。