首页 > 其他分享 >第1章 认识 Vite

第1章 认识 Vite

时间:2024-07-06 13:01:11浏览次数:13  
标签:插件 认识 开发 Vite 模块 打包 开发者

明白了,这里是第1章内容的详细展开版本:


第1章 认识 Vite

1 . 什么是 Vite

Vite 是一个由尤雨溪(Vue.js 的创始人)开发的前端构建工具,旨在提供极快的开发体验。Vite 的名字来源于法语,意为“快速”,这正是它的核心理念。

1 传统构建工具的挑战

传统的构建工具(如 Webpack、Parcel 等)通常需要通过打包所有资源来启动开发服务器,这对于大型项目而言可能会变得缓慢。每次修改代码时,开发者都需要等待文件重新打包,这会严重影响开发效率。

打包时间长

传统工具在启动时需要打包整个项目的所有资源,包括 JavaScript、CSS、图片等。这在大型项目中会导致长时间的等待,影响开发者的效率。

热更新效率低

每次修改代码后,传统工具需要重新打包受影响的模块,并在浏览器中重新加载。这种方式虽然能保持应用的状态,但速度较慢,体验不够流畅。

2 Vite 的核心理念

Vite 通过原生 ES 模块(ESM)提供了一个全新的构建思路。在开发环境中,Vite 使用浏览器的原生 ESM 功能来实现即时的模块解析和加载。生产环境下,Vite 则使用 Rollup 进行优化和打包,从而兼顾了开发体验和生产性能。

ES 模块支持

现代浏览器已经支持 ES 模块,这意味着可以直接在浏览器中使用 import/export 语法。Vite 利用这一特性,在开发时避免了传统的打包步骤,实现了即时的模块加载。

按需加载

Vite 在开发时只处理当前页面实际用到的模块,其他模块按需加载。这极大地缩短了启动时间和热更新时间。

2 . Vite 的特点和优势

2.1 极速启动

Vite 利用浏览器原生支持的 ES 模块功能,实现了按需加载,不需要像传统工具那样预先打包所有资源,这使得开发服务器启动时间非常短,即使在大型项目中也能做到秒级启动。

浏览器原生模块

Vite 通过浏览器原生支持的 ES 模块功能,实现了无需打包的即时模块加载。浏览器会根据 import 语句动态加载模块,减少了启动时的处理量。

快速冷启动

由于 Vite 不需要在启动时打包所有资源,冷启动时间显著缩短。即使在大型项目中,开发服务器的启动时间也能保持在几秒内。

2.2 快速热更新

通过模块热替换(HMR),Vite 可以在不刷新页面的情况下替换、添加或删除模块,从而保持应用程序状态。这极大地提升了开发体验和效率。

HMR 原理

Vite 使用 WebSocket 监听文件变化,当检测到文件变化时,通过模块热替换机制(HMR)只替换发生变化的模块,而不刷新整个页面。这样可以保持应用的状态,提升开发体验。

实时反馈

由于 HMR 的存在,开发者在修改代码后可以立即在浏览器中看到效果,减少了开发和调试的时间。

2.3 开箱即用的现代特性

Vite 内置了对 TypeScript、JSX、CSS Modules、PostCSS 等现代前端开发特性的支持,减少了开发者的配置工作。

内置支持

Vite 开箱即用地支持 TypeScript、JSX、CSS Modules、PostCSS 等现代前端开发技术。开发者无需额外配置,即可直接使用这些特性,提升开发效率。

易于扩展

Vite 的配置文件(vite.config.js)简洁且灵活,开发者可以根据项目需求进行自定义配置,扩展 Vite 的功能。

2.4 插件系统

Vite 拥有强大的插件系统,可以通过插件轻松扩展其功能。它的插件 API 灵活且易于使用,允许开发者编写自定义插件来满足特定需求。

插件机制

Vite 的插件系统基于 Rollup 插件 API,支持所有 Rollup 插件,同时提供了 Vite 特有的插件接口。插件可以拦截和处理 Vite 的构建流程,扩展其功能。

社区支持

Vite 社区提供了丰富的插件库,涵盖了从代码转换、优化到开发辅助的各个方面。开发者可以从社区中找到适合自己项目的插件,进一步提升开发体验。

3 . 与其他构建工具的对比

3.1 Vite vs. Webpack

Webpack 是一个功能强大且广泛使用的构建工具,但其配置复杂且启动时间较长。相比之下,Vite 的配置更简单,启动速度更快,非常适合现代前端开发需求。

配置复杂度

Webpack 需要详细的配置文件(webpack.config.js)来定义打包规则,而 Vite 的默认配置已经足够应对大多数场景,开发者只需进行少量配置即可使用。

启动速度

由于 Vite 利用了浏览器的原生模块支持,其开发服务器启动速度远快于 Webpack,特别是在大型项目中优势更加明显。

3.2 Vite vs. Parcel

Parcel 是一个零配置的打包工具,注重开发者体验。虽然 Parcel 提供了快速的打包速度,但在开发环境下,Vite 的即时模块加载和 HMR 性能表现更为优越。

零配置

Parcel 提供了零配置的使用体验,但在需要自定义配置时,Parcel 的配置灵活性不如 Vite。Vite 的配置文件更加直观,扩展性更强。

开发体验

Vite 的即时模块加载和高效的 HMR 使得开发体验更佳,开发者可以在代码修改后立即看到效果,而不需要等待打包完成。

3.3 Vite vs. Rollup

Rollup 主要用于库打包,注重输出代码的质量和体积。Vite 在生产环境下使用 Rollup 进行打包,但在开发环境下提供了更好的开发体验。

打包优化

