Vue 做者尤雨溪:以匠人的态度不断打磨完善 Vue

本文仅用于学习和交流目的。非商业转载请注明做译者、出处,并保留本文的原始连接:http://www.ituring.com.cn/art...前端

访谈对象

尤雨溪,Vue.js 创做者,Vue Technology创始人,致力于Vue的研究开发。react

访谈内容

你为什么选择从事前端方面的工做?web

其实,我本科读的是艺术史,研究生阶段学习Design & Technology,是设计和技术的混合。开始作前端的一个重要缘由是,没有人帮我把设计出来的做品放到网站上给别人欣赏。好比说设计一个网站,可是没人帮我把设计出来的网站作出来。因此我只能本身作,作着作着就发现作网站自己也颇有趣。编程

作网站的过程当中也涉及怎么写出好的代码,怎样把设计的做品实现出来,后来慢慢发现我对前端更感兴趣,也花费了更多的时间。微信

前端须要跟用户打交道,能够说,设计方面的背景其实对你的帮助不少。框架

确定是有必定帮助的。函数式编程

又是什么缘由促使你萌生了开发Vue的想法?函数

在谷歌工做的时候,咱们要作不少界面的原型,要求快速上手,灵活运用。当时用的一些现有框架,好比angular,太笨重了。我的而言,我更倾向于针对个人用力作一个更轻量化的实现,同时也想作一些实验练练手,研究一下angular究竟是如何实现的。因此说,最先Vue是做为一个单纯的实验项目在作。工具

从2013年7开始,它的增加速度好几回都超出了我本身的指望,我就想能不能再用点力推一把。每次再推一把,它又超出个人预期,慢慢地就变今天这样了。 性能

也有很大一部分缘由是,我把Vue看成本身的一个做品,以匠人的态度不断地琢磨完善它。一个版本作出来以后,我会不断地思考打磨,到如今为止我已经重写过两次了。Vue每一次的增加,都会给我更多的动力继续前行。

可是,谷歌主打angular,不会对你有什么限制?

谷歌内部并不会强迫你必定要用什么技术,选择上仍是自由的。当时我所在的团队也是比较特殊,creative lab以实验为主,强调速度。对这样的类型项目来讲,angular会引入不少没必要要的限制。

就像你刚才说的,Vue的代码简约,上手比较快。可是简约跟功能实际上是矛盾的两个方面,顾到了简约,就可能限制功能,增长工具的功能性,代码就不免变得繁冗。怎么样作到这种鱼和熊掌的兼得?

英文里面有一个词叫Pragmatism,就是实用主义。在简洁的同时,Vue也强调使用者实现想作事情的目的。能够说,最先Vue是很是看重这一点的,咱们也增长了不少相似于方便性质的API,好比说过滤器。

在早期设计还不是很成熟的时候,我从angular那边借鉴过来的一些功能并无获得充分地考量。一开始感受应该有做用,就先放了进来。从新迭代的过程当中,我发现它们并无那么好,也不如看起来那么方便。

随着用力的推广,Vue开始用于一些更长期的项目。这种状况下,一些短时间内方便的功能变得难以维护。因此Vue在轻量和功能之间也发生了变化,从一开始的强调速度,简单上手,到后面的注重用户代码的可维护性,避免用户本身掉到本身写出来的陷阱里,一直在不断地转化。最终的目标是找到一个比较良好的平衡点,维持简易上手的良好体验,同时尽量地避免一时的便易影响长期的可维护性。

眼前利益和长远利益同时兼顾。

对,好比说Vue 1.0、2.0每次变动、废弃API的时候,都会有不少讨论。不少时候,一些用户表示说,这么好用的东西,为何要拿掉它?拿掉它的缘由,实际上是,用户用它们写出了一些很匪夷所思的代码。我看了以后就以为,若是这个东西会致使你们写出这样的代码,可能仍是拿掉它比较好一些。

国外的状况不太了解,可是国内有一些公司,好比说美团、滴滴、饿了么等这些互联网公司,都开始用Vue开发项目,您以为国外是怎么样一个状况?

国外的话,Vue的增加趋势分两块。不少中小型的企业或者是创业公司会使用Vue开发项目。对他们来讲,生产力是一个重要的衡量指标,强调周转效率,快速投入,快速结束项目。同时,培训新的开发者加入新项目,达到快速上手的水平也是一个很明显的需求,在这样的需求下,他们对Vue的采用度会很是高。

另外有一些大公司,像日本的Line还有任天堂,英国的一家大型百货连锁公司Sainsburry等也在大规模地使用Vue开发项目。有意思的是,美国主流的大公司,仍是比较倾向于用他们本身的硅谷产品。可能源于产业文化的影响,毕竟Google和Facebook的牌子在美国实在是太响了。

Vue的成功给你的生活和技术上带来哪些改变?

