ClojureScript将一个命名空间分成多个文件

6
我已阅读此线程,但在ClojureScript中似乎没有loadload-file。是否可能将单个名称空间拆分为多个文件?
我想这样做的原因是因为我正在使用Om,并且我想将组件分离到不同的文件中。我可以使用不同的命名空间来实现,但这样每个文件的开头都需要编写相同的requires,而且在主文件中调用这些组件的唯一方法是这样的:
(:require [some-project.sidebar :as sidebar])

...

(om/build sidebar/sidebar app-state)

我的意思是我必须在每个组件名称之前指定命名空间,这看起来不太美观。有什么办法可以改进吗?我对Clojure和ClojureScript很新,所以也许我忽略了一些明显的东西?

1个回答

4
这里有几点需要注意:
  1. 你可以在:require中使用:refer将未限定的变量导入到命名空间中。如果只有几个变量,这样做没问题,但如果尝试为所有变量都这样做,很快就会变得难以控制。
  2. Clojure应用程序通常以树状结构组织,其中一个主要命名空间需要子命名空间等等,因此您不一定会将相同的命名空间导入每个命名空间。
  3. 即使可能将命名空间拆分成多个文件,这也不是Clojure惯用的写法。一个文件=一个命名空间是规范。
  4. 如果需要,您可以将一个命名空间中的def变量定义到另一个命名空间中,以创建一个“主”命名空间,供其他命名空间使用。
  5. 如果要最小化导入的数量,请减少命名空间的数量,并使它们更大。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接