3

私はjqueryフルカレンダーのような完全に開発されたjqueryコンポーネントを持っています

私のコンポーネントはブラウザで遅く動作しているようです(そのカレンダーではありません)。そこで、nodeJsを使用してサーバーで実行することを考えました。

サーバーですべてのDOM操作を実行したいのですが、HTMLページのみをブラウザーに送信する必要があります。ゼロから始めればすべてが可能だと思われますが、やりたくありません。これが私がやろうとしていたことです

  • ユーザーがURLを入力すると、サーバーにアクセスする必要があります。
  • 次に、サーバーですべてのJとcssをコンパイルする必要があります
  • 次に、htmlファイルをブラウザに返す必要があります
  • ユーザーが再度何らかの操作を実行すると、サーバーにアクセスしてすべての変更を行う必要があり、その後サーバーに送信する必要があります

誰かが私にこれを行う方法または私が望むものを達成するための他の最良の代替方法を教えてもらえますか?シンプルなデモアプリの方が良いでしょう。前もって感謝します。

4

2 に答える 2

1

there's a jquery node package. So you can install that package and the use jquery as you would otherwise have done

install jquery for node.js

npm install jquery

then add this line to your script

var $ = require('jquery');

if you are on windows you might run into troubles with contextify while installing jquery. If you do search for the error message (in essence you need to setup make for your environment)

于 2013-02-25T12:27:47.433 に答える
1

DOMの仕組みについての質問には混乱があるかもしれません。

jsDomなどのライブラリを使用してnode.jsサーバー上にDOMを持つアプリをレンダリングすることは可能ですが、同じページがクライアントに提供される場合、そのアプリは完全に異なるDOMインスタンスを持ち、それらの2つの間で通信します。そのため、アプリがサーバー上のDOMに加えた変更を、クライアント上のDOMに簡単に伝達することはできません。

コンポーネントがブラウザで低速で実行されているように見える場合は、DOM操作をサーバーにオフロードしようとするよりも、コンポーネントを効率的に処理することで良い結果が得られる可能性が高くなります。

2つの異なるシナリオを見て、それらをブラウザーが実際に実行するものに分解すると、なぜそれが悪い考えであるかがわかります。

シナリオ(1)-サーバーでDomの変更をレンダリングする

  1. ステップ1-クライアントがサーバーから最初のhtmlページをロードする(遅い)
  2. ステップ2-ユーザーがクライアントのページを操作する(高速)
  3. ステップ3-クライアントはユーザーインタラクションをサーバーに送り返します(vslow)
  4. ステップ4-サーバーはDom(slow)をロードします
  5. ステップ5-サーバーはDomの変更を実行します(高速)
  6. ステップ6-サーバーは再レンダリングされたHTMLをクライアントに送り返します(遅い)
  7. ステップ7-クライアントがサーバーから新しいHTMLをレンダリングする(遅い)

シナリオ(2)-クライアントでDomの変更をレンダリングする

  1. ステップ1-クライアントがサーバーから最初のhtmlページをロードする(遅い)
  2. ステップ2-ユーザーがクライアントのページを操作する(高速)
  3. ステップ3-クライアントはDomの変更を実行します(高速)
  4. ステップ4-クライアントは変更されたDOMをレンダリングします(遅い)

DOMレンダリングをサーバーにオフロードするよりも、コンポーネントを高速化するために作業する方がはるかに優れています。これは、jqueryコードを高速化する方法に関する優れたブログ投稿です

質問で提案したワークフローを本当に進めたい場合は、jsDomライブラリを調べることをお勧めしますが、実際にはお勧めしません。

于 2013-03-04T17:03:34.883 に答える