Как вызвать код ClojureScript из Javascript (не наоборот!).call ClojureScript от Javascript
Это уже возможно call Clojure from Java, но я не знаю, как сделать эквивалент в ClojureScript.
Как вызвать код ClojureScript из Javascript (не наоборот!).call ClojureScript от Javascript
Это уже возможно call Clojure from Java, но я не знаю, как сделать эквивалент в ClojureScript.
Экспорт функции, которые вы хотите иметь в своем распоряжении в JS, используя ^:export
, а затем просто называют его my.ns.fn()
cljs:
(ns hello-world.core)
(defn ^:export greet [] "Hello world!")
ЯШ:
hello_world.core.greet()
См the accepted answer в "Clojurescript interoperability with JavaScript" для получения подробной информации.
Clojurescript компилируется в Javascript, чтобы вы могли использовать его как есть.
Datascript является отличным источником вдохновения для изучения этого, он написан в Clojurescript и используется через vanilla javascript javascript как есть.
В псевдокоде, что дает:
<script src="https://github.com/tonsky/datascript/releases/download/0.11.6/datascript-0.11.6.min.js"></script>
...
...
var d = require('datascript');
// or
// var d = datascript.js;
var db = d.empty_db();
var db1 = d.db_with(db, [[":db/add", 1, "name", "Ivan"],
[":db/add", 1, "age", 17]]);
var db2 = d.db_with(db1, [{":db/id": 2,
"name": "Igor",
"age": 35}]);
var q = '[:find ?n ?a :where [?e "name" ?n] [?e "age" ?a]]';
assert_eq_set([["Ivan", 17]], d.q(q, db1));
assert_eq_set([["Ivan", 17], ["Igor", 35]], d.q(q, db2));
Вы можете увидеть в разделе Interop этого blog entry.
И, наконец, пройдите через datascript j avascript-based test suite.
Спасибо, что было полезно, особенно это: https://github.com/tonsky/datascript/blob/18ab268d4682f2ef0c75ce42548494726009f82f/src/datascript/js.cljs#L62 – nha