如何从Javascript中调用ClojureScript代码(不是反过来!)。
已经有方法可以从Java中调用Clojure,但我不知道如何在ClojureScript中实现等价功能。
如何从Javascript中调用ClojureScript代码(不是反过来!)。
已经有方法可以从Java中调用Clojure,但我不知道如何在ClojureScript中实现等价功能。
^:export
导出你想在js中使用的函数,然后通过my.ns.fn()
简单调用它。cljs:
(ns hello-world.core)
(defn ^:export greet [] "Hello world!")
JavaScript:
hello_world.core.greet()
请查看Clojurescript interoperability with JavaScript问题下的被接受的答案以获取详细信息。
^:export
已经过时。 - adamsmithClojurescript编译成Javascript,因此您可以直接使用它。
Datascript是学习Clojurescript的好资源,它是用Clojurescript编写的,并且可以直接通过vanilla 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));
您可以查看此博客文章中的交互操作部分。
最后,请通过 datascript 的基于JavaScript的测试套件进行检查。