Vue.js 官方團隊成員霍春陽新作,深入解析 Vue.js 設計細節【文末送書】

霍春陽(Hcy),Vue.js 官方團隊成員。專注于 Web 研發領域,是 Vue.js 3 的核心貢獻者之一,Vue.js 文檔生成工具 Vuese 的作者,技術社區活躍者,曾撰寫大量頗受好評的技術博客。

經過一年的準備,霍春陽的新書《Vue.js設計與實現》正式出版了!預售一周就已重印,刷新了近兩年的圖書重印記錄。?


坊間流傳著很多有關他的傳奇經歷,很多人對他的經歷都非常好奇。今天這篇文章讓大家走近霍春陽,了解一個真實的他,一個喜歡把事情做到極致的人,一個喜歡“留下點什么”的開發者。


大家好,我是霍春陽(Hcy)。

很開心的和大家分享一個消息:我的新書《Vue.js 設計與實現》出版了。

從 2021 年初開始準備這本書,到今天正式出版,很開心一切都能夠按部就班的進行,雖然中間因疫情原因耽擱了一些,但整體上是在軌的。這里必須要感謝出版社里各位盡職盡責的工作人員,尤其是王軍花老師。

借著這個機會我想和讀者分享一些關于本書和我,以及 Vue.js 的一些事情。就從為什么要寫這本書開始吧。

dbf3c3ba71f7089894980166001cf116.gif

為何要寫這本書?

這確實也是值得我本人深思的一件事兒。我想從兩個方面來闡述我寫這本書的原因:

  • “干一行,愛一行”

  • “留下點什么”

知乎上有一個問題:“你做程序員真的是因為熱愛嗎?”。我回答了這個問題,感興趣的朋友可以在這里了閱讀完整的回答:你做程序員真的是因為熱愛嗎?

大意是,恰好寫代碼這事兒能賺錢。而我是屬于那種“干一行,愛一行”的人,它講的是一種職業精神,即無所謂做哪個行業,但只要確定了一個行業,那么就能全身心的投入,并能夠因為這種投入和達到的成就讓你真正的愛上這個行業,即所謂的“干一行,愛一行”

從小我就有一個特殊的習慣(也許是怪癖),我也不知道是從什么時候、什么原因讓我產生并保持這種習慣。這個習慣是:“留下點什么”

ea17774a2a3f7479526b3493eb5c8cbf.png

小時候家里有一臺黑白電視機,每天播放的內容大概會在電視劇、廣告、動畫片之間反復。然后突然有一天我就想,如何能證明我看過電視的內容呢?

為了能夠證明這一點,我就會根據電視劇、廣告、動畫片這幾個欄目對電視的內容進行分類并寫在紙上,一旦電視切換了播放內容,我就會在紙上對應的分類后面畫一道豎線。

這樣一來,紙上的豎線就能夠證明我看過電視了,而這些豎線就是我看電視這件事情“留下來”的東西。這會給我一種莫名的“充實”感。

類似的事情還有很多。例如,每年秋收的時候家里用水稻脫粒機對水稻進行脫粒處理,脫粒后的水稻會被灌進編織袋中,由于脫粒的計費方式是按照最終水稻的袋數來算錢的,因此每灌滿一個編織袋都會記一次數量。

計數方式也很有意思,由于“正”字的筆畫數量正好是 5,兩個“正”字就代表 10 袋。當時,我最喜歡的事情就是拿著粉筆在黑色木板上幫大人們記數。因為這種行為很符合“留下點什么”的審美。

再如,小時候玩游戲機(插游戲卡的那種),無論什么游戲,我都喜歡在游戲結束之后拿筆和紙記錄下局次,輸贏結果等,以便代表我確實玩過這些游戲,而記錄下來的這些內容,就是我玩游戲這個行為“留下來”的東西。

回到這個問題本身,我為什么要寫這本書?

很簡單,我想“留下點什么”,以證明我確實為 Vue.js 做過貢獻。我很享受寫這本書的過程,它讓我感到很“充實”,留下了一些東西的那種充實。

以寫代碼為職業,“干一行,愛一行”的性格讓我更加敬業,并成為 Vue.js 的團隊成員。如果還能“留下點什么”,那這種“誘惑”對我來說簡直無法抗拒。若是“留下的這些東西”還能夠為讀者、為 Vue.js 社區帶來一些幫助的話,那真的是完美了。

