從開始研究到寫完整個這個系列离斩,花了快一年半的時(shí)間银舱,其中很大部分原因是因?yàn)閷W(xué)習(xí)和工作太忙,還有就是因?yàn)橐恍┦虑榛膹U了一段時(shí)間跛梗,不過也總算是完成了寻馏。
其中花的時(shí)間最多的不是寫文章而是在研究代碼上,前后一共寫了三版核偿,前面兩版用不同的思路去寫诚欠,但都不太理想,嗯漾岳。轰绵。∧峋#或者說是都不是我想要的左腔,雖然功能都寫出來了,也完美實(shí)現(xiàn)了vue的一些功能捅儒,但是總覺得寫的太垃圾了o(╥﹏╥)o液样,有些編程思想怎么也表達(dá)不出來,所以一些功能只能用代碼量去堆巧还,對于我這種喜歡簡潔代碼的人來說簡直不能忍鞭莽。
至于為什么不先去看VUE源碼,其原因一個是源代碼看不太懂(〃'▽'〃)麸祷,二個是由于之前對模板解析技術(shù)有一定的研究澎怒,再加上當(dāng)時(shí)研究MVVM的時(shí)候發(fā)現(xiàn)了defineProperties這個函數(shù),就覺得憑自己應(yīng)該能搞得出來阶牍,結(jié)果說多了都是淚啊(╥╯^╰╥)
之后在逛論壇的時(shí)候發(fā)現(xiàn)了DMQ大大所寫的mvvm喷面,按照作者的說法是對VUE的源代碼做了簡化改造,一些更復(fù)雜的功能并沒進(jìn)行一個實(shí)現(xiàn)荸恕,其主要目的是為了幫助對vue源碼的理解乖酬。
當(dāng)時(shí)花了幾天的時(shí)間去看他的代碼死相,看完后給我的感覺就是融求,還能這樣寫!K愦椤生宛?
當(dāng)初我開始寫的時(shí)候并沒往面向?qū)ο筮@方面去想县昂,也是因?yàn)闆]有面向?qū)ο蟮乃枷耄蛘哒f是陷舅,js寫久了倒彰,面向?qū)ο蟮乃枷牒鼙∪酰@也是ES6/7之前JS的不嚴(yán)謹(jǐn)造成的莱睁,雖然之前有各種模塊化依賴開發(fā)待讳,但是我對于這種也就用用完事,根本沒有深刻的面向?qū)ο笏枷搿?/p>
在研究完他的代碼后仰剿,我就開始動手仿著寫了一套创淡,也就是現(xiàn)在的第三版,寫完后終于舒服了( ̄︶ ̄)↗南吮,這才是我要的代碼琳彩,雖然還有諸多不足,但終于搞出來了也是挺開心的部凑,所以也決定將這些以文章的形式記錄下來露乏。
再次感謝DMQ的code和MD,讓我意識到了面向?qū)ο蟮闹匾酝垦鋵?shí)回過頭再去看一些設(shè)計(jì)模式瘟仿,就會發(fā)現(xiàn)有其實(shí)很多都運(yùn)用到了面向?qū)ο蟮乃枷耄赃€是比較建議去學(xué)習(xí)一門后端語言比勉,比如java這種強(qiáng)類型語言猾骡,不需要多精,主要是對它開發(fā)思想的一個深入的理解敷搪。
再有就是前端的技術(shù)更新太快了兴想,目前vue3底層 observer 實(shí)現(xiàn)是使用proxy進(jìn)行重構(gòu),并且添加了很多新特性赡勘,還在研究中...
不過我也打算重構(gòu)我的第三版嫂便,做個ES6/7版,使用proxy和class進(jìn)行重構(gòu)闸与,到時(shí)候代碼會直接上傳到我的GitHub上