4

我们的 Re-frame 应用程序数据库是这样组织的(针对这篇文章进行了简化):

{:meta {:page/search {:page/component #'...} :page/details {:page/component #'...}}
 :widget/base {:cur-page-id :page/search}
 :page/search {:page/route {:query-params {:q "1"}, ...}, 
 :page/details {:page/route {:query-params {:q "2"}}, ...}

考虑不可变下的一切:meta

base小部件通过订阅[:widget/base :cur-page-id]然后选择来处理当前选择的页面[:meta cur-page-id :page/component]。它还需要:page/route当前页面的,页面本身也需要。它通过订阅(fn [db] (get-in db [cur-page-id :page/route])). 这可能是一种反模式,因为我们现在订阅了整个数据库。

我们可以重构它,但也许最好先知道这在性能上的成本。有没有办法正确测量这个?

例如,我们可以将路由存储:widget/base在页面将通过仅选择的订阅查找自己的路由的条目下,从而:widget/base :routes避免订阅整个数据库。

4

1 回答 1

0

推荐使用https://github.com/Day8/re-frame-trace来衡量订阅的性能。

于 2017-11-23T20:27:58.903 回答