int*_*tar 9 clojure leiningen clojurescript cljx
我试图弄清楚ClojureScript交叉和cljx预处理器之间的关系.
它们是否可以一起使用?或竞争对手解决同样的问题?
一个人成为首选或更标准的做事方式吗?
特别是我想要做的是创建一个可以编译为Clojure和ClojureScript的单个库(有几个变体).我目前正在使用cljx.
但后来我想将库包含在更多的clj和cljx项目中.寻找有关这方面的信息,我很多时候会遇到交叉的文档而不是cljx.
Crossovers,CLJX和Feature Expressions(从最旧到最新)有一些重叠的功能,可用于编译clojure和clojurescript.Cljx和Features表达式不仅仅是clojurescript的承诺,并且可以维护不仅仅是clojure-java和clojure-js,例如.net(clr,mono).Cljx和Feature Expressions启用任意"功能",例如启用跟踪或特殊的"调试"构建.
lein-cljsbuild已弃用Crossovers功能.(参见https://github.com/emezeske/lein-cljsbuild)
(cljsbuild crossovers已弃用,将在v2.x中删除[2014年晚些时候发布].)
我用CLJX目标的Clojure,ClojureClr,ClojureScript(用于浏览器),和ClojureScript为的NodeJS.它运行良好 - 当然比维护4个独立的代码库更好.我没有使用CLJX来执行依赖项的依赖项,但是一旦你打包了一个库,它最初是cljx并不重要.
这个想法借鉴了Common Lisp的特征表达式,看起来很像cljx.
截至2014年11月,这是在Release.Next,所以听起来很有希望.CLJX和LISP的特征表达似乎是Clojure预期功能的灵感来源.
几年前我在一个项目中使用了Crossovers,但自从CLJX问世以来,我一直在使用CLJX取得了巨大的成功.它需要对工具和编辑器进行一些调整,但我相信它比为所有平台进行相同的代码更改要好得多.
我计划在功能表达式可用之前使用CLJX,然后重新评估.