新手也能寫得懂的源碼分析教程當(dāng)您翻開此書時(shí),就決定要跟著我一起手寫源碼。市面上的很多 Vue相關(guān)的技術(shù)書,要么想看看不懂,要么看得懂其實(shí)沒必要看。我希望這本書,可以讓想看的人能看懂,能學(xué)會(huì),能自己寫。看得懂的人,可以提問題,體會(huì)一下破
案的樂趣,那就完美了。
這本書適合初級、中級前端開發(fā)者學(xué)習(xí) Vue2源碼,書里會(huì)逐行、逐句、逐詞、逐字地帶您手寫 Vue2源碼,簡化復(fù)雜的源碼體系,抽出核心流程用來手寫實(shí)現(xiàn)。在教會(huì)您手寫核心源碼的同時(shí),也會(huì)帶領(lǐng)您梳理源碼,雙管齊下,讓讀懂源碼不再是翻不過的山。如果您是前端新人,想要學(xué) Vue2源碼但又不知從何入手,我相信這本書是您跨過門檻的墊腳石。如果您是初級、中級前端開發(fā)者,用了一段時(shí)間 Vue2,但是想要學(xué)又不知道怎么學(xué)源碼,我相信這本書是您的不二之選。如果您是前端大神,想要找找 BUG,體會(huì)破案的樂趣,那么這里絕對是您火眼金睛的試煉場。
希望您是那位有毅力跟著書中的文字去窺視 Vue世界的人。
這本書,獻(xiàn)給那些普通又不甘于平庸的前端coder。
按照慣例這是一個(gè)序
想了好久,不知道怎么開這個(gè)頭,連第一句話要怎么說都沒想好。剛好,就用我現(xiàn)在的忐忑和扭捏的心情作為這本書最開始的序言吧。說真的,從來都沒想過自己也會(huì)有出書的一天,雖然說出書并不難,但是想要寫好一本書卻并不容易,尤其是技術(shù)類書籍;也著實(shí)怕寫了出來,誤人子弟,這就是忐忑的緣由了。
作為搞技術(shù)并且想要搞好技術(shù)的人,在前端領(lǐng)域摸爬滾打了多年,雖無頂尖的視角,但是也有了些許的經(jīng)驗(yàn),總是想要把自己的理解和認(rèn)識(shí)分享給正在路上攀登的奮斗者,希望大家可以少走一點(diǎn)彎路,那么假如這本書能給大家哪怕一絲的感悟和進(jìn)步,我就十分欣喜了。我工作的這些年,一直有寫博客的習(xí)慣,再加上前段時(shí)間一直在學(xué)珠峰的前端架構(gòu)課程,所以,就想把自己在學(xué)習(xí) Vue2源碼過程中的感悟和理解,以及一些思路分享給大家,一起學(xué)習(xí)、進(jìn)步。
說說這本書吧,本書是關(guān)于 Vue2源碼分析的書,好吧,這等于沒說。但是我覺得這本書全篇所講的東西與 Vue無關(guān),講的都是JavaScript本身,以及算法、模式。那么我相信您肯定會(huì)問,Vue3都出了這么久了,市面上 Vue2分析的書也那么多,這本書有什么優(yōu)點(diǎn)? 我的答案是:這本書不僅講源碼,更是在寫源碼。很多人一聽到源碼,就會(huì)感覺十分高端和遙遠(yuǎn),可能會(huì)問:我才工作一年,能看得懂源碼嗎?在回答這個(gè)問題之前,我們先簡單分析下,源碼是什么? 源碼說到底不過就是人寫的代碼。既然是人寫的代碼,那有什么看不懂的呢? 其中無非就是:點(diǎn)(某些 API的使用)、線(某些邏輯線的梳理)以及由點(diǎn)和線拼成的面所形成的結(jié)果。那么本書中遇到復(fù)雜的點(diǎn),比如 ES6的有些高階 API,比如原型鏈等,Vue的核心邏輯線:響應(yīng)式原理、生命周期、依賴收集等,編者都會(huì)帶大家深入地去書寫、學(xué)習(xí)和理解。所以,讀完本書,您不僅可了解 Vue知識(shí),還可掌撐真正構(gòu)建 Vue的底層核心內(nèi)容。學(xué)到的也不僅僅是 Vue的用法和原理,還有對JavaScript,甚至是對于編程語言的深入解析。
您可能會(huì)問,學(xué)完了這本書,能達(dá)到什么水平? 我覺得你學(xué)完這本書,算是入門了。沒錯(cuò),就是入門,這本書能讓您領(lǐng)略源碼的風(fēng)采,不再需要依賴于什么博客文章、什么大神指導(dǎo),僅此而已。
另外,其實(shí)對于像 Vue、React等這樣的大型前端框架,源碼可以分為兩部分:構(gòu)建和應(yīng)用。這兩個(gè)詞簡單理解,就是一部分代碼是用來打包、壓縮我們運(yùn)行時(shí)的代碼的,另外一部分就是應(yīng)用代碼本身。本書僅會(huì)關(guān)注應(yīng)用部分的源碼,而不會(huì)詳細(xì)分析 Vue的打包構(gòu)建。一方面是因?yàn)楸救四芰τ邢?另外一方面是因?yàn)榇虬鼧?gòu)建這個(gè)話題有點(diǎn)大,我實(shí)在沒想好要怎么說。
好了,跟著我手摸手一起走進(jìn) Vue2的世界吧!
編 者