聊一聊vite,未来的前端构建工具?!

简介: vite,

 天下武功,唯快不破。在当今社会,面对着各种竞争,面对着各种挑战,谁快一步,谁就会拥有主动权。同样在互联网领域,也讲究快速和敏捷,首屏加载时间迅速,接口返回数据快等,都会给用户带来更丝滑的体验。那么对于我们开发者呢,在开发过程中,如果构建速度快,开发效率自然而然就上升了!因此,在前端开发领域,vite就诞生了!

 那么问题来了,vite到底是啥呢?来看看我们尤大大自己的官宣:Vite(法语意思是 “快”,发音为 /vit/,类似 veet)是一种全新的前端构建工具。你可以把它理解为一个开箱即用的开发服务器 + 打包工具的组合,但是更轻更快。Vite 利用浏览器原生的 ES 模块支持和用编译到原生的语言开发的工具(如 esbuild)来提供一个快速且现代的开发体验。

 Vite的版本发布也是非常快,去年12月底刚推出vite1.0测试版本,然后过年前就推出了vite2.0!(站在顶端的大佬都这么努力,我们还有什么资格不努力!)


vite2.0新特性

Vite 2.0 其实是 Vite 的第一个稳定版本,它是由于vite1.0的一些设计缺陷而进行一次彻底的重构。首先来说一说它的一些特性:

*快速的冷启动

*即时的模块热更新

*真正的按需编译

 这些特点我会在下文通过对比webpack来进行直观的阐述。在2.0版本,尤大大的野心也体现出来了,本来vite的初衷是取代vue-cli,现在它完全和框架无关,并且所有的框架特定支持都由插件来代理实现。目前官网提供了 Vue, React, Preact, Lit Element 的官方模板;同时Vite 是一个基于原生 ESM 的开发服务器,在启动时我们需要通过依赖预打包来达成两个目的:1. 减少模块 / 请求数量;2. 支持 CommonJS 依赖。虽然预打包只有在依赖变动时才需要执行,但在有大量依赖的项目中,每次执行还是可能会需要很长时间。之前vite1.0是使用 Rollup 来执行这个过程,而在 2.0 中切换到了 esbuild,使这个过程又加快了几十倍!

vite和webpack的比较

Webpack原理图


20201110101541703.png

Vite原理图

20201110101622933.png

  1. 从上图我们可以看出来,Webpack Dev Server 在启动时,需要先打包—遍,然后启动开发服务器,这一过程是需要耗费很多时间的。而vite是直接启动Server,并不会先编译所有的代码文件
  2. 在进行热更新时,Webpack 修改某个文件过后,会自动以这个文件为入口重写 build—次,所有的涉及到的依赖也都会被加载一遍,所以反应速度会慢很多。而Vite 只需要立即编译当前所修改的文件即可,所以 响应速度非常快
  3. Webpack 工具的做法是将所有模块提前编译,不管模块是否会被执行,都要被编译和打包到 bundle 里。随着项目越来越大打包后的 bundle 也越来越大,打包的速度自然也就越来越慢。而Vite 利用现代浏览器原生支持 ESM 特性,省略了对模块的打包。也就意味着不需要分析模块的依赖、不需要编译,只有具体去请求某个模块时才会编译这个文件,实现真正的按需编译!


Vite工程目录

 既然这么快,那就起一个vite工程来看看吧!同常见的开发工具一样,vite 提供了用 npm 或者 yarn 一建生成项目结构的方式,直接一行命令,同时也有一些模板可供选择,今天我们选择react版本来看一下(首先确保你的 Node.js 版本 >=12)

wps4.jpg

然后安装好依赖后,真的是瞬间秒开wps5.jpg

我们来看看目录结构,也是非常的精简

wps6.jpg

打开index文件,我们会看到

<body>
    <div id="root"></div>
    <script type="module" src="/src/main.jsx"></script>
  </body>

通过将script标签的type属性设置为module,这样main.js中就可以使用ES6 Module模块功能;

import React from 'react'
import ReactDOM from 'react-dom'
import './index.css'
import App from './App'
ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  document.getElementById('root')
)

上面是我们写的main.js文件,让我们打开浏览器控制台,看看通过vite构建后请求的main.js文件

image-20210322105837535.png

通过上面我们会发现,当 script.typemodule 时,通过 srcimport 导入的文件会发送 http 请求,而Vite 会拦截这些请求,并对请求的文件路径进行特殊的处理,其主要原理通过运用Koa服务,实现了按需读取文件,省掉了打包步骤。

其实vite2.0在依赖预编译,插件机制,以及css的支持等方面都做了很方多优化和改革,这些我就不一一的赘述了,感兴趣的同学可以在官网学习,笔者也在研究相关的源码,回头有机会和各位再做一次深入分享。


