Vue.js 官方团队成员霍春阳新作,深入解析 Vue.js 设计细节【文末送书】
霍春陽(Hcy),Vue.js 官方團隊成員。專注于 Web 研發(fā)領(lǐng)域,是 Vue.js 3 的核心貢獻者之一,Vue.js 文檔生成工具 Vuese 的作者,技術(shù)社區(qū)活躍者,曾撰寫大量頗受好評的技術(shù)博客。
經(jīng)過一年的準(zhǔn)備,霍春陽的新書《Vue.js設(shè)計與實現(xiàn)》正式出版了!預(yù)售一周就已重印,刷新了近兩年的圖書重印記錄。?
坊間流傳著很多有關(guān)他的傳奇經(jīng)歷,很多人對他的經(jīng)歷都非常好奇。今天這篇文章讓大家走近霍春陽,了解一個真實的他,一個喜歡把事情做到極致的人,一個喜歡“留下點什么”的開發(fā)者。
大家好,我是霍春陽(Hcy)。
很開心的和大家分享一個消息:我的新書《Vue.js 設(shè)計與實現(xiàn)》出版了。
從 2021 年初開始準(zhǔn)備這本書,到今天正式出版,很開心一切都能夠按部就班的進行,雖然中間因疫情原因耽擱了一些,但整體上是在軌的。這里必須要感謝出版社里各位盡職盡責(zé)的工作人員,尤其是王軍花老師。
借著這個機會我想和讀者分享一些關(guān)于本書和我,以及 Vue.js 的一些事情。就從為什么要寫這本書開始吧。
為何要寫這本書?
這確實也是值得我本人深思的一件事兒。我想從兩個方面來闡述我寫這本書的原因:
“干一行,愛一行”
“留下點什么”
知乎上有一個問題:“你做程序員真的是因為熱愛嗎?”。我回答了這個問題,感興趣的朋友可以在這里了閱讀完整的回答:你做程序員真的是因為熱愛嗎?
大意是,恰好寫代碼這事兒能賺錢。而我是屬于那種“干一行,愛一行”的人,它講的是一種職業(yè)精神,即無所謂做哪個行業(yè),但只要確定了一個行業(yè),那么就能全身心的投入,并能夠因為這種投入和達到的成就讓你真正的愛上這個行業(yè),即所謂的“干一行,愛一行”。
從小我就有一個特殊的習(xí)慣(也許是怪癖),我也不知道是從什么時候、什么原因讓我產(chǎn)生并保持這種習(xí)慣。這個習(xí)慣是:“留下點什么”。
小時候家里有一臺黑白電視機,每天播放的內(nèi)容大概會在電視劇、廣告、動畫片之間反復(fù)。然后突然有一天我就想,如何能證明我看過電視的內(nèi)容呢?
為了能夠證明這一點,我就會根據(jù)電視劇、廣告、動畫片這幾個欄目對電視的內(nèi)容進行分類并寫在紙上,一旦電視切換了播放內(nèi)容,我就會在紙上對應(yīng)的分類后面畫一道豎線。
這樣一來,紙上的豎線就能夠證明我看過電視了,而這些豎線就是我看電視這件事情“留下來”的東西。這會給我一種莫名的“充實”感。
類似的事情還有很多。例如,每年秋收的時候家里用水稻脫粒機對水稻進行脫粒處理,脫粒后的水稻會被灌進編織袋中,由于脫粒的計費方式是按照最終水稻的袋數(shù)來算錢的,因此每灌滿一個編織袋都會記一次數(shù)量。
計數(shù)方式也很有意思,由于“正”字的筆畫數(shù)量正好是 5,兩個“正”字就代表 10 袋。當(dāng)時,我最喜歡的事情就是拿著粉筆在黑色木板上幫大人們記數(shù)。因為這種行為很符合“留下點什么”的審美。
再如,小時候玩游戲機(插游戲卡的那種),無論什么游戲,我都喜歡在游戲結(jié)束之后拿筆和紙記錄下局次,輸贏結(jié)果等,以便代表我確實玩過這些游戲,而記錄下來的這些內(nèi)容,就是我玩游戲這個行為“留下來”的東西。
回到這個問題本身,我為什么要寫這本書?
很簡單,我想“留下點什么”,以證明我確實為 Vue.js 做過貢獻。我很享受寫這本書的過程,它讓我感到很“充實”,留下了一些東西的那種充實。
以寫代碼為職業(yè),“干一行,愛一行”的性格讓我更加敬業(yè),并成為 Vue.js 的團隊成員。如果還能“留下點什么”,那這種“誘惑”對我來說簡直無法抗拒。若是“留下的這些東西”還能夠為讀者、為 Vue.js 社區(qū)帶來一些幫助的話,那真的是完美了。
而更加慶幸的一點是,真的有很多讀者私信我并表達了對這本書的期待。在一定程度上,我個人覺得我也非常適合編寫這么本書,其中一個最大的原因是:我認為我能與絕大部分讀者產(chǎn)生共鳴。
通常來說,學(xué)習(xí)一項技術(shù)只需要掌握其核心思想即可,而無需事無巨細地深入細節(jié)。這樣的學(xué)習(xí)方式有一定好處,但同時會給人一種“虛”的感覺。
就像上學(xué)時學(xué)習(xí)操作系統(tǒng)課程一樣,如果你不跟著課程完成對應(yīng)的實驗,實際修改一下操作系統(tǒng)的代碼,而只是學(xué)習(xí)一些進程、線程、文件系統(tǒng)、虛擬內(nèi)存的抽象概念,雖然能夠在一定程度上理解,但始終覺得不踏實。
同樣的,學(xué)習(xí)前端框架也是一樣的道理。基于這個原因,這本書則照顧到了兩個方面。
一方面,它從全局視角介紹了框架設(shè)計及其各個方面的權(quán)衡;另一方面,也從具體的代碼出發(fā),真正地將功能實現(xiàn),并在此過程中讓讀者能夠切身感受并學(xué)習(xí)其中的難點和解決方案。
我的確花費了很大精力編寫本書,共 500 頁,希望它的內(nèi)容不會讓你們失望。同時由于我的水平有限,有任何疏漏望不吝指出。
Vue.js 3 仍然在更新,
這本書會過時嗎?
這其實是一個好問題,也是我愿意強調(diào)的一個問題。簡單來說,答案是:不會。
這本書并非一本“源碼解讀”書籍,而是建立在筆者對 Vue.js 3 的理解之上,以由簡入繁的方式介紹 Vue.js 3 中各個功能模塊的設(shè)計與實現(xiàn)。同時輔以足夠的“細節(jié)”,旨在幫助讀者能夠更輕松、更自然地理解 Vue.js 3 的框架機理。
舉個例子,本書在介紹 Vue.js 3 中基于 Proxy 實現(xiàn)的響應(yīng)系統(tǒng)時,并沒有照貓畫虎地照搬 Vue.js 源碼中的實現(xiàn),并基于此反推代碼的運行機制。
而是會從 ECMAScript 的規(guī)范入手,詳細地闡述 JavaScript 對象的本質(zhì),以及創(chuàng)建代理對象(Proxy)的內(nèi)在原理,并基于此從 0 開始,一點一點地構(gòu)建整個完善的響應(yīng)系統(tǒng)。
這樣做的好處在于,讀者能夠了解代碼的發(fā)展路徑,真正的做到知其然并知其所以然。
再如,在模板編譯的章節(jié)中。本書同樣帶領(lǐng)讀者從 WHATWG 的規(guī)范入手,詳細地介紹了文本模式的概念以及其對解析器的影響。
在編寫模板編譯器的過程中,還會涉及到字符引用的解碼,這些內(nèi)容都需要從規(guī)范入手才能真正地理解“為什么”。幸運的是,本書會帶領(lǐng)讀者閱讀并理解相關(guān)的規(guī)范。
因此,我認為這本書是不會過時的。尤其是書中介紹的方法論,任何代碼的背后都需要有一個“原因”來支撐。
這個“原因”是多樣性的,它可能是某一個規(guī)范(如 ECMAScript 規(guī)范或 WHATWG 中關(guān)于 HTML 的解析規(guī)范),也可能是某個瀏覽器的 Bug,更可能是工具或語言的 limitation。
如何為 Vue.js 社區(qū)做貢獻?
為 Vue.js 社區(qū)做貢獻的方式是多種多樣的,我們歡迎任何種類的貢獻,無論哪一種貢獻,都值得給予足夠的尊重。
對于這本書而言,我也將其定義成是為 Vue.js 社區(qū)做貢獻的一種方式,旨在幫助大家更好的學(xué)習(xí)并使用 Vue.js。
社區(qū)里存在著各種各樣的角色,并非一定要以提交代碼的方式才算貢獻。在一定程度上來說,深度使用 Vue.js 并提供有意義的反饋信息甚至要比提交代碼的貢獻還大。而社區(qū)內(nèi)也的的確確存在這樣的角色,并且 Vue.js 團隊也非常歡迎并尊重他們。
社區(qū)的強大與否,很大一部分由生態(tài)決定。曾有一段時間我專注為 Vue.js 3 的核心做貢獻,這也是我有信心完成這本書的最重要原因之一。
Vue.js 的核心將仍然由尤大領(lǐng)導(dǎo),我本人未來會在 Vue.js 的社區(qū)項目建設(shè)和探索方向做更多的嘗試。正如我給自己立的 2022 年的 flag:
基于這個目標(biāo),現(xiàn)在已經(jīng)有了一些小的成果。為了解析 Vue SFC 中的<style>塊,我開發(fā)了?Telecss
再來一張圖書的照片:
最后,感謝為這本書寫推薦序/語的各位大佬,以及所有支持這本書的讀者,非常感謝,感恩~
希望我像按約定完成這本書一樣,也能在 2022 年底按約定完成這個 flag。同時我也有一些新的想法,希望能夠順帶著完成。為 Vue.js 的社區(qū)多樣性添磚加瓦,大家一起加油!!!
文末福利
小伙伴們,可以在本文留言區(qū)留言任意內(nèi)容參與抽獎~
抽獎規(guī)則:在我的公眾號留言超過3次的小伙伴中隨機抽1位。
其余留言再隨機抽1位。
另外源碼共讀提交5次及以上筆記的小伙伴群里(僅30多人)抽1位。
截止時間:3月7日晚8點
獲得新書《Vue.js設(shè)計與實現(xiàn)》包郵送。
中獎小伙伴,我會聯(lián)系兌獎。也可以提前掃碼加我微信 ruochuan12 以防失聯(lián)。或者發(fā)送源碼兩字參與源碼共讀。
總結(jié)
以上是生活随笔為你收集整理的Vue.js 官方团队成员霍春阳新作,深入解析 Vue.js 设计细节【文末送书】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工作404-判断浏览器函数
- 下一篇: 9年前的大一,我们这样为女生过37女生节