問題タブ [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.

0 投票する
5 に答える
8767 参照

javascript - clojurescript を使用して慣用的に json オブジェクトにアクセスする

javascriptオブジェクトにアクセスするための慣用的なclojurescriptのドキュメントを持っている人はいますか(jsonとして返され、本質的にハッシュ)?

AJAX リクエストを介して返された JSON オブジェクトがあります。

clojurescript を使用してこれらのフィールドにアクセスするにはどうすればよいですか?

できます:

しかし、ネストされた値とオブジェクトがある場合、これはどのように機能するのでしょうか?

上記は、data.o.answer.

clojurescriptでjsonオブジェクトにアクセスする慣用的な方法は何ですか?

ノート:

JS 構文を使用して実際に要素を参照できることに気付きました。これは実際には非常に便利です。したがって、以下は正しく機能します。

0 投票する
1 に答える
1643 参照

clojure - ClojureScript REPL での require の構文

これは確かに些細なことですが、どこにも見つかりませんでした。ClojureScript をいじり始めようとしています。ClojureScript Oneで ClojureScript REPL に到達できました。

ブラウザーに接続して、そこでいくつかの単純な DOM クエリと操作を実行できます。ここで、いくつかの便利な関数をモジュールに保存し、必要に応じてロードしたいと思います。これは私が立ち往生するところです。

次のようなことを試してみると

例外が発生しますFileNotFoundException Could not locate project/dom__init.class or project/dom.clj on classpathproject/dom.cljsサンプルのすべての ClojureScript ファイルがこの拡張子を使用していることを確認したので、実際には しかありません。

名前を に変更しようとするとproject.clj、名前空間が見つからないという苦情が表示されますjs。もちろん、私はその名前空間をモジュールでかなり使用しています。

ブラウザーで動作する単純な ClojureScript ファイルを作成し、REPL からロードする適切な方法は何ですか? この単純な例を実行できるようにするものは何でも実行できます。

0 投票する
1 に答える
162 参照

clojure - ClojureScriptREPLのエラーからの回復

ClojureScriptを少しいじろうとしていますが、思ったより面倒です。

ブラウザに接続されたREPLを取得し、ライブページを操作することができます。問題は、例外から回復できないことです。私はよくタイプミスをして例外を引き起こします。さらに、ClojureScriptを回避する方法を見つけながら、便利な関数の小さなライブラリを収集しています。これらの関数に間違いが含まれていることがあり、これらのモジュールをロードすると、他の例外が発生します。

この状況で私ができる唯一のことは、Ctrl-Cですべてを停止することです。これは苦痛です。何かを行う前に、REPLを再度開始する必要があります。これには、JVMの開始が含まれますが、これは正確には迅速ではありません。

これまでのすべてのコンテキストを失うことなく、REPLの例外から回復する方法はありますか?

0 投票する
2 に答える
6805 参照

clojure - ClojureScript相互運用

ClojureScriptでJavascriptオブジェクトのプロパティにアクセスする方法を見つけようとしています。物件名を事前に知っていれば簡単です。foo.bar私がするために

実行時にのみ名前がわかっているプロパティにアクセスする方法はありますか?JS構文に相当するものを探していますfoo[dynamicBar]

0 投票する
1 に答える
1917 参照

clojurescript - ClojureScriptでdefmacroが定義されていませんか?

defmacroClojureScript で使用しようとしていますが、コンソール エラーが発生します。

エラーを生成しているテスト コードは次のとおりです。

生成された JavaScript コード:

私が間違っていることについての指針はありますか?

0 投票する
1 に答える
852 参照

html - ClojureScriptマクロを使用してjavascriptメソッド呼び出しコードを生成しますか?

ClojureScriptを使用して、どのブラウザー固有のバージョンの「requestAnimationFrame」メソッドが定義されているかを検出しています。私は次のコードを使用します:

これは問題なく機能し、ひどいことではありませんが、メソッド名をリストに入れられるようにしたいと思っています。

次に、リスト内の各シンボルのマクロを呼び出して、無名関数コードを生成します。

私はそのように機能するものが欲しいです:

しかし、しばらくマクロをいじってみたところ、この効果は得られませんでした。問題の一部は、メソッド名とドット表記が奇妙に機能することであり、これが可能かどうかさえわかりません。

これを機能させるためのヒントはありますか?ありがとう!

0 投票する
3 に答える
1425 参照

clojure - Clojure letは、同じ名前の複数のバインディングを許可します

Clojureで気付いたいくつかの動作を理解しようとしています。

同じバインディング名を複数回繰り返して、letバインディングを作成することができます。

バインディングが評価されることを理解していますが、これはほとんど意味があります。

ドキュメントからの私の理解は、「letで作成されたローカルは変数ではありません。一度作成されると、それらの値は決して変更されません!」ということです。

上記の構文は実際にバインディングの値を変更しますか?

これはエラーが発生するように感じます。

一種の補足として:

興味深いことに、上記をclojurescriptを使用してJSとして出力できます。

ここでは、値がすべて実際には別個の変数であることがわかります。これは、内部で何が起こっているかを示していますが、いくつかの説明が非常に役立ちます。

0 投票する
2 に答える
2025 参照

clojure - マルチメソッドの一般的な構文

質問が些細な場合は申し訳ありませんが、グーグルで調べてもどこにも導かれません。defmultiとの一般的な構文は何defmethodですか? 単純なマルチメソッドを書くことはできますが、docstring、前後の条件、メタデータなどをどこに置けばよいかわかりません。

実はClojureよりもClojureScriptに興味があるので、両者の違いがあれば教えてください。

0 投票する
3 に答える
2080 参照

events - Clojure/ClojureScriptでのイベント駆動型プログラミングの処理

ClojureScriptでイベントをモデル化する方法を理解しようとしています。JavaScriptでイベントキューを設計するのは簡単です。関数の(可変)配列を保持し、配列からコールバックを追加または削除するためのヘルパー関数を提供するだけです。イベントをトリガーするときは、配列にリストされているすべてのコールバックを調べて、それらを次々に呼び出します。

このパラダイムは機能的なスタイルとはほど遠いものです。たとえば、副作用がない限り、コールバックをトリガーしても意味がありません。さらに、可変配列を使用して実装されます。それでも、ClojureScriptでは、有用なことを行うためにイベント駆動型プログラミングを実行できる必要があるように思われます。今、私はGoogle Closureがすでにイベントライブラリを実装していることを知っていますが、私の質問はそれをネイティブに実装することについてです。

すべての基本的なClojure/ClojureScriptデータ型は不変であるため、このメカニズムを実装するための慣用的な方法は何でしょうか。参照を変更しますか?ホストからの可変データ構造(JavaまたはJavaScript)に頼っていますか?

私が正しく理解していれば、エージェントはおそらくClojureの適切なツールですが、現在、ClojureScriptには実装されていないようです。

0 投票する
2 に答える
396 参照

google-closure-compiler - ClojureScript extern 'on' イベント

Twitter Bootstrap のモーダル ダイアログ jQuery プラグインを ClojureScript で使用しようとしていますが、これは高度な最適化なしで正常に動作しますが、Google Closure がメソッド名を変更すると、onメソッドはza.

私はonexterns ファイルを使用してマンジされないように保護しようとしてきましたが、これを修正する定義を作成することができませんでした。チップ?