我试图了解Stuart Sierra的component
,特别是组件的命名约定,以构建Clojure应用程序。
例如,如果我查看system
,我会看到几个组件映射到:server
键:
由于两者都使用相同的键:server
,这是否意味着如果我使用此库,我只能使用其中一个?
同样,我使用onyx
。已在onyx system.clj
内定义了几个组件。
这是否意味着onyx
有效保留了某些密钥?
:port
参数会发生什么,这似乎是野外许多组件使用的?
问题
assoc
使用的密钥与component/system-map
中使用的密钥之间有什么区别?答案 0 :(得分:1)
系统图中的键标识该系统中的特定组件(实例)。你可以使用你喜欢的任何键来获得你需要的任何组件。
特定组件记录中的键可以是以下三种之一:
1和2通常由组件构造函数设置,用户不需要关心记录中使用的实际密钥。
通过将依赖关键组件(从依赖关系键(3))映射到系统映射中引用依赖关系组件的关键字来配置依赖关系。这是通过component/using
函数完成的,并将系统映射键的组件键映射作为第二个参数。这样,您始终可以将任何预期的键映射到任何实际使用的键。您可以使用带有向量键的component/using
的简写形式,但前提是系统映射中的键与您正在配置的组件中的键相同。
我希望回答前两个问题
第三个问题我想我想看一个你正在寻找的单独帖子的例子
最后一个问题:是的,您可以同时运行多个系统。这取决于你想做什么可能有意义,也可能没有意义,但运行测试系统和开发系统似乎是一个相当明显的设置。