Rollup 以其高效的代码分割和优化能力著称,适合用于生产环境的打包。而 Vite 在开发环境中使用原生 ES 模块,实现了更快的启动和热更新。

两者结合

Vite 在开发环境下提供快速的模块加载和 HMR,在生产环境下通过 Rollup 进行优化和打包,兼顾了开发体验和生产性能。

4 . Vite 的应用场景

4.1 单页应用(SPA)

Vite 非常适合单页应用开发,特别是使用现代前端框架(如 Vue、React、Svelte 等)的项目。它的快速启动和热更新特性可以显著提高开发效率。

Vue 框架

由于 Vite 是由 Vue.js 的创始人开发的,它对 Vue 的支持非常完善。Vue 开发者可以享受到最佳的开发体验和工具集成。

React 框架

Vite 对 React 也有良好的支持,内置了 JSX 和 TypeScript 支持,React 开发者可以轻松上手。

4.2 多页应用(MPA)

虽然 Vite 主要面向 SPA,但它也可以很好地支持多页应用开发。通过简单的配置,可以让 Vite 处理多个入口点,实现多页面的按需加载。

多入口配置

Vite 支持通过配置多个入口点来实现多页应用的开发。开发者可以在配置文件中定义不同的页面入口,实现按需加载和独立构建。

4.3 静态网站生成

Vite 可以与静态网站生成器(如 VitePress、Gatsby 等)结合使用,为静态网站提供快速的开发体验和高效的构建性能。

VitePress

VitePress 是基于 Vite 的静态网站生成器,特别适合用于文档和博客网站。它利用 Vite 的优势,实现了快速构建和热更新。

其他生成器

Vite 也可以与其他静态网站生成器(如 Gatsby、Next.js)结合使用,通过插件或自定义配置实现高效的静态网站开发。

标签:插件,认识,开发,Vite,模块,打包,开发者
From: https://blog.csdn.net/imdeity/article/details/140186219

相关文章

  • 【C++】认识使用string类
    【C++】STL中的string类C语言中的字符串标准库中的string类string类成员变量string类的常用接口说明成员函数string(constructor构造函数)~string(destructor析构函数)默认赋值运算符重载函数遍历string下标+[]迭代器范围for反向迭代器capacitysizelengthmax_sizeresi......
  • 工业相机---初步认识+如何选型
    1 相机的成像原理物体反射光线,经过镜头缩小成像在感光芯片(CMOS/CCD)上镜头负责缩小成像光圈控制进入相机的光线强度快门控制光线照射芯片的时间感光芯片将光信号转换成电信号2感光芯片感光芯负责捕捉光线并将其转换为电信号,最终形成数字图像。感光芯片有一个个像元组成,感......
  • 告别 .NET 7,支持将于 5 月结束——我们几乎不认识你
    微软.NET7软件框架的支持将于5月结束,这距离其2022年发布仅过去18个月——这提醒我们,长期更新时代正在成为过去。.NET7于2022年11月8日首次亮相,与其前身不同的是,它是一个标准期限支持(STS)版本,这意味着它的支持期为18个月。.NET6和.NET8都是长期支持(L......
  • 1-认识网络爬虫
    1.什么是网络爬虫​网络爬虫(WebCrawler)又称网络蜘蛛、网络机器人,它是一种按照一定规则,自动浏览万维网的程序或脚本。通俗地讲,网络爬虫就是一个模拟真人浏览万维网行为的程序,这个程序可以代替真人自动请求万维网,并接收从万维网返回的数据。与真人浏览万维网相比,网络爬虫能......
  • 认识软件测试
    认识软件测试软件测试能力要求一、软件测试的步骤1.需求2.测试点3.测试用例4.执行测试用例5.缺陷管理6.测试报告一、测试用例(testcase)**用例编写要素**:测试用例设计方法1.等价类2.边界值3.判定表法4.场景法软件测试能力要求软件测试用例设计能力缺陷管理能......
  • 认识8086处理器
    8086处理器是英特尔(Intel)在1978年推出的一款16位微处理器,它是x86架构以及计算机科技发展史的重要里程碑。如今我们学习x86汇编绕不开8086处理器。通用寄存器8086处理器有八个十六位通用寄存器:AXBXCXDXSIDIBPSP。AXBXCXDX四个寄存器又可分为八个八位处理器。以......
  • 认识100种电路之降压电路
    在电子电路的世界里,降压电路扮演着至关重要的角色。【为什么电路需要降压电路】 首先,我们要明白,不同的电子设备和元件往往需要特定的电压来正常工作。比如,某些芯片可能需要5V的电压,而我们提供的电源可能是12V甚至更高。这时候,降压电路就派上用场了,它能够将过高的输入电......
  • 【electron-vite+live2d+vue3+element-plus】实现桌面模型宠物+桌面管理系统应用(踩坑)
    脚手架项目使用electron-vite脚手架搭建ps:还有一个框架是electron-vite,这个框架我发现与pixi库有冲突,无法使用,如果不用pixi也可以用这个脚手架。node版本建议18+----------------------------------------------------------------------------------------运行live2D......
  • JAVA,认识类
    一、类?什么是类?官方文档解释:类(Class)是面向对象程序设计(OOP,Object-OrientedProgramming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。拥有共同属性抽象的集合称之为类白话:简单理......
  • 【深度学习】图形模型基础(3):从零开始认识机器学习模型
    1.引言机器学习,这一古老而又充满活力的领域,其历史可追溯至上世纪中叶。然而,直到20世纪90年代初,机器学习才开始展现出其广泛的应用潜力。在过去的十年里,机器学习更是迎来了前所未有的蓬勃发展,其应用范畴广泛,不仅在网络搜索、自动驾驶汽车、医学成像和语音识别等领域大放异彩......