繁体   English   中英

从Javascript调用ClojureScript

[英]call ClojureScript from Javascript

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

已经可以从Java调用Clojure ,但我不知道如何在ClojureScript中执行等效操作。

使用^:export您希望在js中可用的函数,然后将其称为my.ns.fn()

cljs:

(ns hello-world.core)

(defn ^:export greet [] "Hello world!")

JS:

hello_world.core.greet()

有关详细信息,请参阅“Clojurescript与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));

您可以看到此博客条目的互操作部分。

最后,浏览基于数据脚本的基于 avascript 的测试套件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM