尤雨溪:关于 Vue3 和生活,想和前端们聊聊这些

简介: Evan You 是一名独立软件开发者,也是开源 JavaScript 框架 Vue.js 的创始人。我们借着这个宝贵的机会和 Evan 聊了聊 Vue3 的发布,了解了他对 no-backend、fullstack、Vue.js 案例以及技术创造者的「工作与生活平衡」问题的看法。注:这是一家企业软件开发商 Evrone 和尤雨溪的一次访谈。

介绍


Evan You 是一名独立软件开发者,也是开源 JavaScript 框架 Vue.js 的创始人。

我们借着这个宝贵的机会和 Evan 聊了聊 Vue3 的发布,了解了他对 no-backend、fullstack、Vue.js 案例以及技术创造者的「工作与生活平衡」问题的看法。

注:这是一家企业软件开发商 Evrone 和尤雨溪的一次访谈。


访谈


嗨,Evan,欢迎你!用这个问题开始我们的采访吧。

你的由 patreon 提供资助的全职工作比较特殊。你是怎样平衡你的工作与生活,避免倦怠?

虽然我是在家工作的独立开发者,但我每天还是努力去遵循一个固定的时间表。

我可爱的孩子们在这方面帮了我很多,我需要在非工作时间去陪伴家人。

另外很重要的是,在我感觉需要的时候,我就会花几周时间去度假。如果我在公司工作的话,这不太可能实现。

真棒!Vue3 发布之后你会休息一下吗?或者说,你们已经有了下一个版本的 Vite 计划吗?

我这边积压了很多工作。

对于 Vite 来说,目前的目标就是让它更稳定 —— 这是个新系统,大家一直想让它顺利运行在它发布之初未曾设想的一些场景里。

所以给它点时间,看看会怎样进化吧。

关于 Vue 3.1 我也有了一些想法,但我需要休息一会,给自己充充电很重要!

你在大学的时候主修艺术史专业,后来作为创意技术工程师加入 Google Creative Lab。你在开发 Vue 的时候,有因为数学、算法、数据结构方面的欠缺而遇到问题吗?

说实话,真的不多 —— 个人认为 Vue 或者其他前端框架,大部分时候都不是数学/算法密集的领域(比如和数据库对比)。

而且我一直不认为我在算法和数据结构上面很强,在那些方面做的好肯定会有帮助,但是对于开发一个流行框架来说,做好如下几个方面更有帮助:

  • 懂你的用户需要什么
  • 设计合理的 APIs
  • 建立开源社区
  • 长期维护的承诺

我不认为做一个“软件作者”和“写出无聊但是易懂的代码”有什么冲突。说实话后者是需要一定经验的(只要不是非常低效率的那种)!

不要因为没受过严格的 CS 训练,就觉得你写的软件不合格,不过我也不认为你应该忽视它们。

我个人是以务实的态度去写代码的,先用很蠢的方式实现,这也帮助我明白需要去学什么,才能做的更好。

棒棒哒。像 Nuxt.js 和 JAMstack 这些技术,都试着让开发者专注于应用的前端部分,用最小化/JS/BaaS 后端,你怎么看待这些 no-backend 或者说 fullstack 的方法?

我认为这更像是我认为这更像是产品驱动技术的应用。

开发人员喜欢这样的技术栈,是因为正好适合他们正在构建的产品类型:

相对简单的后端逻辑,更多地关注前端交互。

这并不是银弹,但非常适合某类特定的应用。

Vue 经历了很多次重写,如果你能穿越回过去,给开发者一些宝贵的意见的话,会是什么?

要注意如何更好的分离和解耦独立模块

在过去的几年里,显而易见的是 JavaScript 和 TypeScript 并行发展。

你觉得未来会是怎样的,是 JavaScript 中加入类型系统,还是 TypeScript 取代 JavaScript,或是其他的?

我认为给 JS 本身添加类型希望渺茫 —— 我个人觉得不太可能,由委员会来设计一个类型系统(从 TC39 的运作方式来看)是……相当不切实际的。

TypeScript 不会替代 JS 因为它的设计初衷就是JS 的超集

从个人的角度来讲,在可预见的未来中,JS 和 TS(带有类型的超集)并行发展是最实际的前进方式。

Vue 的用户基础已经达到 100 万以上的开发者,你认为评估用户使用情况的最好方式是什么?Stack Overflow 上的问题,Github stars 数量或者其他的公共访问指标?

但也有很多公司是在独立网络里办公,他们“只是使用技术”,从来不问任何问题。

我们如何在统计技术流行趋势的时候算上他们呢?

对于开源软件来说,这本质上是很难的。

用户没有义务去报告使用情况,作为作者,很难有可靠的方法去跟踪使用情况。特别是在应用程序不是面向公众的情况下。

所以我认为 Vue Devtools 拓展的用户数,是目前来说最靠谱的统计使用人数的方式,因为他考虑了所有的用户。

在 Vue3 中有很多 tree-shaking 的工作。为什么你认为 tree-shaking 花了这么长时间在普及到现代框架中?主要的困难在哪里?

tree-shaking 依赖于用特定的结构去设计源码 —— 意味着最好你的代码(和 API 设计)从第一天开始就以支持 tree-shaking 的方式书写。

这其实非常难做到,tree-shaking 友好意味着你需要做一些 API 的破坏性变动,或者大重构。(也带来大风险)

Vue3 的 Function-based Component API 提案受到了来自社区的巨大阻力。

