从开始研究到写完整个这个系列,花了快一年半的时间,其中很大部分原因是因为学习和工作太忙,还有就是因为一些事情荒废了一段时间,不过也总算是完成了。
其中花的时间最多的不是写文章而是在研究代码上,前后一共写了三版,前面两版用不同的思路去写,但都不太理想,嗯。。。或者说是都不是我想要的,虽然功能都写出来了,也完美实现了vue的一些功能,但是总觉得写的太垃圾了o(╥﹏╥)o,有些编程思想怎么也表达不出来,所以一些功能只能用代码量去堆,对于我这种喜欢简洁代码的人来说简直不能忍。
至于为什么不先去看VUE源码,其原因一个是源代码看不太懂(〃'▽'〃),二个是由于之前对模板解析技术有一定的研究,再加上当时研究MVVM的时候发现了defineProperties这个函数,就觉得凭自己应该能搞得出来,结果说多了都是泪啊(╥╯^╰╥)
之后在逛论坛的时候发现了DMQ大大所写的mvvm,按照作者的说法是对VUE的源代码做了简化改造,一些更复杂的功能并没进行一个实现,其主要目的是为了帮助对vue源码的理解。
当时花了几天的时间去看他的代码,看完后给我的感觉就是,还能这样写!!?
当初我开始写的时候并没往面向对象这方面去想,也是因为没有面向对象的思想,或者说是,js写久了,面向对象的思想很薄弱,这也是ES6/7之前JS的不严谨造成的,虽然之前有各种模块化依赖开发,但是我对于这种也就用用完事,根本没有深刻的面向对象思想。
在研究完他的代码后,我就开始动手仿着写了一套,也就是现在的第三版,写完后终于舒服了( ̄︶ ̄)↗,这才是我要的代码,虽然还有诸多不足,但终于搞出来了也是挺开心的,所以也决定将这些以文章的形式记录下来。
再次感谢DMQ的code和MD,让我意识到了面向对象的重要性,其实回过头再去看一些设计模式,就会发现有其实很多都运用到了面向对象的思想,所以还是比较建议去学习一门后端语言,比如java这种强类型语言,不需要多精,主要是对它开发思想的一个深入的理解。
再有就是前端的技术更新太快了,目前vue3底层 observer 实现是使用proxy进行重构,并且添加了很多新特性,还在研究中...
不过我也打算重构我的第三版,做个ES6/7版,使用proxy和class进行重构,到时候代码会直接上传到我的GitHub上