2

ClojureScript のライフサイクルと repl での評価を理解しようとしています。

私が理解しているように、次のコマンドでreplを開始し、次のコマンドlein trampoline cljsbuild repl-listenを使用してリッスンすると(repl/connect "http://localhost:9000/repl")-

  1. ポート 9000 でリッスンする TCP サーバーを作成します。
  2. ブラウザは、何らかの変更をポーリングする何らかのポーリングを確立します。
  3. repl でコードを実行すると、コンパイルされた*.jsファイルが変更されます。
  4. この *.js ファイルは、ブラウザに提供されます。
  5. ブラウザーは、現在の *.js ファイルを新しいファイルに置き換えます。
  6. したがって、repl で実行されたコードによる変更がブラウザに表示されます。

私はこれをよりよく確認し、理解しようとしています。誰かがこれについて詳しく説明したり、それをよりよく説明するリンクを教えてくれたりしていただければ幸いです。

4

1 に答える 1

4

厳密に言うと、javascriptの実行環境はブラウザである必要はありませんが、「ほとんどの」用途はブラウザです。

ブラウザベースの実行環境の場合:

  1. ポート9000で作成されたHTTPサーバー
  2. ブラウザはHTTPロングポーリングを使用してサーバーに接続し、実行環境を確立します。(これはHTTP GETtoですhttp://server:9000/repl
  3. REPLでコードが実行されると、clojurescriptはjavascriptにコンパイルされ、javascriptはHTTPロングポーリングで「応答」(以下を参照)として送信されます。(これは「ブラウザにjsファイルを提供する」のではなく、関連するフォームだけであることに注意してください)
  4. javascriptフォームはブラウザで評価されます。
  5. ブラウザのJavaScript環境が最新になりました。

これに従う最も簡単な方法は、グーグルクローム開発者ツールのネットワークモニターのようなものを使用してhttpトラフィックを監視することです。

注: HTTPロングポーリング設定では、要求と応答の間に混乱が生じる可能性が無限にあります。これは次の場合に役立ちます。

  [REPL]    -> [browser] travels via HTTP Response
  [browser] -> [REPL]    travels via HTTP Request.
于 2013-03-06T21:45:01.807 に答える