大神面对面:Vue.js 作者尤雨溪专访

2 年前

今天,外刊君有幸邀请到了我们的尤大,尤神,也就是目前非常流行的前端框架 Vue.js 的作者,尤雨溪,接受我们的专访。

5月20日,全球首届 Vue Conf 大会在北京成功举行。大家一定有很多问题想问尤大,外刊君自己想了一些问题,也从社区中收集了一些。我们来看看尤大是怎么回答的,与大神做一次近距离的接触。

外:国内第一届 Vue Conf 于5月20日在北京成功举办,作为开场演讲嘉宾,是否可以谈谈您的参会感受?

尤:在现场可以很直接地感受到社区的热情,当然非常高兴。对于 Vue 在国内能发展到今天这样的地步,其实也有些受宠若惊。第一次办大会,难免还是有些地方做的不够完善,以后再办会对听众的需求和讲题的选择下更大的功夫。这里特别要感谢裕波,因为大会的具体事宜都是由他操办的,非常辛苦。

外:最新版的 Vue 里会加什么新的功能?

尤:对新版本比较关注的同学应该会发现最近几个 minor 版本对于服务端渲染 (SSR) 的功能添加比较多。主要原因是 SSR 是我觉得目前还比较有可挖掘空间的一块。2.3 对开发模式做了一个沉淀,2.4 进一步优化性能,并且彻底解决了 SSR 和 code split 的配合问题。另外 2.4 会有 TypeScript 团队合作贡献的更强大的类型声明。在这之后 Vue 核心会进入一段相对稳定的时间,当然会继续有小的 API 改进,但精力会放到生态圈的其他部分中。首先是团队和社区已经开始开发一个官方的单元测试辅助工具,然后 vue-cli 将会进行一次比较大的重构,让上手和开发体验更加顺滑。

外:Vue 这个开源项目是怎么维护的,有多少人一起维护?

尤:Vue 有一个所谓的『核心团队』,但组织上是比较松散的,没有强制的任务分配。一般如果社区成员经常发送 PR 或是参与维护的话,我会邀请 ta 加入 Github 上的 vuejs orgnization 和我们的团队 Slack。常驻比较活跃的大概有十来个人,这些成员会帮我分担许多日常维护的工作,比如 review PR,对 issue 进行定位和修复等等。当然也有来自团队外的开源贡献者的 PR。

外:Vue 会考虑支持 TypeScript 或者用 TS 实现么?

尤:TypeScript 其实 2.0 已经支持很久了,vue, vue-router 和 vuex 都有官方的类型声明。之前的一个问题是由于 Vue 的默认 API 不是基于 class 的,所以类型推断比较困难,用户得用类似 vue-class-component 这样的库去进行一层封装才能获得比较良好的类型推导。2.4 的新类型声明基于 TS 2.3 的 contextual typing 功能,可以让 Vue 的默认 API 也获得良好的类型推导,会进一步改善 Vue 和 TS 的整合。结合 VSCode 的 vetur 插件,使用 *.vue 文件时的开发体验也会好很多。另外新的 vue-cli 也打算包含官方的 TS 脚手架。

至于 Vue 的内部实现,短期内不会考虑改用 TS,因为现在 Flow 用着也没有什么大问题,切换到 TS 有较大的成本但没有太明显的好处。如果要开新坑的话可能还会考虑一下。

外:可以聊聊 Vue 的短期目标和长期目标吗?

尤:其实核心目标永远只有一个,那就是为前端开发者提供一套良好的工具,让更多的开发者可以多快好省地开发前端应用。短期目标都是由这个核心目标衍生出来的,简言之就是不停地去改进整个生态里还不完善或是变得落后的部分。

外:有没有想过自己主导开发一个 “Weex”?

尤:并没有。我对于 Android/iOS 原生开发并不像我对前端这样熟悉,而且一个像 Weex 或是 ReactNative 这样的项目的工作量非常庞大,需要有相当数量的专职开发投入才行,更何况我还要继续兼顾 Vue 本身的维护和开发,即使想也做不了。

外:React 有自己的 React Native、React VR 等等,Vue 的生态链是什么样的,Vue 的生态将会如何发展?

