重新构建数据库组织

时间:2017-11-22 08:46:06

标签: clojure clojurescript re-frame

我们的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的订阅查找自己的路由,从而避免订阅整个数据库。

1 个答案:

答案 0 :(得分:0)

为了衡量订阅的效果,建议使用https://github.com/Day8/re-frame-trace

相关问题