而更加慶幸的一點是,真的有很多讀者私信我并表達了對這本書的期待。在一定程度上,我個人覺得我也非常適合編寫這么本書,其中一個最大的原因是:我認為我能與絕大部分讀者產生共鳴

通常來說,學習一項技術只需要掌握其核心思想即可,而無需事無巨細地深入細節。這樣的學習方式有一定好處,但同時會給人一種“虛”的感覺。

就像上學時學習操作系統課程一樣,如果你不跟著課程完成對應的實驗,實際修改一下操作系統的代碼,而只是學習一些進程、線程、文件系統、虛擬內存的抽象概念,雖然能夠在一定程度上理解,但始終覺得不踏實。

同樣的,學習前端框架也是一樣的道理。基于這個原因,這本書則照顧到了兩個方面。

一方面,它從全局視角介紹了框架設計及其各個方面的權衡;另一方面,也從具體的代碼出發,真正地將功能實現,并在此過程中讓讀者能夠切身感受并學習其中的難點和解決方案。

我的確花費了很大精力編寫本書,共 500 頁,希望它的內容不會讓你們失望。同時由于我的水平有限,有任何疏漏望不吝指出。

7fe6c0b4cd26422ce69debb71a37018b.gif

Vue.js 3 仍然在更新,

這本書會過時嗎?

這其實是一個好問題,也是我愿意強調的一個問題。簡單來說,答案是:不會

這本書并非一本“源碼解讀”書籍,而是建立在筆者對 Vue.js 3 的理解之上,以由簡入繁的方式介紹 Vue.js 3 中各個功能模塊的設計與實現。同時輔以足夠的“細節”,旨在幫助讀者能夠更輕松、更自然地理解 Vue.js 3 的框架機理

舉個例子,本書在介紹 Vue.js 3 中基于 Proxy 實現的響應系統時,并沒有照貓畫虎地照搬 Vue.js 源碼中的實現,并基于此反推代碼的運行機制。

而是會從 ECMAScript 的規范入手,詳細地闡述 JavaScript 對象的本質,以及創建代理對象(Proxy)的內在原理,并基于此從 0 開始,一點一點地構建整個完善的響應系統。

這樣做的好處在于,讀者能夠了解代碼的發展路徑,真正的做到知其然并知其所以然

再如,在模板編譯的章節中。本書同樣帶領讀者從 WHATWG 的規范入手,詳細地介紹了文本模式的概念以及其對解析器的影響。

在編寫模板編譯器的過程中,還會涉及到字符引用的解碼,這些內容都需要從規范入手才能真正地理解“為什么”。幸運的是,本書會帶領讀者閱讀并理解相關的規范。

因此,我認為這本書是不會過時的。尤其是書中介紹的方法論,任何代碼的背后都需要有一個“原因”來支撐。

這個“原因”是多樣性的,它可能是某一個規范(如 ECMAScript 規范或 WHATWG 中關于 HTML 的解析規范),也可能是某個瀏覽器的 Bug,更可能是工具或語言的 limitation。

7ed248e0e48b4c7b5db955135b858b8c.gif

如何為 Vue.js 社區做貢獻?

為 Vue.js 社區做貢獻的方式是多種多樣的,我們歡迎任何種類的貢獻,無論哪一種貢獻,都值得給予足夠的尊重。

對于這本書而言,我也將其定義成是為 Vue.js 社區做貢獻的一種方式,旨在幫助大家更好的學習并使用 Vue.js

社區里存在著各種各樣的角色,并非一定要以提交代碼的方式才算貢獻。在一定程度上來說,深度使用 Vue.js 并提供有意義的反饋信息甚至要比提交代碼的貢獻還大。而社區內也的的確確存在這樣的角色,并且 Vue.js 團隊也非常歡迎并尊重他們。

社區的強大與否,很大一部分由生態決定。曾有一段時間我專注為 Vue.js 3 的核心做貢獻,這也是我有信心完成這本書的最重要原因之一。

Vue.js 的核心將仍然由尤大領導,我本人未來會在 Vue.js 的社區項目建設和探索方向做更多的嘗試。正如我給自己立的 2022 年的 flag:

863691c8a9817dd0c771c701d7b788f4.png

基于這個目標,現在已經有了一些小的成果。為了解析 Vue SFC 中的<style>塊,我開發了?Telecss

026d8ccb58dc051577bff41af96cf3d8.png

再來一張圖書的照片:

cf0c5e0d449e7ef1bffced0bf21d9d8c.png

最后,感謝為這本書寫推薦序/語的各位大佬,以及所有支持這本書的讀者,非常感謝,感恩~

希望我像按約定完成這本書一樣,也能在 2022 年底按約定完成這個 flag。同時我也有一些新的想法,希望能夠順帶著完成。為 Vue.js 的社區多樣性添磚加瓦,大家一起加油!!!

cf3d0e9f7b476b55b779794e54ccb679.png

文末福利

小伙伴們,可以在本文留言區留言任意內容參與抽獎~

抽獎規則:在我的公眾號留言超過3次的小伙伴中隨機抽1位

其余留言再隨機抽1位

另外源碼共讀提交5次及以上筆記的小伙伴群里(僅30多人)抽1位

截止時間:3月7日晚8點

獲得新書《Vue.js設計與實現》包郵送。

中獎小伙伴,我會聯系兌獎。也可以提前掃碼加我微信 ruochuan12 以防失聯。或者發送源碼兩字參與源碼共讀。

3e1e322234a13a5d583fa00c5c0702d0.png

979c94f22e2b826a23f9d719b674df95.gif

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/274867.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/274867.shtml
英文地址,請注明出處:http://en.pswp.cn/news/274867.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

分享memcache和memcached安裝過程(轉)

Memcache是什么&#xff1f;源代碼地址&#xff1a;http://code.google.com/p/memcached/downloads/list Memcache是一個自由和開放源代碼、高性能、分配的內存對象緩存系統。用于加速動態web應用程序&#xff0c;減輕數據庫負載。 它可以應對任意多個連接&#xff0c;使用非阻…

LINQ之路 5:LINQ查詢表達式

書寫LINQ查詢時又兩種語法可供選擇&#xff1a;方法語法&#xff08;Fluent Syntax&#xff09;和查詢表達式&#xff08;Query Expression&#xff09;。 LINQ方法語法的本質是通過擴展方法和Lambda表達式來創建查詢。C# 3.0對于LINQ表達式還引入了聲明式的查詢表達式&#xf…

調查謀殺案以換取Obra Dinn

回顧性 (RETROSPECTIVE) I am not sure if this is intentional, but Lucas Pope has a knack for turning the mundane into something special. This was evident in his release of Papers Please. In that game, you’re a border patrolman trying to provide for your fa…

9年前的大一,我們這樣為女生過37女生節【祝節日快樂】

這是一篇水文~沒啥目的&#xff0c;若說要有&#xff0c;就是希望大家參加源碼共讀學起來。公眾號后臺顯示所有讀者朋友中大約有23%的女生。前端工程師中女生應該占比相對多些。祝關注我公眾號的女生3.7女生節快樂&#xff0c;大部分公司明天應該都有半天假期。可以留言大學時你…

Jquery ajax 訪問調用帶參數的服務方法!

