原文連接: medium.freecodecamp.com前端
imagevue
我採訪了尤雨溪,著名漸進式 JavaScript 框架 vuejs.org 的創造者。尤雨溪現經過 Patreon 平臺衆籌全職開發 Vue 的資金。他還曾在 Google 和 Meteor 工做過。react
這篇文章 最初 發佈在 Between the Wires,這是一個採訪系列,專門採訪那些爲程序員開發產品的人。laravel
好的,我出生在中國,個人家鄉叫無錫,一箇中等規模的城市,離上海很近。而後我在上海唸了三年高中,所以常常兩地來回跑。高中畢業後我去了美國念大學。我感受我接觸電腦比較早,可是我當時並無真正開始編程。我對遊戲更感興趣,我在高中時,就常常玩 Flash,由於我很是喜歡製做互動的效果來說述故事。git
1996 年尤雨溪和他的第一臺電腦程序員
「JavaScript 很吸引我,由於它可以快速構建一些東西並分享給別人。把它放在網上,經過一個網址,任何有瀏覽器的人均可以看到。這就是吸引我開始 Web 開發和 JavaScript 編程的緣由。」angularjs
當我在美國上大學的時候,老實說,我不知道我想要作什麼,並且個人專業是室內藝術和藝術史。當我快畢業時,我感受很難找到和專業相關的工做。github
我盤算着或許我能夠去一個適合個人碩士課程,學習更多的技能。我去了 Parsons,讀了一個美術設計和技術的碩士。這是一個很是好的專業,由於每一個人都是既學習設計也學習編程。他們會教一些好比 openFrameworks,處理,動畫算法之類的課程,並且你也必須寫應用程序和交互界面。算法
Parsons 沒有真正涉及不少的 JavaScript,可是 JavaScript 很吸引我,由於它可以快速構建一些東西並分享給別人。把它放在網上,經過一個網址,任何有瀏覽器的人均可以看到。這就是吸引我開始 Web 開發和 JavaScript 編程的緣由。chrome
當時 Chrome experiments 這個網站剛剛發佈,我深深的被震撼了。我當即開始學習 JavaScript,並開始開發相似 Chrome experiments 的項目。我把這些項目放在個人簡歷上,而後被 Google 創意實驗室的招聘人員注意到了。我加入了Five program。每一年創意實驗室會招五名應屆畢業生,組成一個小組,一我的寫文案,一我的搞技術,一我的作平面設計,一我的統籌安排和一個打雜的。
我在 Google 的工做須要在瀏覽器上進行大量原型設計,因而我想要儘快得到有形的東西。當時有些項目使用了 Angular。Angular 提供了一些用數據綁定和數據驅動來處理 DOM 的方法,因此你沒必要本身碰 DOM。它也有一些反作用,就是按照它規定的方式來構建代碼。對於當時的場景而言實在是過重了。
我想,我能夠只把我喜歡的部分從 Angular 中提出來,創建一個很是輕巧的庫,不須要那些額外的邏輯。我也很好奇 Angular 的源碼究竟是怎麼設計的。我最開始只是想着手提取 Angular 裏面很小的功能,如聲明式數據綁定。Vue 大概就是這麼開始的。
用過一段時間以後,我感受我作的東西還有點前途,由於我本身就很喜歡用。因而我花了更多的時間把它封裝好,取了一個名字叫作 Vue.js,我記得那時仍是 2013 年。後來我想『我花了這麼多時間,不能只有我一我的用,我應該和別人分享,他們也會感受到 Vue 的好處,他們也會喜歡上 Vue 的。』
2014 年 2 月,我第一次將它做爲實際的項目發佈在 Github 上,並把連接發送到了 Hacker News 上,它就被頂到了首頁,而後它在首頁待了好幾個小時。後來,我寫了一篇文章,分享了 Vue 第一週的使用數據以及個人感覺。
那是我第一次看見這麼多人在 Github 上爲一個項目打星星。我當時一個星期收穫了好幾百個星星,整我的都激動壞了。
我認爲在全部的框架中,Vue 可能與 React 最像,但從更普遍的意義上說,在全部框架中,我本身創造了一個概念叫漸進的框架。由於 Vue 的核心組成只是數據綁定和組件,和 React 差很少。它只是解決了一小部分很重要的痛點。與 React 相比,Vue 可能更簡單易用,只知道一些 HTML,JavaScript 和 CSS 知識的人均可以很快入門 Vue。
在框架層面上,我是用一個很是精簡和儘量小的的內核來構建的。可是當構建更復雜的應用的時候,有不少其餘的問題須要解決。好比說路由,或者說怎麼處理跨組件通訊,怎麼樣在大型應用程序中共享狀態,這樣的話咱們就還須要更多的構建工具來模塊化咱們的代碼庫。怎麼樣來組織樣式和各類各樣的靜態資源?像 Ember 或 Angular 這些很是完整的框架,它們就想解決全部可能遇到的這些問題,並把這些功能全都集成到框架中。
這就叫有得必有失吧。對用戶使用狀況的假設越多,框架最終的靈活性就越低。或者像 React 這樣把不少問題都留給社區。React 社區是很是很是活躍的,常常有不少牛 X 的想法跳出來,固然也有很多不完美的想法。Vue 就是比較折中,仍然保持一個很小的核心,只提供一些最重要的功能。可是咱們仍是在逐漸提供一些更多的獨立解決方案,好比說路由,狀態管理,構建工具鏈和 CLI。它們都是官方維護的,有很好的文檔,設計的也很是好,能夠各類搭配使用,但重點是不須要的時候就能夠不用。我認爲這多是 Vue 做爲一個框架最大的特點。
「我爲開發者們創造了價值,因此從理論上說,若是我能以某種方式獲得接近於這些價值的錢,那麼我應該可以養活本身。」
我爲開發者們創造了價值,因此從理論上說,若是我能以某種方式獲得接近於這些價值的錢,那麼我應該可以養活本身。固然這也是比較複雜的事情,由於畢竟 JavaScript 生態大可能是開源的,沒有一個好的方式讓開發者們支付和購買本身正在使用的框架。
Vue 的用戶羣很是有活力。許多 Vue 用戶來自 Laravel 社區,他們很是熱情真誠,人很好。我就感受衆籌多是個不錯的想法。在 Patreon 上我只是想試試這個想法。實際上,React-Hot-Loader 和 Redux 的做者 Dan Abramov 也在 Patreon 上搞過一個小的衆籌,勾起了個人興趣。我粗略地估計了一下有多少人在使用 Vue。假若有一萬我的在用,其中百分之一的人願意每個月給我 10 美圓就差很少了。
尤雨溪在 Patreon 的衆籌
在二月份,我就在 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 美圓。
我其實沒有在營銷中投錢,也沒有買廣告之類的。主要是寫了一些博客文章。不少時候就是發發 Twitter。我感受這就夠了。有時候我還會在 Medium 上寫些文章。
2015 年在中國的 JSConf 上
中國市場是很是重要和特殊的。我是中國人,我在中文 JavaScript 社區就很活躍。不少人知道 Vue,由於他們認識我。他們將 Vue 文檔所有都翻譯成了中文,讓 Vue 在中國更具備影響力。不少中國開發者看了說「喔唷,這個框架的做者是中國人」他們固然就傾向於使用 Vue 了,我感受這在早期對 Vue 的幫助是很大的。愈來愈多的中國公司也開始使用 Vue,像阿里巴巴,騰訊和百度的團隊。這些都是中國的巨頭公司。固然 React 在中國也頗有影響力。
在中國有一個相似於 Quora 的網站叫 知乎,網友在那裏能夠提各類問題,我在那裏回答了不少 JavaScript 和 Vue.js 的問題。
我感受語言障礙多是最難跨越的。若是你不努力把本身的產品推向中國,那麼沒有人會注意到,除非你和 React 同樣牛。你須要一個能夠說中文的人或者說一箇中國人來作這件事。
還有一點頗有意思,還有不少來其餘地區的用戶,像意大利,西班牙,葡萄牙和日本。尤爲是日本的開發者很是的積極,他們真的很是認真地翻譯文檔。
『我必須換個思路完全從新思考這個問題,可是我認爲這是每個軟件在開發過程當中都不可避免的,由於很難第一次嘗試就完美無瑕。』
確實有一些問題。目前爲止 Vue 已經從頭寫了兩次了。顯然是由於以前的實現方式有問題不能經過局部的修改或者打補丁的方式改善,我纔會去重寫它。就像每次我看本身六個月以前寫的代碼庫,我就會想,臥槽,這樣都行?
我必須換個思路完全從新思考這些問題,可是我認爲這是每個軟件在開發過程當中都不可避免的,由於很難第一次嘗試就完美無瑕。
寫 Vue 的過程也是我做爲開發者不斷成長的過程,由於隨着時間的推移,我須要添加新的功能,維護它,修復 bug 並確保整個生態系統的正常發展。做爲一個軟件工程師遇到這些問題是很正常的,這只是一個不斷學習的過程。
『沒有哪個真正的框架能夠知足每個開發者。更重要的是讓喜歡並使用個人框架的人,可以繼續保持對這個框架的喜好。我會專心作我認爲最有價值的事情,而且努力去作好,不用擔憂別人拿個人框架和別的相比。』
固然有了,畢竟競爭壓力也是很大的。當 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 框架的生態系統,並且咱們還在探索 Weex 這樣的東西,能夠把 Vue 用在寫原生應用上。
我也很是注重 Vue 的簡單和易用性,由於我堅信技術應該是能讓更多的人能夠開發本身想要的東西。
動漫,我看了不少日本的動漫。不知道你有沒有注意到,Vue 的發行版都是以動漫命名的。從 .09 開始,每一個大的發行版的名稱的首字母都按字母表的順序遞增。2.0 是 Ghost in the Shell。F 其實是爲 1.1 保留的。1.0 是 Evangelion。
image
image
我也很喜歡卡拉OK。
我比較感興趣實用的技術。這可能比較奇怪,由於我對 AR 或 VR 如今還不是很動心。我更想談談和普通開發人員更近的事。像 Guillermo 開發的 Now。 開發人員爲開發人員寫工具,開發人員用這些工具的體驗,一樣也是用戶體驗。
那確定是 TJ Holowaychuck 和 Guillermo Rauch。由於我不是計算機專業的。我基本上經過看網上的資源和書來學習編程,還有一個重要的學習方法就是看別人的代碼。我看 TJ 的代碼時,就老是感受寫得很是優雅。優雅是當時蹦到我腦海中的第一個詞,而且對個人影響很大。TJ 絕對是個人偶像。