我正在试图弄清楚ClojureScript交叉和cljx预处理器之间的关系。
它们是否可以一起使用?或竞争对手解决同样的问题?
是否有人成为首选或更标准的做事方式?
特别是我想要做的是创建一个可以编译为Clojure和ClojureScript的库(有几个变体)。我目前正在使用cljx。
但是我希望将库包含在更多的clj和cljx项目中。寻找有关这方面的信息,我主要是讨论交叉的文档而不是cljx。
答案 0 :(得分:6)
Crossovers,CLJX和Feature Expressions(从最旧到最新)有一些重叠的功能,可用于编译clojure和clojurescript。 Cljx和Features表达式不仅仅是clojurescript的承诺,并且可以维护不仅仅是clojure-java和clojure-js,例如.net(clr,mono)。 Cljx和特征表达式可以实现任意的特征和#34;例如启用跟踪或特殊"调试"生成。
lein-cljsbuild已弃用Crossovers功能。 (见https://github.com/emezeske/lein-cljsbuild)
(cljsbuild crossovers已弃用,将在v2.x中删除[2014年晚些时候发布]。)
我已经使用CLJX来定位Clojure,ClojureClr,ClojureScript(针对浏览器)以及针对NodeJS的ClojureScript。它运行良好 - 当然比维护4个独立的代码库更好。我还没有使用CLJX来做依赖关系的依赖,虽然一旦你打包了一个库,它本来就不应该是cljx。
这个想法借鉴了Common Lisp的feature expressions,看起来很像cljx。
截至2014年11月,这是Release.Next,所以听起来很有希望。 CLJX和LISP的特征表达似乎是Clojure预期功能的灵感来源。
我计划在功能表达式可用之前使用CLJX,然后重新评估。
答案 1 :(得分:4)
Crossovers和cljx是竞争解决方案同样的问题,不能一起使用。据我所知,cljx优于交叉。例如,正如@Hendekagon指出的那样,lein-cljsbuild
已经弃用了交叉。
chord
是一个供客户端和服务器端使用的库。您可以使用他们的project.clj
作为起点。