頁面腳本中的寫法: $.ajax({url: "http://localhost:3510/WebSite/WebService/ExceptionRecoder.asmx/SetExceptionInfo",contentType: "application/json; charsetutf-8", type: "POST", dataType: "js…

requests模塊發送帶headers的Get請求和帶參數的請求

1.在PyCharm開發工具中新建try_params.py文件&#xff1b; 2.try_params.py文件中編寫代碼&#xff1a; import requests#設置請求Headers頭部header {"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"}#請求輸入參數p…

面試官問:跨域請求如何攜帶cookie?

大家好&#xff0c;我是若?川。持續組織了6個月源碼共讀活動&#xff0c;感興趣的可以點此加我微信 ruochuan12 參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。歷史面試系列本文…

Method not found: '!!0[] System.Array.Empty()'.

一開始不知道啥情況&#xff0c;原來是自己把.net 框架改成4.6.1了&#xff0c;客戶機是4.0 so.... 把項目改低點&#xff0c;就ok了。轉載于:https://www.cnblogs.com/ZaraNet/p/11100207.html

記錄點滴8

第8~9周 4月7日~4月22日 第八周的時候實在太多東西要做了&#xff0c;我把寫周記這件事給忘了&#xff0c;其實也沒太大關系&#xff0c;寫跟不寫之間也沒有太大的鴻溝&#xff0c;只是寫了之后&#xff0c;會讓我的記憶更加清晰&#xff0c;讓自己明白&#xff0c;最近自己做了…

ux設計中的各種地圖_移動應用程序設計中的常見UX錯誤

ux設計中的各種地圖Have you ever tried a new app, only to realize you have no idea how to use it?您是否曾經嘗試過一個新的應用程序&#xff0c;卻發現自己不知道如何使用它&#xff1f; Few things can transport a person from calm and happy, to frustrated and an…

如何使用 Node 后端創建 React 應用程序:完整指南

大家好&#xff0c;我是若川。持續組織了6個月源碼共讀活動&#xff0c;感興趣的可以點此加我微信 ruochuan12 參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。歷史面試系列React…

FP error code老是忘記的看這里:只給出最常用的幾個。

把常見的幾個記牢&#xff0c;不要在比賽時糾結。 錯誤2&#xff1a;輸入文件未找到。 錯誤106&#xff1a;數據讀入的格式錯誤&#xff0c;往往是讀入語句出錯。 錯誤200&#xff1a;被零除。 錯誤201&#xff1a;范圍檢查錯誤&#xff0c;數組越界。 錯誤202&#xff1a;棧溢…

快速求冪算法

1 #include <stdio.h>2 #include <math.h>3 //遞歸算法4 int recursion(int a,int b)5 {6 int tem 1;7 if(b0)return 1;8 else if(b1)return a;9 tem recursion(a,b>>1); 10 tem tem*tem; 11 if(b&1) tem tem * a; 12 r…

工業儀器儀表 界面設計_如何設計時尚的儀表板界面

工業儀器儀表 界面設計重點 (Top highlight)Welcome to the second step by step UI guide. Since you really liked my first article on “How to achieve Friendly, Lightweight UI”, I decided to make another one in a similar manner. Please note, that this is not a…

linux ifconfig命令參數及用法詳解--linux查看配置網卡命令

ifconfig 是一個用來查看、配置、啟用或禁用網絡接口的工具&#xff0c;這個工具極為常用的。可以用這個工具來臨時性的配置網卡的IP地址、掩碼、廣播地址、網關等。也可以把 它寫入一個文件中&#xff08;比如/etc/rc.d/rc.local)&#xff0c;這樣系統引導后&#xff0c;會讀取…

給3月要跳槽的前端提個醒!不了解微前端就別去面試了,不然……

在后端架構發展史上&#xff0c;如果要找一個低耦合高內聚架構模式的典范&#xff0c;微服務當仁不讓。在互聯網業務急速擴張的背景下&#xff0c;微服務架構解決了后端服務中的“重”&#xff0c;讓每個服務都能夠獨立部署、獨立擴展&#xff0c;每個服務都具有穩固的模塊邊界…

調試 SharePoint 解決方案

調試 SharePoint 解決方案 可以使用 Visual Studio 調試器來調試 SharePoint 解決方案。 啟動調試后&#xff0c;Visual Studio 會將項目文件部署到 SharePoint Server&#xff0c;然后在Web 瀏覽器中打開 SharePoint 網站的一個實例。 以下各節說明如何在 Visual Studio 中調試…

ui和ux的區別_UI和UX之間的區別

ui和ux的區別You’ve probably heard a lot of self-proclaimed “UX/UI” designers out there, the word “UI” thrown around endlessly at Apple keynotes, or tech startups saying “we need to fix the UX here and the UX there.”?ouve可能聽說過很多自稱“UX / UI”…

給UIWebView增加搜索欄

在xib文件中拖入UIWebView。使用代碼為UIWebView的滾動控件增加搜索欄&#xff1a;UISearchBar* searchBar[[[UISearchBar alloc]initWithFrame:CGRectMake(0, -44, 320, 44)]autorelease];[self.browser.scrollView addSubview:searchBar];self.topBarsearchBar;[[self.browse…

用JS輕松實現一個錄音、錄像、錄屏工具庫

大家好&#xff0c;我是若川。持續組織了6個月源碼共讀活動&#xff0c;感興趣的可以點此加我微信 ruochuan12 參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。歷史面試系列前言最…