3

私は clojurescriptone (きちんとしたプロジェクト) をいじって、clojurescript がどのように機能するかを理解しようとしました。3 つのコンポーネント、ブラウザー、ブラウザー repl、および http サーバーがどのように相互作用するかは明確ではありません。

開発環境にemacsを使用しています

ClojureScript(CS) をよりよく理解するために、clojurescriptone(CS1) を移植して lein2 を使用し、nrepl を repl として使用することにしました。ポートは機能し、CS1 環境を起動してブラウザとやり取りすることができました。私は - 今のところ - 下位の Lisp プロセスを開始して CS repl を操作するのではなく、clojure repl 内で CS repl を実行することを好みます。これの唯一の欠点は、CS repl が stdin から入力を受け取り、emacs が stdin を使用するように促すことです。これを回避するために、CS1 の一部のコードを置き換えて、Chas Emerick によって書かれた piggieback ライブラリから repl を開始しようとしています。

そうすることで、これらのコンポーネントがどのように相互作用するかについての理解の限界に達しました。どうやら私が収集できるものから、ブラウザのreplは、いくつかのポートでリッスンする「サーバー」です。ずっと、HTTP サーバーにリクエストを送信し、結果を評価した後に出力をブラウザーにリダイレクトするのはある種のクライアントだと思っていました (どのように??)。今、私はそれが事実であるかどうか確信が持てません。

これらのコンポーネントはどのように相互作用しますか?

説明が長くなってすみません!!!

シド

4

1 に答える 1

3

ブラウザー REPL には、サーバー側とクライアント側があります。サーバー側はメインの Clojure プロセスで実行されます。ClojureScript REPL 自体は実際には bREPLサーバーで実行されています。

bREPLクライアントはブラウザーの ClojureScript で実行され、サーバーへのロング ポール AJAX 接続を維持します。サーバー上のREPLに何かを入力すると、JavaScriptにコンパイルされ、ロングポールメカニズムを介してクライアントに送信され、クライアントで評価されて応答が返されます。

サーバーの ClojureScript REPL は、通常の Clojure REPL の「内部」で実行されます。それがどのように機能するかの正確なメカニズムは、使用している REPL によって異なります。nREPL 自体はクライアント/サーバー アーキテクチャ上で実行されるため、混乱を招きやすいことが容易にわかります。

それはまったく役に立ちますか?

于 2012-09-25T15:10:06.707 に答える