专访Vue作者尤雨溪:Vue CLI 3.0重构的原因

1、为什么要对 Vue CLI 进行大规模修改?

尤雨溪认为旧版本的 Vue CLI 本质上只是从 GitHub 拉取模版,这种拉模版的方式有几个问题:

(1) 在单个模版里面同时支持太多选项会导致模版本身变得极其复杂和难以维护,而提供多个模版一方面会让初学者无所适从,另一方面模版之间也难以共享功能或是互相迁移。CLI 3 对此的解决方案是通过插件的形式去支持多个不同的功能,一个插件对应一个功能(比如单元测试),这样即避免了多个模版,也使得 CLI 自身的可维护性得到提升。同时,支持第三方插件,使得用户可以实现各种自定义的功能扩展。

(2)拉模版生成的项目,所有的 webpack 配置和构建脚本都直接包含在仓库中,一旦用户对这些部分做了修改,就很难再获得源模版的更新和升级。CLI 3 生成的项目,核心的 webpack 配置和构建逻辑都被封装在依赖中,同时允许用户通过配置文件来进行底层的修改。这样的好处是 CLI 更新后,用户即使做过自定义的修改也依旧可以升级。

(3) 由于核心配置都被封装起来了,所以我们有更多的空间去做更复杂的功能和优化,比如构建时的性能优化(缓存 / 多核),modern mode,生成 web component 等,而不用担心用户的项目里面充斥大量和应用本身无关的构建代码。同时以后随着 web 平台新规范的落地,我们也可以继续在 CLI 中添加各种针对性的优化,用户只需要升级即可获得。

2、加入 GUI 是为了降低使用门槛

一直以来,人们一直认为 GUI 易用,CLI 高效,Vue CLI 3.0 中加入了 GUI,尤雨溪解释说,主要就是为了降低使用门槛,因为命令行能展示的交互很有限,所以默认用户对于创建项目时涉及的各种工具和配置项都有基本的了解。而 GUI 可以提供更多的信息帮助用户了解这些东西是干嘛的。另外 GUI 也能提供一些命令行难以展示的信息,比如通过可视化的图表分析打包后各个模块的大小占比等。

有些 UI 库 /Vue 封装的框架也提供了脚手架,尤雨溪认为大部分库其实不需要特别的配置,提供脚手架的库,一般是需要进行一些特殊的配置来提升开发体验。CLI 3 其实正是希望能够为这种情况提供一个标准方案,所以提供了很强大的插件 API。理想情况下,所有的第三方 UI 库都可以通过插件的形式接入 CLI 3,比如 vuetify 就有对应的 CLI 插件。至于框架(比如 nuxt),由于涉及到更高层的东西,有自身的脚手架无可厚非。

3、Vue 由独立团队维护,单点问题仍存在

前段时间 Vue 公司在招募全职的开源工作者,相信大家都好奇,Vue 公司是否是盈利组织,他们是如何获取资金维持运转的?

对此,尤雨溪答复,目前,Vue 由独立团队维护,并不是那种拿投资的创业公司,资金来源就是赞助商、广告等。现在大部分的子项目都交给团队成员打理,Vue 核心库依然主要由尤雨溪亲自维护。

Vue 团队成员可以复制以下链接在浏览器中打开了解:

https://vuejs.org/v2/guide/te...

对于单点问题,尤雨溪表示,目前单点问题肯定是存在的,他接下来有一部分计划就是细化项目的 governance model,减少项目对他的个人依赖,但这需要时间去慢慢落实。跳出前端的视野来看,Vue 其实是一个很年轻的项目,在这个阶段对核心开发者的依赖是很正常的,甚至可以说是有必要的。很多现在举足轻重的项目,比如 Linux,从某种程度上来说也存在单点问题。Python 在 Guido 宣布退休后会怎么发展,也让人很难预料。

4、独立开发者:自由与风险并存

前端总流行着这么一句话“别更新了,我学不动”,之前也曾有人恶搞 P 图,说尤雨溪要发布 Vue 4.0 了,尤雨溪回应,技术职业本身是一个需要靠不断的学习来维持竞争力的职业,如果只是抱着学会一门手艺吃到老的心态做这行的话,可能会比你想象得更早被淘汰。

作为独立开发者,尤雨溪认为他的时间可以完全自由支配,不用加班,在工作和家庭平衡方面可以说比给公司打工好太多,当然,独立开发的另一面是需要自己承担更多的压力和风险,同时还要有足够的自律能力,所以不一定适合所有人,但对他来说,现在的生活状态使他非常满意。

原文链接:https://www.jianshu.com/p/51a...


更多专业前端知识,请上 【猿2048】www.mk2048.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364703.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java秒杀时间与服务器时间_Javascript实现秒杀倒计时(时间与服务器时间同步)...

现在有很多网站都在做秒杀商品,而这其中有一个很重要的环节就是倒计时。关于倒计时,有下面几点需要注意:1.应该使用服务器时间而不是本地时间(本地时间存在时区不同、用户自行设置等问题)。2.要考虑网络传输的耗时。3.获取时间时可直接从AJAX…

Java 8 Friday Goodies:本地交易范围

在Data Geekery ,我们喜欢Java。 而且,由于我们真的很喜欢jOOQ的流畅的API和查询DSL ,我们对Java 8将为我们的生态系统带来什么感到非常兴奋。 我们已经写了一些关于Java 8好东西的博客 ,现在我们觉得是时候开始一个新的博客系列了…

Python3.5-20190501-廖老师的

python是一门解释型\脚本语言(和js特别像,如果同时学习js和python完全搅浑了.) 在运行py时候是一句一句翻译成cpu识别的机器码,所以速度比较慢.而C程序是运行前直接编译成CPU能执行的机器码,所以非常快. 学习python,就需要安装python.安装的同时会有一个解释器,就是…

如何用纯 CSS 创作一个冒着热气的咖啡杯

效果预览 在线演示 按下右侧的“点击预览”按钮在当前页面预览,点击链接全屏预览。https://codepen.io/zhang-ou/pen/xjXxoz可交互视频教程此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。请用 chrome, safari, edge 打开观看。…

用keras实现基本的回归问题

数据集介绍 共有506个样本,拆分为404个训练样本和102个测试样本 该数据集包含 13 个不同的特征: 人均犯罪率。占地面积超过 25000 平方英尺的住宅用地所占的比例。非零售商业用地所占的比例(英亩/城镇)。查尔斯河虚拟变量&#xf…

Java:计算类的serialVersionUID

在本周早些时候,我想计算可序列化类的serialVersionUID ,以便可以覆盖其toString方法而不会破坏所有内容。 我遇到了Frank Kim的博客文章 ,该文章建议使用JDK附带的serialver工具。 我创建了一个Maven小项目来在一个非常简单的类上测试该工…

Codeforces Round #556 (Div. 1)

Codeforces Round #556 (Div. 1) A. Prefix Sum Primes 给你一堆1,2,你可以任意排序,要求你输出的数列的前缀和中质数个数最大。 发现只有\(2\)是偶质数,那么我们先放一个\(2\),再放一个\(1\),接下来把\(2\)全部放掉再…

FC冒险岛java版_冒险岛单机版

游戏概述冒险岛单机版是一款非常好玩的横版动作RPG游戏,游戏难度很适中,冒险岛单机版采用了与其他Q版2D游戏不同的横向卷轴的移动方式,场景高低落差的设计,整个画面层次感设计算是一级,喜欢这类手柄闯关游戏的玩家快来…

通过小程序实现网站扫码登录!每年都可以省 300 块...代替微信开放平台和服务号的登陆模式!

我们知道,要接入微信登陆有两种方式 1、微信开放平台2、微信服务号 这两种方式均可生成带参数的二维码,然后扫码获取用户基本信息的,所以我们可以在网站上用这两种方式开发网站的扫码登录,也是现在很多网站的通用做法。 微信开…

WAR文件与具有嵌入式服务器的Java应用程序

大多数服务器端Java应用程序(例如,面向Web或面向服务的)都希望在容器中运行。 打包这些应用程序以进行分发的传统方法是将它们捆绑为WAR文件。 这无非是具有标准目录布局的ZIP归档文件,其中包含运行时所需的所有库和应用程序级依赖…

JavaFX自定义控件– Nest Thermostat第3部分

嗨,经过与同事的讨论,我今天决定展示css方法不是唯一可用于创建自定义控件的方法。 当然,它允许提供一些外观扩展点,但是可以使用代码API使用相同的方法(与向JavaFX的转换)一起使用。 这是图形初始化方法&…

ceph rgw java_ceph rgw multisite基本用法

Realm: Zonegroup: 理解为数据中心,由一个或多个Zone组成,每个Realm有且仅有 一个Master Zonegroup,用于处理系统变更,其他的称为Slave Zonegroup,元数据与Master Zonegroup保持一致&#xff1b…

Python基础-Hello Word!

老师说,学习语言一定要有仪式感,So... print (“Hello Word”) 哈哈,好牛叉! 一、 Python安装 Windows 1、 下载安装包 https://www.python.org/downloads/ 2、 安装 默认安装路径: C:\Users\admin\AppData\Local\Programs\Python…

微信小程序 request请求封装

request 只用 POST,只封装了 POST,等有用到 GET再重写,接口用的 ThinkPHP5.0主要代码 var apiurl "xxxxx"; function http_post(controller,data,cb){wx.request({url:apiurl controller,data:data,method:post,header:{Content-…

MySQL基本语句

MySQL基本语句 数据库语句介绍: 语言分类: DDL:数据库和表 DML:表中的数据 DQL:查询表中的数据 DCL:(授权) DDL: 1、操作数据库 创建数据库: create database 数据库名; 创建数据库,…

使用Java注解不正确的方法

几乎没有什么Deprecated没有适当的文档看到Deprecated方法更令人生气的了。 我感到失落。 我应该仍然使用该方法吗? 可能这不是开发人员的意图,这就是为什么他/她添加了弃用注释。 我应该使用其他东西吗? 所以…。 使用Deprecated的规则是什…

easypanel mysql错误_Easypanel v1.6(虚拟主机控制面板)图文使用教程

一、Easypanel软件简介:Easypanel是一款虚拟主机管理工具,它支持php(windows系统还支持asp、asp.net)、磁盘配额、在线文件管理、在线web软件安装,是一款集虚拟主机、ftp、mysql等功能为一体的管理系统,本身还集成了kangle web服务…

游戏、脑洞大开1(密码简单破译)

“二八”妙龄写密码,看谁聪明“爱死他”。 密文:766C7273626F76706A5E6F715F7271766C72706D626B71716C6C71666A62 注意:(1)此题由正心41上课的同学做 (2)第一个提交,答案&#xff1a…

html-字体属性

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>* {margin: 0;padding: 0;}/*font-family 字体类型浏览器默认的字体是微软雅黑&#xff0c;字体中有多个字体的时候&…

thinkPHP利用ajax异步上传图片并显示、删除

近来学习tp5的过程中&#xff0c;项目中有个发帖功能&#xff0c;选择主题图片。如下&#xff1a; 利用原始的文件上传处理&#xff0c;虽然通过原始js语句能实时显示上传图片&#xff0c;但是这样的话会涉及很多兼容问题。使用ajax技术&#xff0c;实现选择性删除所选图片功能…