使用 React + Redux 实现一个兰顿蚂蚁演示程序

2018-05-06 17:27:07 +08:00
 nzbin

兰顿蚂蚁是一个非常经典的元胞自动机。详情可以查看 维基百科

这个小程序也是练习 React 和 Redux 比较好的例子。但是采用 DOM 元素模拟这个程序还是比较吃力,100X100 的网格在 Chrome 上还勉强吃得消,其它浏览器就非常卡顿了。程序实现参考了 生命游戏 这个项目。

项目地址 https://github.com/nzbin/langton-ant-redux

3314 次点击
所在节点    分享创造
6 条回复
Exin
2018-05-06 18:35:54 +08:00
这个蚂蚁还是第一次听说,以前只知道生命游戏,有点意思

简单看了一下,这个每一步只有一个格子发生变化吧,按照 React 采用 vDOM 的机制,按理说应该只有一个 DOM 元素需要更新
而且据我观察变化的只是颜色,因此都不需要浏览器进行重排

所以这锅不能怪 DOM/浏览器 喔
robotdiy
2018-05-07 00:05:45 +08:00
太厉害了,感谢分享。
nzbin
2018-05-07 10:44:24 +08:00
@Exin DOM 数量过多还是会影响性能的,浏览器之间的差距确实比较明显,另外我的电脑也比较老了
CasualYours
2018-05-07 11:04:31 +08:00
canvas 性能感觉会好点
Exin
2018-05-07 11:16:45 +08:00
@nzbin 话是没错,但具体考虑楼主的 demo,才 10000 个<li>节点,谈不上过多吧
我想说的是这个项目有很大的优化空间
建议用 react-devtools 看一下每次 render 做了多少不必要的行为
nzbin
2018-05-07 13:26:58 +08:00
@CasualYours canvas 比较流畅,四五个蚂蚁也没问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/452567

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX