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

Vic*_*huk 5 namespaces clojure clojurescript

我已经阅读了此线程,但是ClojureScript中似乎没有loadand load-file。是否可以将单个名称空间分隔为多个文件?

之所以要这样做,是因为我正在使用Om,并且希望将组件分离到不同的文件中。我可以使用单独的名称空间来做到这一点,但是随后我将不得不在每个文件的开头编写相同的要求,并且在主文件中调用这些组件的唯一方法是这样的:

(:require [some-project.sidebar :as sidebar])

...

(om/build sidebar/sidebar app-state)
Run Code Online (Sandbox Code Playgroud)

即我必须在每个组件的名称之前指定名称空间,这看起来不太漂亮。关于如何改善它的任何想法?我是Clojure和ClojureScript的新手,所以也许我缺少明显的东西?

Dan*_*ton 4

这里有几点需要注意

  1. 您可以在 :require 中使用 :refer 将不合格的变量导入命名空间。如果有几个,这还可以,但如果你尝试对所有事情都这样做,很快就会变得笨拙。
  2. Clojure 应用程序通常采用树状结构,其中主命名空间需要子命名空间,依此类推,因此您不必将相同的命名空间导入到每个命名空间中。
  3. 即使可以将命名空间拆分为多个文件,这也不是 Clojure 惯用的做法。一个文件=一个命名空间是常态。
  4. 如果需要,您可以将一个命名空间中的变量定义到另一个命名空间中,以创建一个“主”命名空间以在其他命名空间中使用。
  5. 如果您想最大程度地减少必须执行的导入数量,请减少命名空间并使其更大。