我想让我现有的Clojure库可以从clojurescript中使用,也可以创建在Clojure和Clojurescript中运行的新应用程序。
我理解Clojure和Clojurescript有它们的区别,并且有元编程解决方案,例如cljx。但是,我将我的Clojure代码限制为Clojurescript的兼容子集,我只想从clojurescript调用clojure(反之亦然)。我已经在诸如core.match这样的库中看到了这种情况,但是我无法复制那里所做的事情。
我目前正在获取No such namespace
,我不确定是不是因为它不可能,或者因为我的命名空间或目录结构错误或其他原因。
具体来说,我有一个表格
的目录结构src/
clj/
clopjys/
vector.clj
cljs/
cljdemo.cljs
我正在尝试使用cljdemo.cljs中的vector.clj,即:
(:require
[clophys.vector :refer [coords std-uniform-vector]])
我的project.clj有以下条目
...
:source-paths ["src/clj"]
:cljsbuild {
:builds [{
; The path to the top-level ClojureScript source directory:
:source-paths ["src/cljs"]
...
答案 0 :(得分:2)
您不能在运行时在cljs中包含clj代码。 clj文件将包含在宏中(在clj中定义,可能就是你在core.match中看到的)。
最好的解决方案是cljx,如果您的代码实际上与clj和cljs兼容,那么您将拥有一个看起来与普通clj文件完全相同的cljx文件。这很简单,很酷,试一试!
答案 1 :(得分:2)
由于这个问题已经写好,Clojure reader conditionals已经出现在核心语言中(而.cljx
是一个库)。