关于Vite的未来思考

 笔者在写作期间,尤大大在 Twitch 上作客了 GitHub Open Source Friday 节目,里面也一直在聊他最近的vite相关内容,还在线diss了webpack ,可见尤大大对vite取代webpack的信心,感兴趣的同学可以看一看,我把链接贴到了文章末尾。在我个人看来,我被vite深深的折服了,无论其构建速度,还是尤大大的思考方式和设计理念。当然任何技术都不可能完美的,只有合适才是最重要的!

wps7.jpg

目前vite在git上已经有22.6k个star,说明是迎合市场的需要的,当然毕竟现在还没有大规模的使用,可能会存在一定的坑;且还有一些很相似的构建工具(也从模块化角度)的竞争对手,比如Snowpack,他的生态相比于vite更加丰富。所以,vite的未来,那就让时间来证明吧!

附录:

  1. Open Source Friday 节目:https://www.bilibili.com/video/BV1kh411Q7WN
  2. Vite Github:https://github.com/vitejs/vite
  3. Vite 官方文档:https://www.pipipi.net/vite/guide/

相关文章
|
20天前
|
机器学习/深度学习 人工智能 自然语言处理
DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
DeepSeek Artifacts是Hugging Face推出的免费AI编程工具,基于DeepSeek V3,支持快速生成React和Tailwind CSS代码,适合快速原型开发和前端组件构建。
373 38
DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
|
2月前
|
人工智能 前端开发 小程序
2024年12月30日蜻蜓蜻蜓AI工具系统v1.0.0发布-优雅草科技本产品前端源代码已对外开源可免费商用-优雅草老八
2024年12月30日蜻蜓蜻蜓AI工具系统v1.0.0发布-优雅草科技本产品前端源代码已对外开源可免费商用-优雅草老八
2024年12月30日蜻蜓蜻蜓AI工具系统v1.0.0发布-优雅草科技本产品前端源代码已对外开源可免费商用-优雅草老八
|
2月前
|
前端开发 JavaScript 开发者
前端项目代码规范工具 (ESLint. Prettier. Stylelint. TypeScript)
前端项目代码规范工具 (ESLint. Prettier. Stylelint. TypeScript)
127 4
|
3月前
|
前端开发 数据处理 Android开发
Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍
本文深入探讨了Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍,以及具体操作步骤、常见问题解决、高级调试技巧、团队协作中的调试应用和未来发展趋势,旨在帮助开发者提高调试效率,提升应用质量。
79 8
|
3月前
|
监控 前端开发 JavaScript
前端稳定性工具-Sentry
【11月更文挑战第9天】Sentry 是一个开源的错误和性能监控平台,支持多种编程语言和框架。它能够捕获前端应用中的各种错误和性能问题,提供详细的错误信息和用户行为关联,帮助开发团队快速定位和解决问题,优化应用性能。但需注意隐私保护、数据准确性和成本控制。
188 3
|
3月前
|
前端开发 JavaScript API
前端开发的秘密武器:这些工具让你轻松应对各种复杂动画效果!
【10月更文挑战第30天】前端开发中,动画效果为页面增添了无限生机。CSS3的@keyframes规则和JavaScript动画库如GSAP、Anime.js等,使开发者能轻松实现从简单到复杂的动画效果。掌握动画原理和设计原则,结合工具和库,可以创造出既美观又实用的动画,提升用户体验。
72 4
|
3月前
|
Web App开发 前端开发 JavaScript
前端开发的秘密武器:这些工具让你轻松应对各种复杂布局!
【10月更文挑战第31天】前端开发充满挑战,尤其是在处理复杂布局时。本文介绍了几种关键工具和技术,如HTML和CSS基础、Firefox开发者工具、Visual Studio Code以及Vue、React和Angular等前端框架,帮助开发者高效应对复杂布局,提升代码质量和用户体验。
53 2
|
3月前
|
前端开发 JavaScript 开发工具
Vite 4.0 发布,下一代的前端工具链
【10月更文挑战第21天】Vite 4.0 的发布标志着前端开发领域的又一次重要进步。它为开发者带来了更高效、更智能、更具创新性的开发体验,正逐渐成为下一代前端工具链的引领者。
|
4月前
|
自然语言处理 前端开发 JavaScript
推荐 10 个前端开发会用到的工具网站
本文介绍了多个前端开发工具,包括 Web Design Museum、Landing Page、Google Fonts、Lorem Ipsum、Animista、Blobmaker、Spline、CodeToGo、UnusedCSS 和 Responsively,帮助开发者提高效率和项目质量。这些工具涵盖了设计、动画、代码片段管理、响应式测试等多个方面。
232 0
推荐 10 个前端开发会用到的工具网站
|
4月前
|
资源调度 前端开发 JavaScript
Vite:新一代前端构建工具的革命性体验
【10月更文挑战第13天】Vite:新一代前端构建工具的革命性体验

热门文章

最新文章