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

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

尤雨溪

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


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

Vue 一開始完全是一個個人興趣項目。2013 年的時候我還在 Google Creative Lab,那時候前端框架還處於比較草莽的階段,React 剛剛發佈還沒幾個人知道,最成熟的是 AngularJS (Angular 1)。我當時一方面是想自己實現一個簡單的框架練練手,另一方面是想嘗試一下用 ES5 的 Object.defineProperty 實現數據變動偵測。眾所周知 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.js :締造自由與真我

尤雨溪

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

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

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

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

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

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

Vue 是在什麼時候開始以國際化社區的方式來運作的?

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

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

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

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

尤雨溪

與 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更多的新功能,我現在根本無法想象再回到大公司去工作的那種情境。

原文鏈接:https://gitee.com/gitee-stars/14

採訪人:尤雨溪

出品方:碼雲封面人物


分享到:


相關文章: