从 Javascript 调用 ClojureScript
call ClojureScript from Javascript
如何从 Javascript 调用 ClojureScript 代码(不是 反过来!)。
已经可以 call Clojure from Java,但我不知道如何在 ClojureScript 中做同样的事情。
Clojurescript 编译为 Javascript,因此您可以按原样使用它。
Datascript is a great source of inspiration to learn this, it is written in Clojurescript and is used via 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));
您可以查看此 blog entry 的互操作部分。
最后,检查数据脚本 javascript-based test suite。
使用^:export
导出你想要在js中可用的函数,然后简单地调用它为my.ns.fn()
cljs:
(ns hello-world.core)
(defn ^:export greet [] "Hello world!")
js:
hello_world.core.greet()
参见the accepted answer
"Clojurescript interoperability with JavaScript" 了解详细信息。
如何从 Javascript 调用 ClojureScript 代码(不是 反过来!)。
已经可以 call Clojure from Java,但我不知道如何在 ClojureScript 中做同样的事情。
Clojurescript 编译为 Javascript,因此您可以按原样使用它。
Datascript is a great source of inspiration to learn this, it is written in Clojurescript and is used via 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));
您可以查看此 blog entry 的互操作部分。
最后,检查数据脚本 javascript-based test suite。
使用^:export
导出你想要在js中可用的函数,然后简单地调用它为my.ns.fn()
cljs:
(ns hello-world.core)
(defn ^:export greet [] "Hello world!")
js:
hello_world.core.greet()
参见the accepted answer "Clojurescript interoperability with JavaScript" 了解详细信息。