2

私はしばらくこれに苦労してきましたが、進歩はありません。私はいつも予期せぬことに出くわします。

http リクエストの入力パラメーターに基づいて、require.js、jquery、および d3.js を使用してグラフ (svg) を構築する node.js (express) のブラウザー コードをサポートしたい

私が抱えている問題は、requirejs が初期化されると、常に同じ jquery および d3.v2 モジュールを返し、これらはすべて (クライアントの http 要求ごとに) 同じ DOM (jsdom) インスタンスで処理を開始することです。最終的な結果は、グラフが混ざり合うことです。

require.js が見えなくなったら簡単ですが、require.js モジュールと依存関係管理を多用する既存のブラウザー コードをすべて更新する必要があります。

これにアプローチする方法に関するすべてのヒント、またはこのセットアップを示すコードへのポインターは、温かく感謝されます!

ありがとう

ピーター

4

1 に答える 1

0

最終的にうまくいったトリックは、「ブラウザー」環境をセットアップする node.js コードと、ブラウザーでも実行される実際のモジュールを明確に分離することです。

したがって、http リクエストが入ったときの流れは次のようになります。

  • jsdom node.js モジュールをロードし、html ドキュメントとウィンドウを作成します

  • そのドキュメントに、require.js (node.js r.js スクリプトではなく、ブラウザー バージョン) をロードするスクリプト要素を必ず追加してください。

  • ウィンドウ「load」イベントリスナーで、jsdom を介してロードされた requirejs モジュールを選択します。これは var requirejs = window.require で行うことができます

  • requirejs モジュールを構成する (requirejs.config 呼び出し)

  • node.js の require メソッド (requirejs のメソッドではない) を使用して、すべてのネイティブ ノード モジュールを明示的にロードします。

  • 最終的に「ブラウザ」コードを呼び出す

もっと良い方法があると思いますが(これは確かに少し回り道です)、少なくとも今はうまくいきます。

おそらく他の誰かがここに来て、これが役に立つと思うでしょう

ピーター

于 2012-12-13T21:37:00.987 に答える