原文连接: 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 绝对是个人偶像。