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

ClojureScript split one namespace into multiple files

我读过this thread,但ClojureScript 中似乎没有loadload-file。是否可以将单个名称空间分隔为多个文件?

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

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

...

(om/build sidebar/sidebar app-state)

即我必须在每个组件的名称之前指定名称空间,这看起来不太漂亮。关于如何改进它的任何想法?我是 Clojure 和 ClojureScript 的新手,所以我可能遗漏了一些明显的东西?

这里有几点需要注意

  1. 您可以在 :require 中使用 :refer 将不合格的变量导入命名空间。如果有几个,这没关系,但如果你试图对所有事情都这样做,很快就会变得笨拙。
  2. Clojure 应用程序通常以树状结构构建,其中主名称空间需要子名称空间等,因此您不必将相同的名称空间导入每个名称空间。
  3. 即使可以跨多个文件拆分命名空间,它也不是惯用的 Clojure。一个文件 = 一个命名空间是常态。
  4. 如果需要,您可以将 vars 从一个命名空间定义到另一个命名空间,从而使一个 'master' 命名空间在您的其他命名空间中使用。
  5. 如果您想最大程度地减少必须执行的导入次数,请减少命名空间并增大它们。