尤雨溪談 Vue.js :締造自由與真我

碼雲Gitee發表於2019-03-11

尤雨溪(Evan You),前端框架 Vue.js 作者,獨立開源開發者,現居美國新西。曾就職於 Google Creative Labs 和 Meteor Development Group。由於工作中大量接觸開源的 JavaScript 專案,最後自己也走上了開源之路,現在全職開發和維護Vue.js。

最初是什麼動機促使了Vue 的產生?

Vue 一開始完全是一個個人興趣專案。2013 年的時候我還在 Google Creative Lab,那時候前端框架還處於比較草莽的階段,React 剛剛釋出還沒幾個人知道,最成熟的是 AngularJS (Angular1)。我當時一方面是想自己實現一個簡單的框架練練手,另一方面是想嘗試一下用 ES5 的 Object. define Property 實現資料變動偵測。眾所周知 AngularJS使用的是髒檢查,而當時大部分的應用還需要支援 IE8,所以不能全面使用 ES5,而個人專案則不需要考慮這些。Vue 就是這樣作為一個實驗性質的專案開始的。

Vue 的發展歷程是什麼樣?從1.0到2.0有哪些大方面的改動?

Vue 的發展歷程,從最初的實驗階段(2013年中到2014年2月),0.x 階段 (2014年2月到2015年10月),1.x 階段 (2015年10月到2016年9月),到現在的2.x 階段 (2016年9月至今),加上正式對外發布的時間,到今天已經有足足5年多的時間了。0.x-1.0 的改動主要集中在模版語法上,在 1.0 之後,模版語法就相對穩定,沒有再經歷過特別大的改動了。2.0 的改動則專注於內部的渲染機制變化,引入了 Virtual DOM,從而獲得了服務端渲染、原生渲染、手寫渲染函式等能力。目前 3.0 正在竭力的開發過程中,主要集中於利用 ES2015 的新特性、改進內部架構和效能優化上。

作為創始人,目前您對 Vue 的貢獻與初期相比大概佔多少比重呢?

現在的 Vue 跟執行初期相比,最大的區別就是框架涵蓋的範圍變大了許多。一開始Vue只有一個核心庫,現在則是包含了路由、狀態管理、CLI 工具鏈、瀏覽器開發者外掛、ESLint 外掛等等的全套設施。目前只有核心庫依然由我維護,其它子專案基本都交給團隊成員去做日常維護了。

Vue 的程式碼追求簡約輕量,在實際開發中是怎麼和“功能性”結合在一起的?

簡約和功能之間的平衡確實是一個很有挑戰性的設計問題。從我的角度來看,需要確保的是當使用者不需要一個功能的時候,那麼這個功能就不應該給使用者造成額外的心智負擔。比如說 Vue 的 動畫元件,如果你不需要動畫功能,那麼你可以完全無視它的存在。從框架層面來說,這也體現在 Vue 的"漸進式” 設計理念裡面,比如你不需要客戶端路由,那麼你甚至不需要知道 vue-router 的存在。但對於需要這些功能的使用者而言,這些功能都是包含在框架之內的。所以 Vue 的 API 列表看上去好像很長,但實際上手需要掌握的核心概念卻很簡單,使用者只需要去了解功能的意義和價值就可以了。

目前市場上初創及中小型企業的技術團隊為實現專案的高效 開發及快速交付,對 Vue 的採用度非常高,那對於需要長期 維護的專案能選擇使用 Vue 嗎?

當然也適合!但是需要團隊有良好的開發規範,程式碼的可長期維護本質上是一個規範問題。要讓一個人寫出來的程式碼不僅能被以後的同一個人看懂,還能被團隊裡其它成員看懂,甚至是被很久以後新加入的人看懂。從這一點來說,靈活性跟長期可維護性肯定是有一定衝突的,想要寫出來的程式碼一致,就需要有制約。有人可能覺得 Vue 制約太少,但其實該有的都有,完全取決於你是否需要它們。如果你知道一個專案是要打長期戰的,那麼在啟動專案的時候,就要有意識的選用框架所提供的有利於長期維護的功能。一方面是採用比如 Vuex 這樣的狀態管理方案 -Vuex 的程式碼是自帶一定的強制規範的,它可以讓大家寫出來的修改狀態程式碼都遵循一樣的流程。另一方面則是需要團隊制定嚴謹的開發規範,比如程式碼風格、靜態檢查、TypeScript、單元測試等等——這些 Vue 都通過 VueCLI 提供了工具層面的支援。我們在 3.0 中還會進一步加強和 TypeScript 的整合。

