从Javascript中调用ClojureScript

22

如何从Javascript中调用ClojureScript代码(不是反过来!)。

已经有方法可以从Java中调用Clojure,但我不知道如何在ClojureScript中实现等价功能。


1
阅读此链接 https://clojurescript.org/reference/advanced-compilation#access-from-javascript - Verbery
2个回答

31

截至2020年,^:export已经过时。 - adamsmith

8

Clojurescript编译成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的测试套件进行检查。


谢谢,这很有用,特别是这个链接:https://github.com/tonsky/datascript/blob/18ab268d4682f2ef0c75ce42548494726009f82f/src/datascript/js.cljs#L62 - nha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接