【发布时间】:2020-09-19 18:07:10
【问题描述】:
我正在使用试剂构建几个备用根组件,其中只有一个将安装在任何给定页面上;绝对非此即彼。它们在构成上具有一定程度的共性,因此将它们之间的共同点移动到 common 命名空间会很方便。
理想的情况是,如果在每个组件的文件中,我可以选择将命名空间切换到common,并将defs 特别添加到组件,然后切换回来,从而避免循环依赖,也不需要任何一种继承。
我记得这在 common lisp 中是可能的,那是多么美妙,而且似乎也是 possible in clojure。
来自 Clojurescript 文档:ns must be the first form and can only be used once 和 in-ns is only usable from the repl。
我想知道是否有办法在 clojurescript 中实现这种事情,但我仍然无法理解。
如果不是,我可能需要重新考虑我在多个备用根组件背后的假设; “一个构建中的多个构建”的想法,如果这有意义的话。
经过进一步的实验和混淆后更新: 另一种选择可能是将单个命名空间拆分为多个文件 (is this possible?)。不知道在这里转什么方向。
如果我使用单独的公共命名空间,我在试剂中使用全局命名空间中的原子这一事实会产生循环依赖的需求。因此,想知道一个全局命名空间,在这种情况下,多个文件可能会有所帮助。还是一个巨大的文件和一个命名空间的前进方向??
更新:我意识到在全局保持所有应用程序状态(在我目前的情况下是多个原子)和传递应用程序状态之间存在很大的矛盾。我目前的模式是全球性的,不要传递任何东西。 将必要的状态作为参数传递到 common 命名空间中的 fns 将解决这里的问题(呃!),但接下来的问题是,这里遵循了哪些关于应用程序状态的原则。如果我只是在需要时添加一个参数,但一开始就认为一切都是全局的,那么它就没有真正的原则......
【问题讨论】:
标签: clojurescript reagent