首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Javascript调用ClojureScript

从Javascript调用ClojureScript
EN

Stack Overflow用户
提问于 2015-07-26 19:26:17
回答 2查看 5K关注 0票数 21

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

从Java调用Clojure已经是可能的了,但我不知道如何在ClojureScript中进行类似的操作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-27 01:32:10

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

cljs:

代码语言:javascript
复制
(ns hello-world.core)

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

联署材料:

代码语言:javascript
复制
hello_world.core.greet()

有关详细信息,请参见被接受的答案“与JavaScript的互操作性”

票数 29
EN

Stack Overflow用户

发布于 2015-07-27 00:48:54

Clojurescript编译为Javascript,所以您可以按原样使用它。

数据记录是一个很好的灵感来源来学习这一点,它是用Clojurescript编写的,并通过香草javascript 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));

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

最后,查看数据记录j基于avascript的测试套件

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31641030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档