2015-07-26 3 views

ответ

13

Экспорт функции, которые вы хотите иметь в своем распоряжении в JS, используя ^:export, а затем просто называют его my.ns.fn()

cljs:

(ns hello-world.core) 

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

ЯШ:

hello_world.core.greet() 

См the accepted answer в "Clojurescript interoperability with JavaScript" для получения подробной информации.

3

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)); 

Вы можете увидеть в разделе Interop этого blog entry.

И, наконец, пройдите через datascript j avascript-based test suite.

+0

Спасибо, что было полезно, особенно это: https://github.com/tonsky/datascript/blob/18ab268d4682f2ef0c75ce42548494726009f82f/src/datascript/js.cljs#L62 – nha

Смежные вопросы