Mar*_*ars 13 clojure clojurescript
通常,Clojure源文件被命名为(例如)foo.clj,而Clojurescript源文件被命名为foo.cljs.我的印象是,在Clojure的版本> = 1.7,我可以命名一个文件foo.cljc如果我希望它是可与加载require或use无论从Clojure的和Clojurescript.
它是否正确?它似乎隐含在使用cljc 和读取器条件的主要文档页面中,但据我所知,它从未明确说明.
这不是关于使用reader条件来指定在Clojure和Clojurescript中运行的备用代码的问题.它更基本.例如,我有一个源文件,其中包含完全通用的代码:它将在Clojure和Clojurescript中运行不变.我可以假设通过命名为".cljc",require总是会从Clojure和Clojurescript中找到它(假设它的名字正确,位于正确的位置,等等)?
[我很确定我是对的,但我不确定,我认为如果我是正确的话,在这里记录答案是值得的.]
Ale*_*ler 16
那是对的.当Clojure或ClojureScript需要加载命名空间时,它们首先查找特定于平台的文件(.class然后是Clojure上的.clj和ClojureScript上的.cljs),如果找不到,则查找.cljc文件.
您仍然需要确保它可用于类路径上的语言,就像其他源文件一样.
是。
细微差别是加载的优先顺序,在此进行说明:
https://github.com/clojure/clojure-site/commit/010134bcc2e8af899ba2b1e5816b0fcf7e007ba4
简而言之,cljc文件最后被加载,条件语句仅在cljc中有效。
| 归档时间: |
|
| 查看次数: |
1530 次 |
| 最近记录: |