尤:Vue 作为独立项目,会更专注于 web 端。当然这不妨碍我们提供足够的灵活度来让 Vue 和社区或是外部生态进行整合。比如 Weex 和 Vue 能够整合就是因为 Vue 的核心逻辑和 DOM 是解耦的。VR 可以用 Vue 结合 AFrame 来开发,社区里也有 blessed-vue (用 Vue 写命令行图形界面),Vue + NativeScript 这样的项目。

外:Vue.js 和 React 都是目前社区里最流行的框架,React 很强大,也有自己完善的生态圈,是什么原因或者动力支持您持续开发 Vue.js?

尤:一年多以前我也问过自己这样的问题,但让我坚持开发 Vue 的原因其实很简单:因为 Vue 的用户一直在增长,这说明 Vue 确实契合了相当一部分开发者的需求,那么这个事情就是有价值的。前端是一个产品形态差异很大的平台,所以不同的场景需求会有很大区别。其次,我个人觉得,开发者群体是很多样化的,出于学习背景、习惯、思维模式的差异,不同的开发者会偏好不同的语言、框架和工具。这些区别是没有办法抹平的,所以与其去浪费时间争论哪个框架更好,不如让不同场景、不同偏好的群体都变得更有效率,这样开发者们作为一个整体为世界创造的实际价值就更多。从这个角度来看,多种方案的并存是必然的,甚至是有益的。另外,一个领域如果没有竞争了,那么这个领域也就走到头了。

外:如果 Vue.js 发布 3.0,会是什么样子?

尤:版本号其实是个比较容易误会的东西。从 semver (语义化版本号)的角度看,3.0 意味着 breaking change,但未必意味着有什么翻天覆地的改动。考虑到兼容性、稳定性、升级的可行性,真正的 3.0 在 API 上不会有什么太大的变化,最有可能的就是内部的响应式机制用 Proxy 重写带来一些微小的 breaking change,同时不再支持 IE9~11。大部分情况下应该和 2.x 会无缝兼容。

如果要大改 API 的话,可能会把 API 设计得稍稍函数式一些,对 this 的依赖少一些吧。但这个其实通过一些上层的封装就可以做到了。

外:听说您已经成为独立开发者(开公司),现在怎么平衡开源和生活?

尤:公司只是出于税务/签证什么的需求注册了一下而已,其实就是独立开发者。现在 Patreon 的赞助以及一些其他渠道的被动收入足够维持正常的收入水平,所以跟原来的区别就是开源变成了工作,工作和生活的平衡反而好了很多。以前上班之余做开源,占用的是家庭时间,现在不需要了,可以多陪老婆带孩子。

外:您觉得前端行业,或者作为一个前端工程师有前途么?

尤:我对前端的理解是这样的:依托于 Web 平台的 GUI 开发。这个行业的『前途』很显然跟 Web 这个平台的走势是密切相关的,虽然 Web 这几年受到不少来自移动端的挑战,但整体来说,我个人认为还是有比较稳定的生存空间。其次,前端这块有很多重复性质的体力活,如果只是忙于应付这样的工作,个人的成长就会比较受限。想要有前途还是得思考如何更有效率地创造价值。最后,前端开发里面也有很多可以跨越平台的技能,比如 GUI 开发的很多思想、模式、前端运维中的工程化、自动化等等,这些即使你以后不做前端,也依然会是有价值的东西 —— 本质上,有些东西是所有的『工程师』都需要的,对这些技能的沉淀或许可以帮助你缓解那种『这个方向有没有前途』的焦虑。

外:2017 年 JavaScript 中国开发者大会 于7月15 - 16日在上海召开,您作为去年的讲师,这次还会作为嘉宾给我们带来新的分享么?

尤:会的。这两年随着前端的工程化,编译几乎成为了一道必不可少的步骤,这同时也带来了很多优化的可能性。这次会结合社区的发展谈谈前端的编译时优化。

感谢尤大百忙之中接受我们的采访,我们对尤大的专访就到这里,是不是也回答了一些你的疑问呢?

看着 Vue.js 一路走来,不断积累与沉淀,取得如今的成就,由衷地为尤大感到高兴。感谢尤大的努力和付出,真心祝愿 Vue.js,Vue 社区越来越好!

0
推荐阅读