Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

精读《dob - 框架实现》 #48

Closed
ascoders opened this issue Dec 4, 2017 · 2 comments
Closed

精读《dob - 框架实现》 #48

ascoders opened this issue Dec 4, 2017 · 2 comments

Comments

@ascoders
Copy link
Owner

ascoders commented Dec 4, 2017

本系列分三部曲:《框架实现》 《框架使用》 与 《跳出框架看哲学》,这三篇是我对数据流阶段性的总结,正好补充之前过时的文章。

这次写第一部 《框架实现》。可以理解为对数据流:rxjs、redux、mobx,还有自创的 dob 做一个精读。

抽丝剥茧,锁定依赖追踪

做基于 React 的状态管理?先抽象出最小功能,依赖追踪是核心。

如何结合 React

observe 可以类比到 React 的 render,它们都具有相同的特征:是同步函数。聪明的你想到了吗?

限制一些功能,会更好用

为了使用起来具有更好的可维护性,需要限制依赖追踪的功能,使值不能再随意的修改。可见,强大的功能,不代表在数据流场景的高可用性,恰当的约束反而会更好。

如何有层次的做 Debug

调试功能,在依赖追踪、与 react 结合这一层都需要做,怎样分工配合才能保证功能不冗余,且具有良好的拓展性呢?

Debug UI 如何解耦

这种场景最佳解耦秘籍:事件机制。通过精心定义的一系列事件,制造出一个具有生命周期的工具库!

observe 嵌套如何解决

依赖收集由 getter、setter 完成,但触发时,却无法定位触发代码位于哪个函数中,所以为了依赖追踪(即变量与函数绑定),需要定义一个全局的变量标示当前执行函数。但是,当函数嵌套函数时,如何保证顺序?这看似小的问题,实现方式却几乎是整个源码中最复杂的:同步函数延迟执行。

@jasonslyvia
Copy link
Contributor

文章呢……

@ascoders
Copy link
Owner Author

ascoders commented Dec 5, 2017

文章就是 dob 文档

@ascoders ascoders mentioned this issue Dec 11, 2017
65 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants