尤雨溪(Evan You),前端框架 Vue.js 做者,獨立開源開發者,現居美國新西。曾就任於 Google Creative Labs 和 Meteor Development Group。因爲工做中大量接觸開源的 JavaScript 項目,最後本身也走上了開源之路,如今全職開發和維護Vue.js。前端
Vue 一開始徹底是一個我的興趣項目。2013 年的時候我還在 Google Creative Lab,那時候前端框架還處於比較草莽的階段,React 剛剛發佈還沒幾我的知道,最成熟的是 AngularJS (Angular1)。我當時一方面是想本身實現一個簡單的框架練練手,另外一方面是想嘗試一下用 ES5 的 Object. define Property 實現數據變更偵測。衆所周知 AngularJS使用的是髒檢查,而當時大部分的應用還須要支持 IE8,因此不能全面使用 ES5,而我的項目則不須要考慮這些。Vue 就是這樣做爲一個實驗性質的項目開始的。vue
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只有一個核心庫,如今則是包含了路由、狀態管理、CLI 工具鏈、瀏覽器開發者插件、ESLint 插件等等的全套設施。目前只有核心庫依然由我維護,其它子項目基本都交給團隊成員去作平常維護了。web
簡約和功能之間的平衡確實是一個頗有挑戰性的設計問題。從個人角度來看,須要確保的是當用戶不須要一個功能的時候,那麼這個功能就不該該給用戶形成額外的心智負擔。好比說 Vue 的 動畫組件,若是你不須要動畫功能,那麼你能夠徹底無視它的存在。從框架層面來講,這也體如今 Vue 的"漸進式」 設計理念裏面,好比你不須要客戶端路由,那麼你甚至不須要知道 vue-router 的存在。但對於須要這些功能的用戶而言,這些功能都是包含在框架以內的。因此 Vue 的 API 列表看上去好像很長,但實際上手須要掌握的核心概念卻很簡單,用戶只須要去了解功能的意義和價值就能夠了。vue-router
固然也適合!可是須要團隊有良好的開發規範,代碼的可長期維護本質上是一個規範問題。要讓一我的寫出來的代碼不只能被之後的同一我的看懂,還能被團隊裏其它成員看懂,甚至是被好久之後新加入的人看懂。從這一點來講,靈活性跟長期可維護性確定是有必定衝突的,想要寫出來的代碼一致,就須要有制約。有人可能以爲 Vue 制約太少,但其實該有的都有,徹底取決於你是否須要它們。若是你知道一個項目是要打長期戰的,那麼在啓動項目的時候,就要有意識的選用框架所提供的有利於長期維護的功能。一方面是採用好比 Vuex 這樣的狀態管理方案 -Vuex 的代碼是自帶必定的強制規範的,它可讓你們寫出來的修改狀態代碼都遵循同樣的流程。另外一方面則是須要團隊制定嚴謹的開發規範,好比代碼風格、靜態檢查、TypeScript、單元測試等等——這些 Vue 都經過 VueCLI 提供了工具層面的支持。咱們在 3.0 中還會進一步增強和 TypeScript 的整合。小程序
Vue 目前除了我以外還有一個全職成員蔣豪羣,他如今負責咱們 CLI 的維護工做。除此以外的成員分散在世界各地,都是志願者,但絕大部分人的全職工做也都是每天要和Vue 打交道的。這些成員維護着咱們 GitHub 上的倉庫以及文檔,也有人主要負責社區,好比管理論壇、聊天室、各地的線下聚會等等。要說運營策略,其實沒有什麼策略, Vue 並非一個商業項目,它如今幾乎徹底是由一個自發造成的社區在推進,這就是開源的精妙絕倫之處。瀏覽器
從始至終都是。我以爲開源不分國界,因此一切都是以儘量讓更多人蔘與到 Vue 的方式去運做的。性能優化
最大的變化就是我做爲項目管理者工做上的轉變吧。一開始只須要埋頭寫代碼,偶爾修幾個 bug 就好了,可是如今要作不少代碼以外的工做,好比思考項目的總體規劃,跟社區溝通開發計劃,跟團隊成員溝通項目情況,跟贊助商溝通贊助合同,飛到世界各地參加會議,協調社區裏潛在的利益衝突等等,能夠說如今更像是半個項目經理吧,這也是一個成長的過程。運營開源項目不只僅是代碼,更重要的是人。前端框架
其實世界各地的 Vue開發者共同語言和相同點遠多於不一樣的地方,畢竟你們都是作同一行,用的又是同一個框架。前端工程師
有怎樣的發展規劃呢?
Vue 的定位就是爲前端開發提供一個低門檻,高效率,但同時又可以伴隨用戶成長的框架。所謂的 「伴隨用戶成長」,就是當一個新手用戶入門的時候,Vue 儘量地讓這個過程簡單直接,而當以後用戶開始作更復雜的應用了,有更復雜的需求了,他會發現 Vue 依然可以提供良好的支持。這樣 Vue 能夠在新手成長到進階的開發者的一路上都提供價值。在這個大目標的前提下,Vue 會根據 web 平臺和 JavaScript 語言自己的進化不斷改進本身,確保自身能夠始終勝任這個使命。
Vue 在國內確實有廣大的用戶羣體,不光有各種大廠的組件庫,如今還有基於 Vue 生成各類小程序的方案,這多是中國市場比較獨特的一個需求,擁有這個能力可能對 Vue 接下來在中國的發展還挺關鍵的。
這個世界不會自動給予開源項目的維護者對應的經濟回報,能得到多少回報,除了自己創造的價值,也取決於維護者選擇怎樣的變現方式。有些人可能一聽到開源和變現這兩個詞放在一塊兒就以爲不舒服了,但其實這是一個很現實的問題 。不管是做爲公司自己須要的技術順道開源也好,仍是做爲獨立項目尋求捐助也好,嚴肅的、創造真正的價值的開源必然須要有某種形式的經濟利益參與其中,纔可能保證維護者的長期穩定的投入,否則就極可能須要以犧牲維護者的 life work balance 爲代價,這種狀況我也見過不少。
若是選擇權在我手裏的話固然仍是走技術路線,如今技術以外的工做都是不得不作纔去作的,有時候會以爲 「就想安安靜靜寫會兒代碼「,哈哈。至於管理,我以爲它是隨着你的項目複雜程度愈來愈高,和團隊成員愈來愈多,而伴隨產生的剛需能力吧,我也是不停的在學習和成長。
這倒未必,畢竟前端如今也是一個很大的範疇了,作架構/工具鏈和作面向用戶的組件就涉及很不同的側重點和知識領域。但總體上而言,前端由於是直接跟用戶打交道的活,因此最根本的是要有同理心,也就是可以站在用戶的角度去思考,理解用戶體驗和需求,從而找出可以達成這些體驗和需求的技術方案。學習設計可以很好地鍛鍊這種站在用戶的角度思考的能力,由於在進行藝術創做的時候是具備多維性和發散性的,這種思惟方式在我優化 Vue 的過程當中,確實是幫助了我能站在用戶的角度,更多的去理解用戶體驗。
如今因爲互聯網服務的爆發,對於前端的需求也大量增長,但同時也致使一些崗位的工做內容是同質化的,只要是掌握了基本技能的前端均可以作,那麼這些崗位就變成了替代性很高的勞動力。若是學前端只是單純爲了找份工做,那長期發展確定不會樂觀。想要跳出這個層面須要對這門技術自己有足夠的興趣和熱情,而後找到一個專精,好比你特別擅長性能優化,或者你寫的組件用戶體驗特別好,你切頁面可以切得 100%還原了設計師給出的設計效果,甚至更加簡潔優雅,這都是能夠的。
如今工做之餘的時間都在帶娃,哈哈!每一年還要去世界各地開會,其實由於有時差都挺累的,但可以感覺不少不一樣的國家城市也算是轉換一下節奏。偶爾有那麼一點點本身的時間,主要是看看漫畫,玩玩遊戲,是個典型的宅男。
最近由於戰鬥天使的電影很火,因此特地把原著《銃夢》和《銃夢 Last Order》從頭至尾看了一遍,真是神做!
自由。當你能夠作本身喜歡的工做來養活本身,同時又不受各類條條框框的約束,這種自由是無價的。能夠這麼說,我用鍵盤敲出了 Vue,而 Vue 把自由和真實的本我饋贈給了我,如今的我很清晰的明白本身在作什麼,我想要的 Vue 是什麼樣的,我能跟隨本身心裏的指引去開發出 Vue 更多的新功能,我如今根本沒法想象再回到大公司去工做的那種情境。