本文為轉載。版權屬于原作者。
原譯文出處為:https://www.zcfy.cc/article/an-interview-with-vue-js-creator-evan-you-3143.html
原文連結: medium.freecodecamp.com

我采訪了尤雨溪,著名漸進式 JavaScript 架構 vuejs.org 的創造者。尤雨溪現通過 Patreon 平台衆籌全職開發 Vue.js 的資金。他還曾在 Google 和 Meteor 工作過。
這篇文章 最初 釋出在 Between the Wires,這是一個采訪系列,專門采訪那些為程式員開發産品的人。
和我們講講你的童年和你的家鄉吧
好的,我出生在中國,我的家鄉叫無錫,一個中等規模的城市,離上海很近。然後我在上海念了三年高中,是以經常兩地來回跑。高中畢業後我去了美國念大學。我感覺我接觸電腦比較早,但是我當時并沒有真正開始程式設計。我對遊戲更感興趣,我在高中時,就經常玩 Flash,因為我非常喜歡制作互動的效果來講述故事。
談一談你的第一次程式設計經曆?
「JavaScript 很吸引我,因為它能夠快速建構一些東西并分享給别人。把它放在網上,通過一個網址,任何有浏覽器的人都可以看到。這就是吸引我開始 Web 開發和 JavaScript 程式設計的原因。」
當我在美國上大學的時候,老實說,我不知道我想要做什麼,而且我的專業是室内藝術和藝術史。當我快畢業時,我感覺很難找到和專業相關的工作。
我盤算着或許我可以去一個适合我的碩士課程,學習更多的技能。我去了 Parsons,讀了一個美術設計和技術的碩士。這是一個非常好的專業,因為每個人都是既學習設計也學習程式設計。他們會教一些比如 openFrameworks,處理,動畫算法之類的課程,而且你也必須寫應用程式和互動界面。
Parsons 沒有真正涉及很多的 JavaScript,但是 JavaScript 很吸引我,因為它能夠快速建構一些東西并分享給别人。把它放在網上,通過一個網址,任何有浏覽器的人都可以看到。這就是吸引我開始 Web 開發和 JavaScript 程式設計的原因。
當時 Chrome experiments 這個網站剛剛釋出,我深深的被震撼了。我立即開始學習 JavaScript,并開始開發類似 Chrome experiments 的項目。我把這些項目放在我的履歷上,然後被 Google 創意實驗室的招聘人員注意到了。我加入了Five program。每年創意實驗室會招五名應屆畢業生,組成一個小組,一個人寫文案,一個人搞技術,一個人做平面設計,一個人統籌安排和一個打雜的。
好的,什麼時候或者是什麼驅使你開發 Vue.js 的?
我在 Google 的工作需要在浏覽器上進行大量原型設計,于是我想要盡快獲得有形的東西。當時有些項目使用了 Angular。Angular 提供了一些用資料綁定和資料驅動來處理 DOM 的方法,是以你不必自己碰 DOM。它也有一些副作用,就是按照它規定的方式來建構代碼。對于當時的場景而言實在是太重了。
我想,我可以隻把我喜歡的部分從 Angular 中提出來,建立一個非常輕巧的庫,不需要那些額外的邏輯。我也很好奇 Angular 的源碼到底是怎麼設計的。我最開始隻是想着手提取 Angular 裡面很小的功能,如聲明式資料綁定。Vue 大概就是這麼開始的。
用過一段時間之後,我感覺我做的東西還有點前途,因為我自己就很喜歡用。于是我花了更多的時間把它封裝好,取了一個名字叫做 Vue.js,我記得那時還是 2013 年。後來我想『我花了這麼多時間,不能隻有我一個人用,我應該和别人分享,他們也會感覺到 Vue 的好處,他們也會喜歡上 Vue 的。』
2014 年 2 月,我第一次将它作為實際的項目釋出在 Github 上,并把連結發送到了 Hacker News 上,它就被頂到了首頁,然後它在首頁待了好幾個小時。後來,我寫了一篇文章,分享了 Vue 第一周的使用資料以及我的感受。
那是我第一次看見這麼多人在 Github 上為一個項目打星星。我當時一個星期收獲了好幾百個星星,整個人都激動壞了。
如果讓你列出幾個其它的架構和 Vue 的核心功能相比,那麼你列舉哪些?
我認為在所有的架構中,Vue 可能與 React 最像,但從更廣泛的意義上說,在所有架構中,我自己創造了一個概念叫漸進的架構。因為 Vue 的核心組成隻是資料綁定群組件,和 React 差不多。它隻是解決了一小部分很重要的痛點。與 React 相比,Vue 可能更簡單易用,隻知道一些 HTML,JavaScript 和 CSS 知識的人都可以很快入門 Vue。
在架構層面上,我是用一個非常精簡和盡可能小的的核心來建構的。但是當建構更複雜的應用的時候,有很多其他的問題需要解決。比如說路由,或者說怎麼處理跨元件通信,怎麼樣在大型應用程式中共享狀态,這樣的話我們就還需要更多的建構工具來子產品化我們的代碼庫。怎麼樣來組織樣式和各種各樣的靜态資源?像 Ember 或 Angular 這些非常完整的架構,它們就想解決所有可能遇到的這些問題,并把這些功能全都內建到架構中。
這就叫有得必有失吧。對使用者使用情況的假設越多,架構最終的靈活性就越低。或者像 React 這樣把很多問題都留給社群。React 社群是非常非常活躍的,經常有很多牛 X 的想法跳出來,當然也有不少不完美的想法。Vue 就是比較折中,仍然保持一個很小的核心,隻提供一些最重要的功能。但是我們還是在逐漸提供一些更多的獨立解決方案,比如說路由,狀态管理,建構工具鍊和 CLI。它們都是官方維護的,有很好的文檔,設計的也非常好,可以各種搭配使用,但重點是不需要的時候就可以不用。我認為這可能是 Vue 作為一個架構最大的特色。
你如何通過 Vue.js 來變現的?
「我為開發者們創造了價值,是以從理論上說,如果我能以某種方式得到接近于這些價值的錢,那麼我應該能夠養活自己。」
我為開發者們創造了價值,是以從理論上說,如果我能以某種方式得到接近于這些價值的錢,那麼我應該能夠養活自己。當然這也是比較複雜的事情,因為畢竟 JavaScript 生态大多是開源的,沒有一個好的方式讓開發者們支付和購買自己正在使用的架構。
Vue 的使用者群非常有活力。許多 Vue 使用者來自 Laravel 社群,他們非常熱情真誠,人很好。我就感覺衆籌可能是個不錯的想法。在 Patreon 上我隻是想試試這個想法。實際上,React-Hot-Loader 和 Redux 的作者 Dan Abramov 也在 Patreon 上搞過一個小的衆籌,勾起了我的興趣。我粗略地估計了一下有多少人在使用 Vue。假如有一萬個人在用,其中百分之一的人願意每月給我 10 美元就差不多了。
在二月份,我就在 Patreon 上挂出衆籌頁面。主要是向兩個目标群體,一個是針對使正在用 Vue 的個人開發者,當然他們肯定隻會給一些小費,買買咖啡之類的。那麼還有就是企業和公司,像初創公司或咨詢公司,他們用 Vue 做了一些東西。他們肯定希望 Vue 在很長一段時間是穩定維護的。如果他們知道他們對我經濟支援就可以讓 Vue 持續穩定維護下去,他們也會很有安全感。
我還在 Patreon 衆籌上加了一個附加獎勵。如果有公司願意贊助我,那麼我可以把公司的标志放在 vuejs.org 的贊助商頁面上,就相當于在社群給公司打了廣告。Patreon 衆籌得到的金額裡有一半是來自個人的,其中還有一個人每月贊助我 2000 美元。我其實最開始也并不知道衆籌可以成功,但目前為止還是不錯的。當時我說如果在 Patreon 每個月衆籌到 4000 美元我就全職開發 Vue,現在每月可以衆籌到 9800 美元。
說服他們贊助你是不是花了很長時間?他們會不會有疑慮,說畢竟隻是個比較新的架構,甚至可能堅持不到六個月?
當我開始 Patreon 衆籌的時候,Vue 已經顯示出了強勁的生命力。在 2015 年初,Vue 可能還算是一個比較随意的開源項目,但是 Laravel 社群已經開始全面使用 Vue。我覺得如果我不能通過 Vue 賺到一點點錢,這不太可能。
我要特别感謝 Strikingly,一家在上海的創業公司。他們在中國的 JavaScript 和 Ruby 社群非常活躍。他們實際上并沒有使用 Vue,但他們有個基金用來每個月贊助開源項目。他們是第一個連續 6 個月每月 2000 美元的贊助商,在早期階段真的幫了我很多。此外,Laravel 的作者 Taylor Otwell 也贊助了 Vue。他開始的時候是給的 100 美元,然後漲到了 200,有時會高到 500 美元。
你剛剛說之是以能夠得到贊助,是因為 Vue 成長很快。你有沒有做什麼推廣和營銷?或者說就任其自然發展?
我其實沒有在營銷中投錢,也沒有買廣告之類的。主要是寫了一些部落格文章。很多時候就是發發 Twitter。我感覺這就夠了。有時候我還會在 Medium 上寫些文章。
現在你在國際上有很大影響力,我們很想知道 Vue 是怎麼開始國際化的,是什麼吸引了美國以外的開發人員?
中國市場是非常重要和特殊的。我是中國人,我在中文 JavaScript 社群就很活躍。很多人知道 Vue,因為他們認識我。他們将 Vue 文檔全部都翻譯成了中文,讓 Vue 在中國更具有影響力。很多中國開發者看了說「喔唷,這個架構的作者是中國人」他們當然就傾向于使用 Vue 了,我感覺這在早期對 Vue 的幫助是很大的。越來越多的中國公司也開始使用 Vue,像阿裡巴巴,騰訊和百度的團隊。這些都是中國的巨頭公司。當然 React 在中國也很有影響力。
在中國有一個類似于 Quora 的網站叫 知乎,網友在那裡可以提各種問題,我在那裡回答了很多 JavaScript 和 Vue.js 的問題。
對那些在不善于和國際社群交流的公司或開源項目有沒有什麼建議?
我感覺語言障礙可能是最難跨越的。如果你不努力把自己的産品推向中國,那麼沒有人會注意到,除非你和 React 一樣牛。你需要一個可以說中文的人或者說一個中國人來做這件事。
還有一點很有意思,還有很多來其他地區的使用者,像意大利,西班牙,葡萄牙和日本。尤其是日本的開發者非常的積極,他們真的非常認真地翻譯文檔。
寫 Vue 的時候你是否有比較後悔的失誤?
『我必須換個思路徹底重新思考這個問題,但是我認為這是每一個軟體在開發過程中都不可避免的,因為很難第一次嘗試就完美無瑕。』
确實有一些問題。目前為止 Vue 已經從頭寫了兩次了。顯然是因為之前的實作方式有問題不能通過局部的修改或者打更新檔的方式改善,我才會去重寫它。就像每次我看自己六個月之前寫的代碼庫,我就會想,卧槽,這樣都行?
我必須換個思路徹底重新思考這些問題,但是我認為這是每一個軟體在開發過程中都不可避免的,因為很難第一次嘗試就完美無瑕。
寫 Vue 的過程也是我作為開發者不斷成長的過程,因為随着時間的推移,我需要添加新的功能,維護它,修複 bug 并確定整個生态系統的正常發展。作為一個軟體工程師遇到這些問題是很正常的,這隻是一個不斷學習的過程。
寫 Vue 的時候有沒有心情上的不順或者是其它非技術上的障礙?
『沒有哪一個真正的架構可以滿足每一個開發者。更重要的是讓喜歡并使用我的架構的人,能夠繼續保持對這個架構的喜愛。我會專心做我認為最有價值的事情,并且努力去做好,不用擔心别人拿我的架構和别的相比。』
當然有了,畢竟競争壓力也是很大的。當 Vue 還是比較小衆的時候,沒什麼壓力,任何方面的讨論對我來說都很好,因為人們不會對我的架構抱很高的期望。但是,随着 Vue 越來越流行,人們開始把 Vue 與 Angular 或 React 進行比較,他們有時會說,「React 在這方面做的更好,Angular 在那方面做得更好。」
這時就給我帶來很大鴨梨了,和那些巨頭競争壓力顯然很大。特别是現在我全職開發 Vue。Vue 在前端圈的生存能力基本上和我的工作有很大的關系。
但是最近我剛剛看過 Elm 的作者 Evan Czaplicki 的演講,他在演講裡說到了他開發 Elm 時的壓力。因為有用在 React 上的 ClojureScript 界面 Om,還有可以編譯為 JavaScript 的強類型語言 PureScript,他也擔心 Elm 怎麼和那些庫競争。
後來他和 Python 的作者 Guido 交流,Guido 給了他一些建議,說『認真幹自己的就可以了』,他言外之意是 Python 也有這個問題,Python 和許多動态語言,像 Ruby,JavaScript,Perl 這些語言也都有互相競争的領域。結果所有這些語言都是成功的,他們有自己的社群和自己的使用者群,有很多開發者喜歡和使用這些語言。
人們喜歡不同的語言,原因各不相同。對 JavaScript 架構而言也是一樣,人們喜歡不同的架構,原因也各不相同。沒有哪一個真正的架構可以滿足每一個開發者。更重要的是讓喜歡并使用我的架構的人,能夠繼續保持對這個架構的喜愛。我會專心做我認為最有價值的事情,并且努力去做好,不用擔心别人拿我的架構和别的相比。
你認為 Vue.js 的成功給我們帶了什麼?
這個問題很難回答啊,因為 Vue.js 的影響範圍随着時間的推移會不斷增大。我們現在有整個基于 Vue 架構的生态系統,而且我們還在探索 Weex 這樣的東西,可以把 Vue 用在寫原生應用上。
我也非常注重 Vue 的簡單和易用性,因為我堅信技術應該是能讓更多的人可以開發自己想要的東西。
接下來的幾個都是程式設計之外的問題,也很有趣。請問程式設計之外還有沒有其它的興趣?
動漫,我看了很多日本的動漫。不知道你有沒有注意到,Vue 的發行版都是以動漫命名的。從 .09 開始,每個大的發行版的名稱的首字母都按字母表的順序遞增。2.0 是 Ghost in the Shell。F 實際上是為 1.1 保留的。1.0 是 Evangelion。
我也很喜歡卡拉OK。
你最感興趣的前沿技術或趨勢是什麼?
我比較感興趣實用的技術。這可能比較奇怪,因為我對 AR 或 VR 現在還不是很動心。我更想談談和普通開發人員更近的事。像 Guillermo 開發的 Now。 開發人員為開發人員寫工具,開發人員用這些工具的體驗,同樣也是使用者體驗。
在程式設計界有沒有偶像?
那肯定是 TJ Holowaychuck 和 Guillermo Rauch。因為我不是計算機專業的。我基本上通過看網上的資源和書來學習程式設計,還有一個重要的學習方法就是看别人的代碼。我看 TJ 的代碼時,就總是感覺寫得非常優雅。優雅是當時蹦到我腦海中的第一個詞,并且對我的影響很大。TJ 絕對是我的偶像。