1

私が見つけたドキュメントはすべて、情報を得るために「他の人のページをスクレイピングする」ことjsdomに関するものだったようです。またはのいずれかを使用して、ユーザーがいるページを更新します。コードを書くときは、パブリック ディレクトリにある JavaScript ファイルにリンクする通常のタグを使用するだけでよいことはわかっていますが、それが可能であれば、サーバーからその方法を学びたいと思っています。私が本当に望んでいるのは、複数のユーザーがページに接続できるようにし、1 人のユーザーがアクションを実行したときにすべてのユーザーのページを更新できるようにすることです。たとえば、ボタン 1 は背景を黒にします。ボタン 2 は赤に、ボタン 3 は白に変わります。間違っている場合は訂正してください。ただし、タグを介して JavaScript ファイルにリンクすることで、それが可能になるとは思いません。だから見ているjsdomnode-jquery<script><script>jsdom:

jsdom.env({html: ???, src: jquery, done: callback });

わかりましたので、ここに問題番号 1があります。DOM オブジェクトを取得するために、このビットのコードで html に何を入力すればよいか、または何ができるかわかりません。私のファイルは jade で書かれているので、ファイルからロードすることはできません。次に、このコードをコードのルーティング部分に配置して、req変数から html を取得できるのではないかと考え始めました。そこで、ルーティング コードをいじり始めました。

exports.index = function(){
  res.render('index', {title: 'MyTitle'});
};

そして、このルーティング全体がすでに私の心を吹き飛ばしているとだけ言っておきます. もう一度試してみましres.renderたが、うまくいきません。したがって、問題番号 2につながります。DOM オブジェクトを取得して操作できたとしても、どうすればそれらをクライアントにプッシュできるかわかりres.renderません。言うまでもなく、再レンダリングする場合は別のページにリダイレクトする可能性があるため、目的が無効になることは言うまでもありません。

ユーザー接続を処理するために使用することを計画してsocket.ioいるので、おそらく鍵はそこにあります。多分私は a を設定できますsocket.on('button_click', function(){ ... });が、DOM 操作と DOM の更新を処理するためにその関数内に何を配置するか、または'button_click'クライアントがソケットにアクセスできないためにクライアント側でボタンを発行する方法がわかりません。イオ変数。

したがって、誰かがこれらのことを例を使用して私に説明するのを手伝ってくれたら、とても素晴らしいでしょう. 私は本当にこれらすべてを理解しようとしました.node.js、express.js、socket.io、jsdom、およびnode-jqueryのAPIドキュメントを調査して読むのに数日を費やしました。私が見つけたすべての例は、それ自体の領域にとって非常に基本的なものであり、実際にそれらを結び付ける例はないようです.

4

1 に答える 1

2

少しややこしい方向に進んでいます。

まず、jade を使用したことがある場合は、jade コンパイラを使用して html にコンパイルします。

次に、コンパイルしたら、html5 パーサーを使用するため、それを jsdom にプッシュできます。その後、通常の DOM API を介して操作できます。

第 3 に、クライアントのブラウザーで直接 DOM にアクセスすることはできません。通常、共有同期ビューのようなものを実装する方法は、socket.io を使用してデータ イベントを各クライアントに送信することです。そこで、これらのイベントを解釈し、UI で必要な変更を行うクライアント側の JavaScript を記述します。各クライアントをブートストラップするhtmlとjavascriptのセットを送信しています.サーバー上のメモリに完全なDOMを保持し、それを更新して変更をクライアントにブロードキャストしようとする人はめったにいません。あなたはこれを行うことができます、私はそれをお勧めしません. 通常、物事がどのように構造化されているかではありません。

第 4 に、ここで最初のパスでこれを行うのはかなり複雑です。todomvc -- http://addyosmani.github.com/todomvc/のようなクライアント側の mvc フレームワーク比較アプリを見ることをお勧めします。普通の古い JavaScript バージョンを含め、それぞれのソースを見てください。これは、これのクライアント側の部分を理解するのに十分なことを教えてくれます。次に、socket.io のようなものを使用してモデルを更新し、それらのモデルからの変更イベントに依存するビューを構築することを想像できます。これらすべてを mvc なしで行うことができますが、mvc を使用すると、関心事の適切な分離などを学び、人々がこれらのタイプのアプリケーションを通常どのように構築するかを学ぶことができます。

于 2012-10-03T05:33:06.423 に答える