主要的阻力其实来源于用户担心我们会弃用 Vue 2.x 的 API,其实不需要担心这个。

作为作者和开发者,我们在日常工作中通常都会和一些热情的早期用户沟通。

比起普通用户来说,他们自然是对新想法更兴奋的,这会让我们误判向后兼容的重要性,用户不喜欢正在用的东西被拿走。

重点在于,你要明白你的用户想要什么 —— 这其实不是很容易,你很难去得到这些信息,但无论如何,你都要愿意倾听这些。

Vue 的用户案例涵盖了小型企业到中型机构和数十亿美元的上市公司。

Louis Vuitton 和 NASA 都在用 Vue。

有没有什么用 Vue 编写复杂的现实世界的前端的示例推荐给用户?

问题在于大部分“复杂、现实世界”的前端项目都不是开源的。

我推荐去看 Vue Devtools 和 Vue CLI UI 的源码(译者注:划重点 ✨)。

这两个都是用 Vue 写的复杂界面,尽管他们不是典型的面向消费者的 Web Apps。


结论


我们和 Even 聊得很开心,也和他学到了很多生活和编写代码的方式。

在 Evrone,我们经常用 Vue.js 来创造一些独特的、满足客户需求的定制化解决方案。

我们真的很开心能有机会和框架的作者学习,这加强了我们的专业知识,也让我们了解了更多创造新产品的工具。

如果你有让项目从 Vue.js 中受益的想法,欢迎联系我们,很乐意提供帮助。

用户不喜欢正在用的东西被拿走。重点在于,你要明白你的用户想要什么 —— 这其实不是很容易,你很难去得到这些信息,但无论如何,你都要愿意倾听这些。

—— Evan You, Creator of Vue.js

原文地址:https://evrone.com/evan-you-interview

相关文章
|
2月前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
170 2
|
2月前
|
JavaScript 前端开发 API
Vue.js:现代前端开发的强大框架
【10月更文挑战第11天】Vue.js:现代前端开发的强大框架
79 41
|
1月前
|
资源调度 前端开发 JavaScript
vite3+vue3 实现前端部署加密混淆 javascript-obfuscator
【11月更文挑战第10天】本文介绍了在 Vite 3 + Vue 3 项目中使用 `javascript-obfuscator` 实现前端代码加密混淆的详细步骤,包括安装依赖、创建混淆脚本、修改 `package.json` 脚本命令、构建项目并执行混淆,以及在 HTML 文件中引用混淆后的文件。通过这些步骤,可以有效提高代码的安全性。
|
1月前
|
前端开发 JavaScript 开发者
React与Vue:前端框架的巅峰对决与选择策略
【10月更文挑战第23天】React与Vue:前端框架的巅峰对决与选择策略
|
1月前
|
前端开发 JavaScript 数据管理
React与Vue:两大前端框架的较量与选择策略
【10月更文挑战第23天】React与Vue:两大前端框架的较量与选择策略
|
24天前
|
JavaScript 前端开发 搜索推荐
Vue的数据驱动视图与其他前端框架的数据驱动方式有何不同?
总的来说,Vue 的数据驱动视图在诸多方面展现出独特的优势,其与其他前端框架的数据驱动方式的不同之处主要体现在绑定方式、性能表现、触发机制、组件化结合、灵活性、语法表达以及与后端数据交互等方面。这些差异使得 Vue 在前端开发领域具有独特的地位和价值。
|
2月前
|
JavaScript 前端开发 算法
前端优化之超大数组更新:深入分析Vue/React/Svelte的更新渲染策略
本文对比了 Vue、React 和 Svelte 在数组渲染方面的实现方式和优缺点,探讨了它们与直接操作 DOM 的差异及 Web Components 的实现方式。Vue 通过响应式系统自动管理数据变化,React 利用虚拟 DOM 和 `diffing` 算法优化更新,Svelte 通过编译时优化提升性能。文章还介绍了数组更新的优化策略,如使用 `key`、分片渲染、虚拟滚动等,帮助开发者在处理大型数组时提升性能。总结指出,选择合适的框架应根据项目复杂度和性能需求来决定。
|
2月前
|
监控 JavaScript 前端开发
前端的混合之路Meteor篇(六):发布订阅示例代码及如何将Meteor的响应数据映射到vue3的reactive系统
本文介绍了 Meteor 3.0 中的发布-订阅模型,详细讲解了如何在服务器端通过 `Meteor.publish` 发布数据,包括简单发布和自定义发布。客户端则通过 `Meteor.subscribe` 订阅数据,并使用 MiniMongo 实现实时数据同步。此外,还展示了如何在 Vue 3 中将 MiniMongo 的 `cursor` 转化为响应式数组,实现数据的自动更新。
|
2月前
|
前端开发 JavaScript 安全
在vue前端开发中基于refreshToken和axios拦截器实现token的无感刷新
在vue前端开发中基于refreshToken和axios拦截器实现token的无感刷新
141 4
|
1月前
|
前端开发 JavaScript 安全
vite3+vue3 实现前端部署加密混淆 javascript-obfuscator
【11月更文挑战第7天】本文介绍了在 Vite 3 + Vue 3 项目中使用 `javascript-obfuscator` 实现前端代码加密混淆的详细步骤。包括项目准备、安装 `javascript-obfuscator`、配置 Vite 构建以应用混淆,以及最终构建项目进行混淆。通过这些步骤,可以有效提升前端代码的安全性,防止被他人轻易分析和盗用。
118 0