构建工具 Vite、Webpack、Rollup对比

这篇具有很好参考价值的文章主要介绍了构建工具 Vite、Webpack、Rollup对比。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Webpack介绍

热更新方面:webpack支持HMR,但是webpack需要全部重新编译并更新,效率较低
tree-shaking:webpack2开始支持且消除效果不好,但是webpack5有更好的tree-shaking(去除未使用代码)
分包方面:webpack支持代码切割。(分包)
ESM打包:现在webpack支持es6module输出

Rollup介绍

优点:
Rollup 是一款 ES Modules 打包器,从作用上来看,Rollup 与 Webpack 非常类似。不过相比于 Webpack,Rollup要小巧的多,打包生成的文件更小。(识别commonJs需要插件)
热更新:Rollup不支持HMR,在对js以外的模块的支持上不如webpack,但是如果是打包纯js库例如react,前期的vue的话,使用rollup是很合适的,打包的产物比较干净,没有webpack那么多工具函数
Rollup 的插件机制设计得相对更干净简洁,单个模块的 resolve / load / transform 跟打包环节完全解耦,所以 Vite 才能在开发时模拟 Rollup 的插件机制,并且兼容大部分 Rollup 插件
rollup原生支持tree-shaking
缺点:
加载其他类型的资源文件或者支持导入 CommonJS 模块,又或是编译 ES 新特性,这些额外的需求 Rollup需要使用插件去完成
rollup并不适合开发应用使用,因为需要使用第三方模块,而目前第三方模块大多数使用CommonJs方式导出成员,并且rollup不支持HMR,使开发效率降低

Vite介绍

vite是一种新型前端构建工具,能够显著提升前端开发体验。它主要由两部分组成:

一个开发服务器,它基于 原生 ES 模块 提供了丰富的内建功能,如速度很快的 【模块热更新HMR】
一套构建指令,它使用 Rollup打包你的代码,并且它是预配置的,可以输出用于生产环境的优化过的静态资源
Vite主要特点如下:

快速的冷启动:vite会直接启动开发服务器,不需要进行打包操作,所以不需要分析模块的依赖、不需要编译,因此启动速度非常快
即时的模块热更新
真正的按需编译:利用现代浏览器支持ES Module的特性,当浏览器请求某个模块的时候,再根据需要对模块的内容进行编译,这种方式大大缩短了编译时间
优点:
vite热更新,实现按需编译,按模块更新。(快)
在 Vite 中,HMR 是在原生 ESM 上执行的。当编辑一个文件时,Vite 只需要精确地使已编辑的模块与其最近的 HMR 边界之间的链失效,使 HMR 更新始终快速,无论应用的大小。
Vite 同时利用 HTTP 头来加速整个页面的重新加载(再次让浏览器为我们做更多事情):源码模块的请求会根据 304 Not Modified 进行协商缓存,而依赖模块请求则会通过 Cache-Control: max-age=31536000,immutable 进行强缓存,因此一旦被缓存它们将不需要再次请求。
热更新原理:在热模块HMR方面,当修改一个模块的时候,仅需让浏览器重新请求该模块即可,无须像webpack那样需要把该模块的相关依赖模块全部编译一次,效率更高
构建工具 Vite、Webpack、Rollup对比
2. vite在生产环境通过Rollup进行打包(特点:打包体积小),生成esm模块包。(特点:快)

vite在开发环境时,基于浏览器支持esm,让浏览器解析模块,然后服务器按需编译返回。同时基于esbuild(go)进行预构建打包不常变动的第三包,并用进行缓存。(缓存+快)
Vite 使用 esbuild 预构建依赖。Esbuild 使用 Go 编写,并且比以 Node.js 编写的打包器预构建依赖快 10-100 倍。

缺点:
生态:生态不如webpack,wepback在于loader和plugin非常丰富
prod环境的构建:目前用的Rollup,原因在于esbuild对于css和代码分割不是很友好
还没有被大规模使用,很多问题或者诉求没有真正暴露出来

结论:
Rollup更适合打包库,webpack更适合打包项目应用,vite基于rollup实现了热更新也适合打包项目。

—————————————————————————————————————
扩展:
1、webpack生命周期文章来源地址https://www.toymoban.com/news/detail-488402.html

  • 使用配置文件中的参数初始化compiler对象,初始化所有插件
  • 从入口文件出发,调用所有loader对模块进行处理(链式),再找出该模块依赖的模块进行处理
  • 根据入口和模块之间的依赖关系,组装成一个个包含多个模块的chunk,再把每个chunk转换成一个单独的文件加入到输出列表
  • 根据配置确定输出的路径和文件名,写入文件系统
  • 在以上过程中,Webpack会在特定的时间点广播出特定的事件,插件在监听对应的事件后会执行特定的逻辑
  • Webpack以开发模式运行时,每当检测到文件变化,一次新的Compilation被创建。

