Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ClojureScript将一个命名空间拆分为多个文件_Clojure_Namespaces_Clojurescript - Fatal编程技术网

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

ClojureScript将一个命名空间拆分为多个文件,clojure,namespaces,clojurescript,Clojure,Namespaces,Clojurescript,我读过,但在ClojureScript中似乎没有load和load file。是否可以在多个文件上分离单个命名空间 我之所以要这样做,是因为我使用的是Om,我想将组件分离到不同的文件中。我可以使用单独的名称空间来完成,但是我必须在每个文件的开头编写相同的requires,并且在主文件中调用这些组件的唯一方法如下: (:require [some-project.sidebar :as sidebar]) ... (om/build sidebar/sidebar app-state) i、

我读过,但在ClojureScript中似乎没有
load
load file
。是否可以在多个文件上分离单个命名空间

我之所以要这样做,是因为我使用的是Om,我想将组件分离到不同的文件中。我可以使用单独的名称空间来完成,但是我必须在每个文件的开头编写相同的requires,并且在主文件中调用这些组件的唯一方法如下:

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

...

(om/build sidebar/sidebar app-state)

i、 我必须在每个组件的名称之前指定名称空间,这看起来不太好。有什么改进的办法吗?我不熟悉Clojure和ClojureScript,所以可能我遗漏了一些明显的东西?

这里有几点需要注意

  • 您可以在:require中使用:refere将非限定变量导入命名空间。如果有一些,这是可以的,但是如果你尝试做任何事情,很快就会变得笨拙
  • Clojure应用程序通常以树状的方式构造,其中主名称空间需要子名称空间,等等,因此您不必将相同的名称空间导入每个名称空间
  • 即使可以在多个文件中拆分名称空间,它也不是惯用的Clojure。一个文件=一个命名空间是标准
  • 如果需要,可以将变量从一个名称空间定义为另一个名称空间,以使一个“主”名称空间在其他名称空间中使用
  • 如果您想尽量减少必须执行的导入数量,请减少名称空间并使其更大