欢迎!请在 关于 页面上了解更多信息。
我试图减小我们的 js 包大小,结果发现由于历史原因,我们的 Specter 作为依赖项。它的优化大小是 198.23 KB(真的大家伙)。而且我还没有找到 ClojureScript 的基准测试,只有一个问题 https://github.com/nathanmarz/specter/issues/141。
我想知道是否有人在生产中使用它(CLJS),基准测试怎么样?
嗨,Aleksandr,在 Powernoodle.com 我们使用 Specter 在 CLJS 中进行对象转换和从大型嵌套映射结构中子选择。我们使用 om/next,我们的状态存储在一个非常复杂的映射中。Specter 真正闪耀的地方在于当你需要更改现有数据结构并返回相同类型结构时,这与使用普通 clojure 函数(它们通常会返回可序列的,不管输入如何)不同。一旦你掌握了语法和它的用法,Specter 就是一个非常强大的工具,并创建出直观和易于阅读的代码。此外,@nathanmarz 在 Clojure/Specter Slack 频道中的帮助也非常棒——向他表示衷心的感谢,只因为他想出这个主意。不过,我没有基准测试,但说实话,没有它我们的代码会变得更复杂,所有 Clojurists 都讨厌复杂的代码 ;-)Ian
不是精确的基准,但我将纯ClojureScript代码重构为使用Specter(在执行递归转换的代码中),UI从在慢速设备上的几秒不可响应变为在慢速设备上快速且可以忍受。我记得性能提升了2个数量级(100ms变为2ms),这要归功于自定义的Specter导航器。