問題タブ [om]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
clojurescript - Clojurescript で Om を実行するには、私の project.clj に何を入れるべきですか?
Github Om ページを見ましたが、どのバージョンを使用すべきか明確ではありませんか?
clojurescript - Om Web セッション (Clojurescript) を再生しますか?
別のマシンで GUI 全体に応答できる Clojurescript から Om セッションを作成したいと考えています。クライアントからサーバーにアトムを渡して変更のみを送信し、変更の履歴を別の場所で再生するにはどうすればよいですか?
アップデート
ウェブ上にデモをアップしました。次の場所に移動します。
connecttous.co
次に、Web ページの下部にある [以前のセッション] をクリックします。コードは次のとおりです。
clojurescript - Clojurescript Omのアプリケーション状態とコンポーネントローカル状態の違いは何ですか?
David Nolen の基本的な Om チュートリアルを読みましたが、アプリケーションの状態とコンポーネントのローカル状態の違いについてまだ少し混乱しています。カーソルが参照されるとき、それはこれらの一方または両方を参照していますか?
clojure - ClojureScriptとOmでユーザー入力に基づいてリストをフィルタリングする方法は?
Om (ClojureScript 用の reactjs ベースのライブラリ) を使い始めたところです。ユーザー入力に基づいてリストをフィルタリングしたいと思います。以下は機能しますが、解決策は複雑すぎるようです。より良いものはありますか?
animation - Clojurescript Om でアニメーションを作成する
私は Om でアニメーションを作成する方法を探していましたが、RaphaelJs コンポーネントを作成して中程度の成功を収めました。必要なアニメーションが得られますが、何らかの理由で Om が SVG 要素の複数のインスタンスをレンダリングします。
Om github フォルダーのアニメーションの例を見ると、アニメーション化する値を変更するために使用setInterval
されますが、これは理想的とは言えません。
私は CSSTransitionGroup アドオンを認識していますが、CSS で定義されたプリセット アニメーション間でしか切り替えることができないようです。それを使用してアニメーションを動的に定義できる場合は、お気軽に修正してください。
簡単なアニメーションを実行する良い例はありますか? 単純な形状を平行移動または回転させるだけで、そこからどのように取り組み始めるかのアイデアが得られます。
clojurescript - Emacs nreplでom.dom/render-to-strを呼び出す方法は?
次のオブジェクトの html 出力を表示したいと思います。
om.dom には render-to-str メソッドがあります。しかし、私がタイプすると
ClojureScript repl では、取得できるのは nil だけです。om.dom/render-to-str を呼び出すと、対応するエラー メッセージが表示されます。
奇妙なことに、repl のコード補完により、render-to-str 呼び出しが行われます。
om.dom/render-to-str が nil を返す問題は解決しました。問題は、実際のブラウザ repl ではなく、ヘッドレス repl に接続したことです。したがって、index.html が読み込まれず、react.js も読み込まれませんでした。
でも今は呼んでいる
戻り値
さらにいくつかのテストを行った後、次のように呼び出しを変更する必要があると思います。
最後の質問は次のとおりです。カーソルを作成するにはどうすればよいですか。
clojurescript - Om Clojurescriptで2つの#jsマップをマージするには?
Clojurescript で 2 つのマップをマージすると、次のように実行できます。
リテラルが使用されているOmで同様のことを達成するにはどうすればよいですか?次のようなものです(これは機能しません):
clojure - 複数のチャネルからのリストの項目の非同期更新
これが私がやろうとしていることです:
イベントのリストを表示するアプリを実行しています。イベントを作成すると、イベントはcore.asyncチャネルです。チャネルが最初に追加された場合、読み取りが必要であり、その状態をレンダリングします(何をしてもよい)、しかし後で、このチャネルは新しい値をリッスンする必要があり、それらの値が来ると、現在のレンダリングされた値を更新する必要があります。
より明確にするために一歩下がって、よりカジュアルな状況では、現在の要素のインデックスを取得してそのデータを更新するだけですが、更新イベントは最初に作成されてからずっと後に発生する可能性があるため、変更はインデックスが変更されたことです(一部この間に他の要素が削除される可能性があります)。
ここに表示される唯一の解決策は、チャネルが最初に追加されたときにチャネルのランダム ID を作成し、更新時にその ID を検索して更新することですが、その方法で私が必要とするため、ソリューションは理想にはほど遠いと思いますイベント リストで更新のフル スキャンを実行するには...
このことを行うために私が見逃しているより良い方法はありますか?
clojurescript - clojurescript om - 2D ベクトルからテーブルをレンダリングするより良い方法
私はClojure/ClojurescriptとOmが初めてで、少し苦労した後、2次元ベクトルからテーブルをレンダリングするこの方法を思いつきました:
これをより簡潔にする方法、または 1 つのコンポーネント関数からテーブル全体を作成する方法についての指針を探しています。
clojurescript - ClojureScript、Om、および Core.async: イベントを適切に処理する方法
リッチ クライアントの Web サイト デザインに Om を使用することを検討しました。また、core.async を使用するのはこれが初めてです。チュートリアルを読むhttps://github.com/swannodette/om/wiki/Basic-Tutorial削除操作を処理するための core.async チャネルの使用法を見てきました (ハンドラーですべての作業を行うのではなく)。そのアイテムを含むリストを実際に操作したいアイテムレベルにカーソルがあるスコープで削除コールバックが宣言されたため、そのチャネルを削除に使用しただけであるという印象を受けました。
チャネルについてさらに洞察を得るために、Rich Hickey の講演http://www.infoq.com/presentations/clojure-core-asyncを見ました。そこで彼は、チャネルを使用してイベント コールバックからアプリケーション ロジックを取得することがいかに良いアイデアであるかを説明しています。これにより、チュートリアルの削除チャネルの実際の目的は、アプリケーションを構造化する方法を示すことだったのだろうかと疑問に思いました。もしそうなら、
そのパターンに関連するベスト プラクティスは何ですか?
あらゆる種類のイベントに対して個別のチャネルを作成する必要がありますか? つまり、コントローラを追加して新しいイベントを作成する場合、アプリケーションの別の場所でオブジェクトをグローバル状態に追加するために使用されるオブジェクト作成用の新しいチャネルも作成しますか?
アイテムのリストがあり、1 つのアイテムに詳細/簡潔な状態フラグがあるとしましょう。である場合
detailed?
はtrue
より多くの情報を表示し、 である場合detailed?
はfalse
より少ない情報を表示します。カーソルで使用するオンクリック イベントを関連付けましたom/transact!
(グローバル状態オブジェクト内のリスト項目へのビューです)。
これは非常に簡潔なスニペットであり、コールバック イベントを実際のロジックの変更から分離する手段としてチャネルを使用することの全体的な利点は、最初は努力する価値がないように見えますが、より複雑な例の全体的な利点はこれを上回ります。しかし一方で、このような詳細ではないトグル用に追加のチャネルを導入すると、ソース コードにもかなりの負荷がかかるようです。
設計上の問題全体に関するヒントやヒント、またはその他の考えを提供し、それらを展望していただければ幸いです。私はそこで少し途方にくれた気がします。