可以簡單介紹一下目前 Vue 的團隊和運營策略嗎?

Vue 目前除了我之外還有一個全職成員蔣豪群,他現在負責我們 CLI 的維護工作。除此之外的成員分散在世界各地,都是志願者,但絕大部分人的全職工作也都是天天要和Vue 打交道的。這些成員維護著我們 GitHub 上的倉庫以及文件,也有人主要負責社群,比如管理論壇、聊天室、各地的線下聚會等等。要說運營策略,其實沒有什麼策略, Vue 並不是一個商業專案,它現在幾乎完全是由一個自發形成的社群在推動,這就是開源的精妙絕倫之處。

Vue 是在何時開始以國際化社群的方式來運作的?

從始至終都是。我覺得開源不分國界,所以一切都是以儘可能讓更多人蔘與到 Vue 的方式去運作的。

您認為 Vue 從個人開發者維護的開源專案到國際化社群運作的品牌,最大的變化是什麼?有什麼經驗可以分享嗎?

最大的變化就是我作為專案管理者工作上的轉變吧。一開始只需要埋頭寫程式碼,偶爾修幾個 bug 就行了,但是現在要做很多程式碼之外的工作,比如思考專案的整體規劃,跟社群溝通開發計劃,跟團隊成員溝通專案狀況,跟贊助商溝通贊助合同,飛到世界各地參加會議,協調社群裡潛在的利益衝突等等,可以說現在更像是半個專案經理吧,這也是一個成長的過程。運營開源專案不僅僅是程式碼,更重要的是人。

與 Vue 國際化的團隊協同工作,面向不同國家的開發者,您有什麼有趣的發現或啟發嗎?

其實世界各地的 Vue開發者共同語言和相同點遠多於不同的地方,畢竟大家都是做同一行,用的又是同一個框架。

Vue 是作為 GitHub 2018前端熱門專案第一,同時也是開源中國2018年度最受歡迎開源軟體第一,展現了 Vue 在國內外的巨大影響力,未來 Vue

有怎樣的發展規劃呢?

Vue 的定位就是為前端開發提供一個低門檻,高效率,但同時又能夠伴隨使用者成長的框架。所謂的 “伴隨使用者成長”,就是當一個新手使用者入門的時候,Vue 儘可能地讓這個過程簡單直接,而當之後使用者開始做更復雜的應用了,有更復雜的需求了,他會發現 Vue 依然能夠提供良好的支援。這樣 Vue 可以在新手成長到進階的開發者的一路上都提供價值。在這個大目標的前提下,Vue 會根據 web 平臺和 JavaScript 語言本身的進化不斷改進自己,確保自身可以始終勝任這個使命。

國內的大公司也開始使用 Vue 來開發專案,如滴滴開源的基於 Vue 實現的移動端元件庫 Cube-UI,您怎麼看 Vue 在國內的發展?

Vue 在國內確實有廣大的使用者群體,不光有各類大廠的元件庫,現在還有基於 Vue 生成各種小程式的方案,這可能是中國市場比較獨特的一個需求,擁有這個能力可能對 Vue 接下來在中國的發展還挺關鍵的。

您如何看待開源專案的商業化?

這個世界不會自動給予開源專案的維護者對應的經濟回報,能獲得多少回報,除了本身創造的價值,也取決於維護者選擇怎樣的變現方式。有些人可能一聽到開源和變現這兩個詞放在一起就覺得不舒服了,但其實這是一個很現實的問題 。無論是作為公司本身需要的技術順道開源也好,還是作為獨立專案尋求捐助也好,嚴肅的、創造真正的價值的開源必然需要有某種形式的經濟利益參與其中,才可能保證維護者的長期穩定的投入,不然就很可能需要以犧牲維護者的 life work balance 為代價,這種情況我也見過很多。

