Ich schreibe eine Addon-Funktion in Clojurescript mit Reagenz. Ich würde das gerne in einer bestehenden Flux App nutzen.Wie integriert man Clojurescript in bestehende JavaScript-Codebasis?
Wie soll ich die beiden verbinden?
Ich schreibe eine Addon-Funktion in Clojurescript mit Reagenz. Ich würde das gerne in einer bestehenden Flux App nutzen.Wie integriert man Clojurescript in bestehende JavaScript-Codebasis?
Wie soll ich die beiden verbinden?
Da der ClojureScript-Compiler JavaScript-Code ausspuckt, sollte die Integration ziemlich trivial sein. Fügen Sie einfach die ^:export
Annotation zu allen ClojureScript-Definitionen hinzu, auf die Sie mit Ihrem JavaScript-Code zugreifen möchten. JavaScript-Funktionen/Variablen aus Ihrem ClojureScript Code verweisen, das Präfix nur den globalen Namen mit js/
; ClojureScript
(ns my-namespace.core)
(defn ^:export my-identity [x] x)
// call from JavaScript
my_namespace.core.my_identity(5); // Notice how "-" is replaced with "_"
Wenn Sie wollen.
; Calling global JavaScript function from ClojureScript
(js/alert "Hello!")
Werfen Sie einen Blick auf diese blog post on ClojureScript/JavaScript interop für weitere Beispiele.
Die JavaScript Interop-Abschnitt auf der ClojureScript Cheatsheet ist auch eine gute Referenz. Beispielsweise werden die Funktionen clj->js
und js->clj
dokumentiert, die Sie zum Konvertieren zwischen Objekten im Clojure-Stil (Schlüsselwörter, Vektoren, Maps) und Objekten im JavaScript-Stil (Strings, Arrays, Maps/Objekte) benötigen.