clojure - ClojureScript 如何将其命名空间与 Clojure 命名空间区分开来?
问题描述
我正在使用 Clojure 进行 Web 开发,我注意到作者提供的 ClojureScript 示例使用了传统的app-name.core
命名空间,应用程序的 Clojure 部分也将其用于 Luminus 的许多样板代码。
ClojureScript 和 Clojure 通常用于分别为应用程序的客户端和服务器端评估相同的代码,那么它如何区分 ClojureScript 核心命名空间和 Clojure 核心命名空间中的代码?它使用目录结构吗?您可以使用两者的代码而无需指定吗?
解决方案
无论您的代码是在 Node.js 上还是在浏览器中运行,您都使用 JavaScript 进行编程。显然取决于平台,API 是不一样的。
我的理解是 ClojureScript 只是一个编译器。您使用普通的 Clojure(使用 API 的子集)编写代码,然后使用 ClojureScript 将 Clojure 编译为 JavaScript。
因此,我认为命名空间的管理方式没有任何区别:
- 替换
.
为/
- 追加
clj
或cljs
- 替换
-
为_
- 除非另有配置假设
src
是根目录
所以app-name.core
“解决”src/app_name/core.cljs
例如。
我认为(可能是错误的)如果磁盘上不存在文件,则在 JVM 上,编译器将查看 JAR(如果有)。显然,ClojureScript 不会发生这种情况。
推荐阅读
- google-chrome-extension - WebExtension API:打开/关闭 DOM 替换
- java - 与模拟器和实时手机相关的android studio问题
- django - 在 django 模型中为复制对象创建函数
- python - 转置特定的熊猫列
- javascript - 如何限制文本宽度阿拉伯文段落
- javascript - 在 document.write() 中添加变量
- java - 如何在 VisualVM 中诊断高自我时间?
- r - phyper 的超几何分布
- matlab - 线和圆的交点
- c++ - 我们可以在 c++ 中分配我们想要的任意数量的字节吗?(例如为一个类型分配 6 个字节)