最大的影响确定是,我能够全职开发Vue,也有了时间作2.0的重构。2.0实际上是打乱原有的结构,从头开始,从新构建,底层作了很大的改动。可以全职开发Vue,一方面源于网上社区的捐助,一方面来自一些其余的来源,收入上维持跟以前工做时的同样,但自由度的提升让我能够掌控本身的时间,作本身最想作的事情。

在Meteor工做的时候,有很长一段时间我都很纠结,由于我发现我其实更想作Vue,可是又不得不作公司的事情。虽然也跟公司谈过,却没有找出一个特别靠谱的结合方案,最后我仍是决定本身出来干。

有些技术人员被业务忙得晕头转向,而我的能力得不到提升,尤为是技术方面。他们就很苦恼,不知道是屈从于业务,仍是发展本身的技能?

我以为本身很幸运,能够作本身特别想作的事情。可是,我但愿技术人员不要盲目效仿。Vue是一个特例,不少机遇才让Vue发展到今天的样子。若是没有适当的渠道或者必定的经济支撑的话,我也没有办法全职开发Vue。

最近即将上线的2.0,相对于1.0,在功能和性能上有哪些改进?

整体来讲,性能方面提高了将近一倍。咱们在技术细节上作了很大改动,整个渲染底层彻底换掉了,Virtual DOM的采用打开了不少新的可能,好比说服务端渲染,手动Render Function,以Vue做为运行时结合Weex渲染到原生的客户端。2.0一方面大幅度提高了性能,一方面拓展了更多使用Vue的场景。

另外,2.0在API上也作了更进一步的精简。2.0删掉的API比新增的API要多。以前也说了,Vue在简洁跟多功能之间不断寻求平衡,因此1.0里面的很多“鸡肋”功能——既能够用这个方式实现,又能够用那个方式实现,咱们狠狠心就拿掉了。

2016年State of JavaScript的调查显示,Vue的受欢迎程度仅次于React。可否跟你们讲讲React和Vue在定位和内部实现方式上,有哪些异同点?

虽然二者在定位上有一些交集,但差别也是很明显的。Vue的API跟传统web开发者熟悉的模板契合度更高,好比Vue的单文件组件是以模板+JavaScript+CSS的组合模式呈现,它跟web现有的HTML、JavaScript、CSS可以更好地配合。

从使用习惯和思惟模式上考虑,对于一个没有任何Vue和React基础的web开发者来讲, Vue会更友好,更符合他的思惟模式。React对于拥有函数式编程背景的开发者以及一些并非以web为主要开发平台的开发人员而言,React更容易接受。这并不意味着他们不能接受Vue,Vue和React之间的差别对他们来讲就没有web开发者那么明显。能够说,Vue更加注重web开发者的习惯。

实现上,Vue跟React的最大区别在于数据的reactivity,就是反应式系统上。Vue提供反应式的数据,当数据改动时,界面就会自动更新,而React里面须要调用方法SetState。我把二者分别称为Push-based和Pull-based。所谓Push-based就是说,改动数据以后,数据自己会把这个改动推送出去,告知渲染系统自动进行渲染。在React里面,它是一个Pull的形式,用户要给系统一个明确的信号说明如今须要从新渲染了,这个系统才会从新渲染。二者并无绝对的优劣之分,更多的也是思惟模式和开发习惯的不一样。

二者不是彻底互斥的,好比说在React里面,你也能够用一些第三方的库像MobX实现Push-based的系统,同时你也能够在Vue2.0里面,经过一些手段,好比把数据freeze起来,让数据再也不具备反应式特色,或者经过手动调用组件更新的方法来作一个pull-based系统。因此二者并无一个绝对的界限,只是默认的倾向性不一样而已。

对于通常的技术人员来说,掌握某项技术已是不小的挑战,本身若是能够开发出来一个新工具应该说是一种瞻望的高度。你会给他们一些什么建议用于开发创造新的工具?

个人建议是永远要保持好奇心。不少人可能忙于应付业务,没有在业余时间作任未尝试探索,也就只能停留在这样的一个层面。另外,可能有些东西也是不能强求的,好比说我作Vue的时候,不少时候来自本身的兴趣。我并无强迫本身必定要怎么样,是自发的一种渴望,我想去把Vue作得更好,而后就去研究了。

兴趣也是一个很重要的因素,就是说,若是有动力想要去作一件事情,你就尽量地把兴趣稍微拔高一点,定一个更高一点的目标,看看能不能把兴趣推动一步。技术人员确定会有本身感兴趣的技术方向,大部分在某个技术领域作出必定成就的人,可能都少不了浓厚的兴趣驱动。没有兴趣做为原动力的话,很难长久保持一种持续学习,持续研究的状态。我也不知道这种兴趣能不能后天培养,可是多探索、多尝试,说不定哪天你就发现了新事物。


——更多访谈

更多精彩,加入图灵访谈微信!

相关文章
相关标签/搜索