Open aooy opened 7 years ago
大神,膜拜一下,打算通读一下源码
带我一个,我也要通读一下源码
上个车
明天有时间看一下源码,我是实习生,哈哈加油
谢谢大神的项目!已通读源码,深有体会 =) react和vue源码过于复杂,您的项目极大得帮助了像我这样想要了解web framework架构的学生 然后弱弱提一点,"shore"是个typo吧?
谢谢大神的项目!已通读源码,深有体会 =) react和vue源码过于复杂,您的项目极大得帮助了像我这样想要了解web framework架构的学生 然后弱弱提一点,"shore"是个typo吧?
应该是笔误 store
作者:杨敬卓
转载请注明出处
目录
前言
随着移动端的崛起,现代标准浏览器的推广,为解决浏览器兼容问题的jQuery渐渐没落。vue和react这些新的前端框架带来了完全不一样的开发体验,不再需要手动去处理dom节点,只需要关心数据层面的问题。
动机
流行的框架和库往往因为功能齐全导致体积巨大,有时我们只用到它们很少的功能,尝试去学习原理,自己实现特定功能有益于学习。
aoy深受Vue和react的影响,是使用Vue和react后,去实践写的一个简单框架。在Vue和react中,每个组件都可以有自己的数据存储容器,当父子组件或不同层级组件需要频繁大量的通信数据时,如果没有Vuex和redux这些状态管理框架,往往最后会变得一团糟。
把所有组件的数据存储在一个唯一的容器里,数据只在容器和组件之间流动。 这是aoy的设计理念。现在aoy只有最基本的功能。只有600行代码,想了解Virtual DOM和diff算法的同学可以试着去阅读源码。
原理
使用了Object.defineProperty绑定store的数据,当观察到数据改变,比较新旧数据产生的Virtual DOM,将差异应用到真实dom上。练练ps,给大家画张图。
使用
Note
只在需要大量重绘的地方使用。
每个aoy实例都会初始化自己的store, 建议一个document下只实例化一个aoy。
在组件中使用this时,this均指向它的调用者。如果需要在调用时取得组件,可以使用bind绑定。
总结
aoy可以说是学习Vue和react原理再结合自己想法的产物,还有很多不足之处。