欢迎!请查阅关于页面以了解更多关于如何使用本站的信息。
嗨,Sean。我想提出一个主要针对ClojureScript友好的更改。
将所有协议放在一个{{.cljc}}文件中,实现放在不同的文件中将会非常有用。这将为进一步将某些实现迁移到ClojureScript打开门路。
由于我只浏览了代码,我并不确切地知道这种分离应该如何组织,但我提出这个问题是为了考验这一想法。
谢谢!
评论来自:seancorfield
由于core.cache是设计为可扩展的,所以这些协议可能已被现有的用户代码使用,因此移动它们将会造成不兼容的变更。
评论来自:arichiardi
那太遗憾了,它们能不能保留在核心文件中,而将实现移至其他地方?
也许我们可以使用{{clojure.core.cache2}}?
是的,我认为这可能会涉及到一个全新的命名空间集。在一个公共命名空间中放入协议,然后每个实现可能在一个单独的命名空间中,这样一些可以是clj/cljs(如BasicCache),其他则可能接触Java(在这种情况下使用clj),或者使用cljc或cljs。
鉴于这两个库以多种方式耦合,核心的memoize可能也需要采取类似的做法。
听起来是个不错的计划,因此作为参考,我将在下面也留下链接(链接:https://github.com/burbma/cljs-cache 文本:cljs-cache)。