到了这里,关于构建工具 Vite、Webpack、Rollup对比的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端构建工具 代码优化压缩 模块管理 依赖管理 资源处理转换 自动化任务 流程优化 高级特性 Webpack Parcel Rollup Gulp 静态资源

    前端构建在前端开发中具有重要的意义,主要有以下几个方面: 代码优化和压缩:前端构建工具可以对前端代码进行优化和压缩,例如去除注释、空格,合并和缩小文件大小等。这可以减少文件的加载时间和传输大小,提高网页加载速度,优化用户体验 模块管理和依赖管理

    2024年02月09日
    浏览(29)
  • 探究Vue源码:mustache模板引擎(5) 对比rollup与webpack,在本地搭建webpack环境

    好 从本文开始 我们就来手写一下mustache这个库 他是模板引擎的一个祖先 将模板字符串编译成一个dom字符串 就是它的思想,这也是一个具有跨时代意义的思想 这里的话 我们还是搭一个 webpack 的项目环境 这里值得一提的是 mustache 他官方是通过rollup来进行打包的 很多第三方库

    2024年02月16日
    浏览(29)
  • 面试知识储备--打包工具篇(webpack和vite)

    常用配置 1.preprocessorOptions 传递给 CSS 预处理器的配置选项 2.PostCSS 也是用来处理 CSS 的,只不过它更像是一个工具箱,可以添加各种插件来处理 CSS 3.resolve.extensions 导入时想要省略的扩展名列表。默认值为 [‘.mjs’, ‘.js’, ‘.ts’, ‘.jsx’, ‘.tsx’, ‘.json’] 。 4.optimizeDeps.

    2024年02月08日
    浏览(28)
  • 【vue3】webpack和vite介绍与使用【超详细】

    打包工具 称为 构建工具 使用模块化开发主要面临两个 问题 :1.浏览器兼容性问题 2.模块化过多时,加载问题。 使用构建工具,对代码进行打包,将多个模块打包成一个文件。这样一来及解决了兼容性问题,又解决了模块过多的问题 作用 :构建工具可以将我们使用esm规范编写

    2024年02月07日
    浏览(22)
  • 前端构建工具 webpack 笔记

    1、了解 webpack   1、定义:本质上,webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具 ,当 webpack 处理应用它会在内部从一个或多个入口点构建一个依赖图(dependency graph),然后将你项目中所程序时,需的每一个模块组合成一个或多个 bundles,它们均为静态资源,用

    2024年02月08日
    浏览(29)
  • 如何使用Webpack工具构建项目

    webpack 用于编译 JavaScript 模块。一旦完成 安装,你就可以通过 webpack CLI 或 API 与其配合交互。如果你还不熟悉 webpack,请阅读 核心概念 和 对比,了解为什么要使用 webpack,而不是社区中的其他工具。 运行 webpack 5 的 Node.js 最低版本是 10.13.0 (LTS)。 首先我们创建一个目录

    2023年04月21日
    浏览(20)
  • 了解vite构建工具

    vite是一个新型的前端构建工具,他主要由两部分组成, 开发工具和构建指令 。随着前端应用越来越庞大复杂,例如上千个模块,基于js开发的工具(例如webpack、Rollup、Parcel)就会遇到性能瓶颈,而vite就是用来解决这个问题,他的与构建依赖的速度比js打包构建工具的速度快

    2024年02月01日
    浏览(22)
  • Vite好用的前端构建工具

    Vite是Vue的作者 尤雨溪 开发的 一种新型 前端构建工具 。 Vite在大型项目开发模式下,打包速度远高于webpack。 Vite只启动一台静态页面的服务器,不会打包全部项目文件代码,服务器根据客户端的请求加载不同的模块处理,实现 按需加载 。 而我们所熟知的webpack则是,一开始

    2024年02月12日
    浏览(29)
  • webpack、rollup、parcel 优势和劣势?

    结论先行: webpack 是 模块化构建工具,具有强大的 loader 和插件生态,适用于大型复杂项目的构建 ; rollup 适用于基础库的打包,功能没有webpack 强大 ; parcel 适用于简单的实验性项目,在公司真实项目一般不用 ; 1、Webpack webpack 适用于大型复杂的前端站点构建 ; webpack 具有

    2024年02月05日
    浏览(38)
  • Webpack和Rollup区别、使用场景、如何选择

    Webpack 和 Rollup 都是前端构建工具,但它们的设计理念、侧重点和适用场景有所不同: Webpack 设计理念与功能: Webpack 是一个全能型的模块打包工具,不仅支持 JavaScript 模块的打包,还能处理 CSS、HTML、图片等各种静态资源。 提供了丰富的Loader机制,可以转换非JavaScript资源(

    2024年02月20日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包