問題タブ [clojurescript]
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.
javascript - clojurescript を使用して慣用的に json オブジェクトにアクセスする
javascriptオブジェクトにアクセスするための慣用的なclojurescriptのドキュメントを持っている人はいますか(jsonとして返され、本質的にハッシュ)?
AJAX リクエストを介して返された JSON オブジェクトがあります。
clojurescript を使用してこれらのフィールドにアクセスするにはどうすればよいですか?
できます:
しかし、ネストされた値とオブジェクトがある場合、これはどのように機能するのでしょうか?
上記は、data.o.answer.
clojurescriptでjsonオブジェクトにアクセスする慣用的な方法は何ですか?
ノート:
JS 構文を使用して実際に要素を参照できることに気付きました。これは実際には非常に便利です。したがって、以下は正しく機能します。
clojure - ClojureScript REPL での require の構文
これは確かに些細なことですが、どこにも見つかりませんでした。ClojureScript をいじり始めようとしています。ClojureScript Oneで ClojureScript REPL に到達できました。
ブラウザーに接続して、そこでいくつかの単純な DOM クエリと操作を実行できます。ここで、いくつかの便利な関数をモジュールに保存し、必要に応じてロードしたいと思います。これは私が立ち往生するところです。
次のようなことを試してみると
例外が発生しますFileNotFoundException Could not locate project/dom__init.class or project/dom.clj on classpath
。project/dom.cljs
サンプルのすべての ClojureScript ファイルがこの拡張子を使用していることを確認したので、実際には しかありません。
名前を に変更しようとするとproject.clj
、名前空間が見つからないという苦情が表示されますjs
。もちろん、私はその名前空間をモジュールでかなり使用しています。
ブラウザーで動作する単純な ClojureScript ファイルを作成し、REPL からロードする適切な方法は何ですか? この単純な例を実行できるようにするものは何でも実行できます。
clojure - ClojureScriptREPLのエラーからの回復
ClojureScriptを少しいじろうとしていますが、思ったより面倒です。
ブラウザに接続されたREPLを取得し、ライブページを操作することができます。問題は、例外から回復できないことです。私はよくタイプミスをして例外を引き起こします。さらに、ClojureScriptを回避する方法を見つけながら、便利な関数の小さなライブラリを収集しています。これらの関数に間違いが含まれていることがあり、これらのモジュールをロードすると、他の例外が発生します。
この状況で私ができる唯一のことは、Ctrl-Cですべてを停止することです。これは苦痛です。何かを行う前に、REPLを再度開始する必要があります。これには、JVMの開始が含まれますが、これは正確には迅速ではありません。
これまでのすべてのコンテキストを失うことなく、REPLの例外から回復する方法はありますか?
clojure - ClojureScript相互運用
ClojureScriptでJavascriptオブジェクトのプロパティにアクセスする方法を見つけようとしています。物件名を事前に知っていれば簡単です。foo.bar
私がするために
実行時にのみ名前がわかっているプロパティにアクセスする方法はありますか?JS構文に相当するものを探しています
foo[dynamicBar]
clojurescript - ClojureScriptでdefmacroが定義されていませんか?
defmacro
ClojureScript で使用しようとしていますが、コンソール エラーが発生します。
エラーを生成しているテスト コードは次のとおりです。
生成された JavaScript コード:
私が間違っていることについての指針はありますか?
html - ClojureScriptマクロを使用してjavascriptメソッド呼び出しコードを生成しますか?
ClojureScriptを使用して、どのブラウザー固有のバージョンの「requestAnimationFrame」メソッドが定義されているかを検出しています。私は次のコードを使用します:
これは問題なく機能し、ひどいことではありませんが、メソッド名をリストに入れられるようにしたいと思っています。
次に、リスト内の各シンボルのマクロを呼び出して、無名関数コードを生成します。
私はそのように機能するものが欲しいです:
しかし、しばらくマクロをいじってみたところ、この効果は得られませんでした。問題の一部は、メソッド名とドット表記が奇妙に機能することであり、これが可能かどうかさえわかりません。
これを機能させるためのヒントはありますか?ありがとう!
clojure - Clojure letは、同じ名前の複数のバインディングを許可します
Clojureで気付いたいくつかの動作を理解しようとしています。
同じバインディング名を複数回繰り返して、letバインディングを作成することができます。
バインディングが評価されることを理解していますが、これはほとんど意味があります。
ドキュメントからの私の理解は、「letで作成されたローカルは変数ではありません。一度作成されると、それらの値は決して変更されません!」ということです。
上記の構文は実際にバインディングの値を変更しますか?
これはエラーが発生するように感じます。
一種の補足として:
興味深いことに、上記をclojurescriptを使用してJSとして出力できます。
ここでは、値がすべて実際には別個の変数であることがわかります。これは、内部で何が起こっているかを示していますが、いくつかの説明が非常に役立ちます。
clojure - マルチメソッドの一般的な構文
質問が些細な場合は申し訳ありませんが、グーグルで調べてもどこにも導かれません。defmulti
との一般的な構文は何defmethod
ですか? 単純なマルチメソッドを書くことはできますが、docstring、前後の条件、メタデータなどをどこに置けばよいかわかりません。
実はClojureよりもClojureScriptに興味があるので、両者の違いがあれば教えてください。
events - Clojure/ClojureScriptでのイベント駆動型プログラミングの処理
ClojureScriptでイベントをモデル化する方法を理解しようとしています。JavaScriptでイベントキューを設計するのは簡単です。関数の(可変)配列を保持し、配列からコールバックを追加または削除するためのヘルパー関数を提供するだけです。イベントをトリガーするときは、配列にリストされているすべてのコールバックを調べて、それらを次々に呼び出します。
このパラダイムは機能的なスタイルとはほど遠いものです。たとえば、副作用がない限り、コールバックをトリガーしても意味がありません。さらに、可変配列を使用して実装されます。それでも、ClojureScriptでは、有用なことを行うためにイベント駆動型プログラミングを実行できる必要があるように思われます。今、私はGoogle Closureがすでにイベントライブラリを実装していることを知っていますが、私の質問はそれをネイティブに実装することについてです。
すべての基本的なClojure/ClojureScriptデータ型は不変であるため、このメカニズムを実装するための慣用的な方法は何でしょうか。参照を変更しますか?ホストからの可変データ構造(JavaまたはJavaScript)に頼っていますか?
私が正しく理解していれば、エージェントはおそらくClojureの適切なツールですが、現在、ClojureScriptには実装されていないようです。
google-closure-compiler - ClojureScript extern 'on' イベント
Twitter Bootstrap のモーダル ダイアログ jQuery プラグインを ClojureScript で使用しようとしていますが、これは高度な最適化なしで正常に動作しますが、Google Closure がメソッド名を変更すると、on
メソッドはza
.
私はon
externs ファイルを使用してマンジされないように保護しようとしてきましたが、これを修正する定義を作成することができませんでした。チップ?