在個人職業發展方面,您是更傾向於專精技術還是轉型管理?

如果選擇權在我手裡的話當然還是走技術路線,現在技術之外的工作都是不得不做才去做的,有時候會覺得 “就想安安靜靜寫會兒程式碼“,哈哈。至於管理,我覺得它是隨著你的專案複雜程度越來越高,和團隊成員越來越多,而伴隨產生的剛需能力吧,我也是不停的在學習和成長。

優秀的前端工程師都是藝術家,您個人從本科讀藝術史到碩士讀美術設計和技術專業的經歷,是否更好的印證了這點?

這倒未必,畢竟前端現在也是一個很大的範疇了,做架構/工具鏈和做面向使用者的元件就涉及很不一樣的側重點和知識領域。但整體上而言,前端因為是直接跟使用者打交道的活,所以最根本的是要有同理心,也就是能夠站在使用者的角度去思考,理解使用者體驗和需求,從而找出能夠達成這些體驗和需求的技術方案。學習設計能夠很好地鍛鍊這種站在使用者的角度思考的能力,因為在進行藝術創作的時候是具有多維性和發散性的,這種思維方式在我優化 Vue 的過程中,確實是幫助了我能站在使用者的角度,更多的去理解使用者體驗。

近些年國內前端開發的需求一直在增加,從碼雲 Gitee 上的開源專案就可見一斑。雖有大量人員湧入,但優秀的前端工程師並不多,很多人也只停留在切頁面水平,對於未來的成長路線並不清楚,對此您有什麼經驗和建議分享?

現在由於網際網路服務的爆發,對於前端的需求也大量增加,但同時也導致一些崗位的工作內容是同質化的,只要是掌握了基本技能的前端都可以做,那麼這些崗位就變成了替代性很高的勞動力。如果學前端只是單純為了找份工作,那長期發展肯定不會樂觀。想要跳出這個層面需要對這門技術本身有足夠的興趣和熱情,然後找到一個專精,比如你特別擅長效能優化,或者你寫的元件使用者體驗特別好,你切頁面能夠切得 100%還原了設計師給出的設計效果,甚至更加簡潔優雅,這都是可以的。

工作之餘是如何給自己充電的?平時都如何安排工作和生活?有什麼業餘愛好?

現在工作之餘的時間都在帶娃,哈哈!每年還要去世界各地開會,其實因為有時差都挺累的,但能夠感受很多不同的國家城市也算是轉換一下節奏。偶爾有那麼一點點自己的時間,主要是看看漫畫,玩玩遊戲,是個典型的宅男。

Vue的發行版都是以動漫命名的,像是1.0的新世紀福音戰士(Evangelion)和2.0的攻殼機動隊(Ghost in the Shell),最近有看什麼新的動漫嗎?

最近因為戰鬥天使的電影很火,所以特意把原著《銃夢》和《銃夢 Last Order》從頭到尾看了一遍,真是神作!

Vue 給您帶來的最大的收穫是什麼?

自由。當你可以做自己喜歡的工作來養活自己,同時又不受各種條條框框的約束,這種自由是無價的。可以這麼說,我用鍵盤敲出了 Vue,而 Vue 把自由和真實的本我饋贈給了我,現在的我很清晰的明白自己在做什麼,我想要的 Vue 是什麼樣的,我能跟隨自己內心的指引去開發出 Vue 更多的新功能,我現在根本無法想象再回到大公司去工作的那種情境。

碼雲 Gitee 往期《封面人物》精彩推薦

  • Ruby 之父松本行弘:程式設計師的樂趣、存在感與平衡
  • 從退學到創業,90 後程式設計師為啥這麼愛折騰?
  • 何不做一個既專業又瀟灑的程式設計師?

相關文章