Vue.js 创建者 Evan You 参与 WordPress JavaScript 框架讨论
已发表: 2017-06-06
上周,WordPress 核心贡献者将他们对新 JavaScript 框架的考虑范围缩小到了 React 和 Vue。 由于核心团队对使用 React 有更多的集体知识,他们已经接触到在 WordPress 上下文中使用其他框架的不同经验的开发人员。
贡献者对 Vue 的主要担忧之一是项目的寿命。 我问 Vue 的创建者 Evan You 是否可以就这个话题发表意见,让 WordPress 贡献者更好地了解这个项目,特别是关于他努力培养更多的维护者来帮助分担维护工作的负担。
“我认为查看跟踪记录很重要——Vue 已经存在了将近 4 年,所有工作都在 GitHub 上公开完成,因此任何人都可以去查看维护历史记录,”你说。 “虽然它主要是由我开发的,但目前的维护更多是由社区驱动的。 我们有活跃的核心团队成员对大部分问题进行分类,并且社区 PR 修复的问题比例越来越大。 所以——是的,我一直在努力培养更多的维护者,并将继续这样做。”
您目前每月从 Patreon 的经常性捐款中获得 1 万美元,这些捐款资助了他在 Vue 上的全职工作。 在此之前,他还曾在 Google 和 Meteor 工作过。 在 Google 工作期间,你从事的一些项目使用了 Angular,他说他发现对于当时的用例来说太重了。 他将 Vue.js 构建为对他喜欢的 Angular 概念的更轻量级的实现。
你最近还说他从 React 社区学到了很多东西,这影响了他在 Vue 2 中的一些技术决策。
我从 React 社区学到了很多东西——包括代码和人。 我希望每个人都能像@dan_abramov 一样。 和平。
- Evan You (@youyuxi) 2017 年 5 月 29 日
“首先,Vue 2 在底层使用了相同的基于 Virtual DOM 的渲染模型,这是由 React 率先开创的,”You 说。 “引入虚拟 DOM 让 Vue 在保持可访问性的同时展示了 vdom 组合的强大功能。
“当探索新的问题领域时,React 社区也非常活跃——例如状态管理和 CSS 管理。 当我为 Vue 实施官方解决方案时,有许多相互竞争的解决方案和很多灵感。”
Evan You 解决了 WordPress 核心贡献者对 Vue.js 的误解
你说他一直在关注 WordPress 贡献者关于 React 与 Vue 的讨论,但不会就哪个项目更好的选择提供意见。
“我的回答显然是有偏见的,老实说,我不是 WP 核心团队的立场,所以我没有足够的视角来做出选择,”你说。 “但是,我可以就正在讨论的一些问题提供反馈,希望能帮助他们做出更明智的决定。”
您在最近的 Javascript 会议记录上发表了评论,并澄清了对 Vue.js 的一些误解。 您谈到了“拥抱 JavaScript 这种语言”这一点,因为一些贡献者认为 Vue 的模板语言掩盖了底层的 JavaScript。

“我认为‘拥抱 JavaScript 这种语言’是我们在 Vue 中看不到的另一个 React 原语,”Andrew Duthie 在上次会议上说。
您的回复将 Vue 将模板用作“HTML 之上的视图表示的语法糖”与他认为在 JSX 的情况下作为 JavaScript 之上的视图表示的类似用法进行了比较:
UI 的日益丰富并不需要将所有内容都放在 JavaScript 中。 另一方面,仅仅因为 Vue 默认使用模板并不意味着它允许人们在不正确学习 JavaScript 的情况下也能过得去。
Vue 的模板在底层被编译成 JavaScript 渲染函数,它们实际上更接近于 JavaScript,而不是传统的字符串模板。 它只是底层虚拟 DOM 表示之上的一层语法糖。 将 JSX 视为 JS 之上视图表示的语法糖; Vue 模板是 HTML 之上视图表示的语法糖。
JSX/Raw JS 在需要直接操作虚拟 DOM 节点时确实提供了更大的灵活性,这就是为什么 Vue 也支持渲染功能。 但这并不是将两种相反的范式放在同一个帐篷下——它只是允许用户跳过语法糖层以获得更多控制。
您说在渲染函数之上进行模板化的想法是提供“更好的可访问性”,这是许多其他 WordPress 采用 Vue 的支持者所共有的问题。
“对 HTML 更熟悉、用例更简单的用户可以使用该模板,而已经熟悉 JSX/render 功能的用户可以充分利用 JS 的强大功能,”你说。 “这非常适合 WP 核心的使用:关心可接近性的社区用户更容易上手,而核心团队可以访问 JSX/render 功能以用于高级用例。”
您还通过提供有关 Vue 开发过程的更多信息解决了长寿问题。 他确认当前的代码库主要由他一个人开发,但维护工作分布在一个核心团队中,成员遍布世界各地。
“其他贡献者的提交计数较低,因为他们的贡献都是以 PR 的形式提交的,我们使用 GitHub 上的 'Squash and commit' 功能,因此每个 PR 只为贡献者带来一次提交,”你说。 “仅在核心存储库中,我们就合并了近 500 个 PR,整个组织中还有更多。 vuejs 组织下的其他存储库,例如 vuex、vue-router、vuejs.org 也主要由专门的团队成员维护。”
您还澄清了稳定性和未来兼容性的问题,因为 WordPress 贡献者对 Vue 2.0 中模板语言的重大变化提出了担忧。
“这需要澄清一下:Vue 版本控制严格遵循 semver,”你说。 “在 1.0 之后,唯一一次破坏性的 API 更改是 2.0 版本。 模板语法是 API 的一部分,因此它不会[中断],并且在主要版本更新之间,我们承诺 100% API 向后兼容。 我们非常重视稳定性,我们的社区和生产用户也是如此,包括 GitLab、Vice 和一些中国最大的互联网公司。”
由于许多 WordPress 核心贡献者多年来一直在 React 之上进行开发,You 的意见提供了对 Vue 的更详细、更深入的了解,这是贡献者在多轮反馈中一直要求的。 讨论将在接下来的几周内继续进行,贡献者计划将该主题包括在 WordCamp Europe 的贡献者峰会上。
