小鲜肉 Vite 会取代 OG Vue CLI 吗?

简介: 如果说 Vite 是 2021 年咱前端圈的新晋顶流小鲜肉当真一点不为过!尚不清楚的 XDM 可能想问,这玩意儿到底是要干嘛呢?

image.png


序言



上周(2021.2.18),尤大发布了 Vite 2.0。紧跟尤大动态的童鞋应该都知道,2021 以来,尤大对 Vite 有多看重。日更频率的提交 - commit 详情


如果说 Vite 是 2021 年咱前端圈的新晋顶流小鲜肉当真一点不为过!

尚不清楚的 XDM 可能想问,这玩意儿到底是要干嘛呢?

一句话概括:


Vite 是一款全新的前端构建工具,它的服务器速度比 Vue CLI 快十到一百倍。


嗦嘎,我们都知道,在 Vue CLI 项目,每次 npm run dev 或 npm run build 都要十几秒甚至几十秒、甚至几分钟都是有可能的,这确实让人有点蓝瘦。Vite 就是来解决这个痛点的。更高、更快、更强是我们永远的追求,在任何领域都是这样。

那它原理是?


一句话概括:

Vite 利用浏览器原生的 ES 模块支持和用编译到原生的语言开发的工具(如 esbuild)来提供一个快速且现代的开发体验


用大白话讲,即 Vite 不需要像 Webpack 打包代码,只需拦截浏览器发出的 ES imports 请求并做相应处理,实现真正意义上的按需。此处附两张官网图来对比二者差异。

image.png

image.png

本文将稍作展开探讨:Vite VS Vue CLI,一起康康这位小鲜肉是否会取代咱 OG 老大哥?


Vue CLI



Vue CLI 是我们搭建 Vue 项目的最强脚手架,因为它自带 Webpack,以及其它最佳项目实践配置。


包括:

  • 项目结构
  • 支持热更新的开发服务器
  • 插件系统
  • 接口支持


也可以这样理解:Vue CLI 服务器的构建功能和性能是 Webpack 的超集。


Vite



和 Vue CLI 类似,Vite 也是一个构建工具,提供基本的项目框架和开发服务器。

但是,Vite 不是基于 Webpack 的,Vite 拥有自己的开发服务器,该服务器利用浏览器中的本机 ES 模块。这种架构比 Webpack 的开发服务器要快几个数量级。在生产环境,Vite 使用 Rollup 进行 build,速度也更快。


目前看,Vite 目标并不是成为像 Vue CLI 这样具有多功能的构建工具,而是专注于提供快速的开发服务器和基本的构建服务。


唯快不破



Vite 服务器速度比 Vue CLI 自带的 Webpack 服务器速度快十倍多,上图以佐证。


image.png


完整的视频在 Vite and VitePress - Evan You

在大型项目中,这一差异将更为明显。Webpack 开发服务器 build 和 re-build 速度可能会到 25 -30 秒,甚至更长。但对于同一项目,Vite 开发服务器可能总以 250ms 左右的恒定速度来构建项目。


打包与否



Webpack 的工作方式是通过处理程序中的每个importrequire将它们打包到不同的 bundle 中。


如果其中的一个依赖发生了改变,再次构建需要重新打包整个依赖关系。依赖项的数量和构建所花费的时间呈线性关系。


而 Vite 不再进行打包操作。它依赖浏览器对 JavaScript 模板的本机支持(又称 ES 模块,这是一个相对较新的功能)。

image.png

截图来自 MDN & basic-modules Github Demo


不足



目前我们已经知道 Vite 能提供的就是 ,但它也存在一些不足:

  • 浏览器兼容问题;


image.png

  • 不支持全部的 CommonJS 模块;
  • 处于迭代初期,功能还在不断变化;
  • 项目构建不包括 Vuex、VueRouter 等工具;


所以,到底 用不用? 以及 怎么用? 还是见仁见智的问题。本瓜认为,如果你受够了 Webpack 的构建速度,或者你是勇于尝新的人,那为什么不呢?


小结



综上作个小结,目前这个 Vite 小鲜肉还不能取代咱 OG 老大哥 Vue CLI。

本篇并未进行实践对比,只是从形而上进行了一个认知。但是我们也已看到了 Vite 自身的光芒。也许有一天,Vue CLI 会兼容它成为一个配置项。也许 Webpack6 也会支持利用浏览器的 ES 特性。也许 Vite 会完全颠覆 Webpack(基于 http2 的普及)......


image.png


为什么不呢?


撰文不易,点赞鼓励。讨论留言,携手向前。★,°:.☆( ̄▽ ̄)/$:.°★

关注公众号:【掘金安东尼】


参考




相关文章
|
2天前
|
缓存 JavaScript 前端开发
《基础篇第4章:vue2基础》:使用vue脚手架创建项目
《基础篇第4章:vue2基础》:使用vue脚手架创建项目
10 3
|
1天前
|
缓存 JavaScript
Vue 中 computed 与 method 的区别
【10月更文挑战第15天】computed 和 method 是 Vue 中两个重要的选项,它们在功能和特点上存在着明显的区别。理解并合理运用它们的区别,可以帮助我们构建更高效、更具可维护性的 Vue 应用。在实际开发中,要根据具体情况灵活选择使用,以满足不同的需求。
5 2
|
1天前
|
JavaScript 搜索推荐 UED
vue的自定义指令
【10月更文挑战第14天】Vue 自定义指令为我们提供了一种强大的工具,使我们能够更灵活地控制和扩展 Vue 应用的行为。通过合理地使用自定义指令,可以提高开发效率,增强应用的功能和用户体验。
|
2天前
|
JavaScript
|
1天前
|
JavaScript UED
在 Vue 中使用自定义指令
【10月更文挑战第14天】通过合理地使用自定义指令,可以为 Vue 应用带来更多的灵活性和扩展性,提高开发效率和用户体验。
|
JavaScript 测试技术 容器
Vue2+VueRouter2+webpack 构建项目
1). 安装Node环境和npm包管理工具 检测版本 node -v npm -v 图1.png 2). 安装vue-cli(vue脚手架) npm install -g vue-cli --registry=https://registry.
1042 0
|
4天前
|
JavaScript 前端开发 开发者
Vue v-for 进阶指南:in 与 of 的区别及应用场景 | 笔记
Vue.js 中的 v-for 是强大的遍历指令,但其中的 in 和 of 关键字往往被开发者忽视。尽管它们的用法相似,但适用的场景和数据结构却各有不同。本文将详细探讨 v-for 中 in 和 of 的区别、适用场景以及在实际开发中的最佳使用时机。通过理解它们的差异,你将能够编写更加高效、简洁的 Vue.js 代码,灵活应对各种数据结构的遍历需求。
40 6
|
4天前
|
缓存 JavaScript 前端开发
Vue 中动态导入的注意事项
【10月更文挑战第12天】 在 Vue 项目中,动态导入是一种常用的按需加载模块的技术,可以提升应用性能和效率。本文详细探讨了动态导入的基本原理及注意事项,包括模块路径的正确性、依赖关系、加载时机、错误处理、缓存问题和兼容性等,并通过具体案例分析和解决方案,帮助开发者更好地应用动态导入技术。
|
4天前
|
JavaScript API
vue 批量自动引入并注册组件或路由等等
【10月更文挑战第12天】 vue 批量自动引入并注册组件或路由等等
|
5天前
|
JavaScript 算法 前端开发
深入剖析Vue中v-for的使用及index作为key的弊端
深入剖析Vue中v-for的使用及index作为key的弊端
13 2