首页 > 解决方案 > ClojureScript 如何将其命名空间与 Clojure 命名空间区分开来?

问题描述

我正在使用 Clojure 进行 Web 开发,我注意到作者提供的 ClojureScript 示例使用了传统的app-name.core命名空间,应用程序的 Clojure 部分也将其用于 Luminus 的许多样板代码。

ClojureScript 和 Clojure 通常用于分别为应用程序的客户端和服务器端评估相同的代码,那么它如何区分 ClojureScript 核心命名空间和 Clojure 核心命名空间中的代码?它使用目录结构吗?您可以使用两者的代码而无需指定吗?

标签: clojurenamespacesclojurescript

解决方案


无论您的代码是在 Node.js 上还是在浏览器中运行,您都使用 JavaScript 进行编程。显然取决于平台,API 是不一样的。

我的理解是 ClojureScript 只是一个编译器。您使用普通的 Clojure(使用 API 的子集)编写代码,然后使用 ClojureScript 将 Clojure 编译为 JavaScript。

因此,我认为命名空间的管理方式没有任何区别:

  • 替换./
  • 追加cljcljs
  • 替换-_
  • 除非另有配置假设src是根目录

所以app-name.core“解决”src/app_name/core.cljs例如。

认为(可能是错误的)如果磁盘上不存在文件,则在 JVM 上,编译器将查看 JAR(如果有)。显然,ClojureScript 不会发生这种情况。


推荐阅读