我想让我现有的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"]
...发布于 2014-05-08 03:24:02
不能在运行时将clj代码包含在cljs中。clj文件将包含在宏中(这些宏是在clj中定义的,可能就是您在core.match中看到的)。
最好的解决方案是cljx,如果你的代码实际上与clj和cljs兼容,那么你将拥有一个看起来与普通clj文件完全一样的cljx文件。它很简单,很酷,试试吧!
发布于 2016-02-20 00:45:08
自从这个问题被提出后,Clojure reader conditionals就出现在了核心语言中(而.cljx是一个库)。
https://stackoverflow.com/questions/23520882
复制相似问题