首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ClojureScript如何将其名称空间与Clojure命名空间区分开来?

ClojureScript如何将其名称空间与Clojure命名空间区分开来?
EN

Stack Overflow用户
提问于 2019-09-18 16:21:23
回答 2查看 200关注 0票数 0

我正在通过工作,我注意到作者提供的ClojureScript示例使用了传统的app-name.core命名空间,这个名称空间也被应用程序的Clojure部分用于来自Luminus的许多样板代码。

ClojureScript和Clojure通常分别用于为应用程序的客户端和服务器端计算相同的代码,那么它如何区分ClojureScript核心名称空间中的代码和Clojure核心命名空间中的代码?它使用目录结构吗?您可以使用必须指定的w/o的代码吗?

EN

回答 2

Stack Overflow用户

发布于 2019-09-18 17:15:06

无论您的代码是在JavaScript上运行还是在浏览器中运行,您都可以在Node.js中编程。显然,根据平台的不同,API是不一样的。

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

因此,我不认为名称空间的管理方式有什么不同:

  • .替换为/
  • 附加cljcljs
  • -替换为_
  • 除非另有配置,否则假设src是根目录。

例如,app-name.core“解析”为src/app_name/core.cljs

我认为(可能是错误的)在JVM上,如果磁盘上不存在文件,编译器将检查JAR内部(如果有的话)。显然,ClojureScript不会出现这种情况。

票数 0
EN

Stack Overflow用户

发布于 2019-09-18 17:43:38

我在其他答案中说过,将前端代码(CLJS)和后端代码(CLJ)都包含在同一个git存储库中是错误的。从根本上说,您有两个不同的程序,它们独立运行,在不同的硬件上运行,并且通过网络进行通信。两个程序所使用的任何通用实用程序都应该位于单独的实用程序库中,这将是第三次回购。

这个组织为2(或3)码基提供了最独立和最清晰的,独立于使用中的语言。它同样适用于两个方案所使用的任何语文组合:

  • Python & Python
  • Python & Java
  • JS (浏览器)& Python
  • CLJS (浏览器)& Java
  • CLJS (浏览器)& Clojure
  • 任何其他组合..。

因此,后端代码使用*.clj文件,前端代码1使用*.cljs文件。如果您有任何公共实用程序,请为这个共享库进行第3次回购,并使用*.cljc文件。

对于前端CLJS代码,使用新的figwheel-main和Clojure Dep工具要比使用旧的lein工具容易得多。详情请见figwheel.org。这也使得保持CLJS和CLJS分离变得更容易了(不需要“照片集”)。它还保持CLJ编译和CLJS编译分离,这也简化了事情。

以上所述之后,我希望你原来问题的答案能更清楚些。CLJS代码可能有一个名称空间demo.core,它被编译成JavaScript,在浏览器中运行,在用户的计算机上运行。CLJ代码还可能有一个名称空间demo.core,它被编译成Java字节码,运行在云中的后端服务器上。因此,每个执行环境中只有一个ns demo.core,因此它们从不冲突。

因此,我们看到两个编译器将CLJ和CLJS代码基作为独立的程序来处理。这就是为什么使用两个不同的git存储库来防止将两个独立的代码库混为一谈的更简单的IMHO。

脚注:

1.如果您在CLJS前端代码中有宏,您还需要在*.clj*.cljc文件中定义它们,这是因为CLJS编译器中的怪癖。我们将忽略这里的复杂情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57997069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档