首页 > 其他分享 >Vite 与 Webpack的区别

Vite 与 Webpack的区别

时间:2023-02-17 19:22:52浏览次数:45  
标签:浏览器 区别 webpack Webpack Vite 模块 vite

1.什么是Vite?

  Vite是尤雨溪在开发vue3的时候开发的一个web开发构建工具。

  极速的服务启动: 使用原生 ESM 文件,无需打包!
  轻量快速的热重载:无论应用程序大小如何,都始终极快的模块热重载(HMR)
  丰富的功能: 对 TypeScript、JSX、CSS 等支持开箱即用。

  Vite使用简单,只需执行初始化命令,就可以可得到一个预设好的开发环境,开箱即可获得一堆功能,包括:css预处理、html预处理、异步加载、分包、压缩、HMR等。使用复杂度介于Paracel和Webpack的中间,只是暴露了极少数的配置项和plugin接口,既不会像Paracel一样配置不灵活,又不会像Webpack一样需要了解庞大的loader、plugin生态。灵活适中,复杂度适中

2.相比Webpack,Vite有什么优势?

  a. vite开发服务器启动速度比webpack快。

    webpack会先打包,然后启动开发服务器,请求服务器时直接给予打包结果

    由于vite启动的时候不需要打包 ,也就不需要分析模块依赖,编译,使用原生ES模块导入方式,所以启动速度非常快;

    vite采用的是按需动态编译的模式,当浏览器请求需要的模块时,再对模块进行编译,这种处理模式极大的缩短了编译时间,当项目越大,文件越多,vite的开发时优势越明显

  b. vite的热更新比webpack快。vite在HRM方面(HMR是指当你对代码进行修改并保存后,webpack对代码重新打包,并将新的模块发送到浏览器端,浏览器通过替换旧的模块,在不刷新浏览器的前提下,就能够对应用进行更新),当改动了一个模块后,vite仅需让浏览器重新请求该模块即可,不像webpack那样需要把该模块的相关依赖模块全部编译一次,效率更高。

  c.由于现代浏览器本身就支持ES Module,会自动向依赖的Module发出请求。vite充分利用了这点,将开发环境下的模块文件,就作为浏览器要执行的文件,而不是像webpack那样进行打包合并

  d. vite 使用esbuild(Go编写)预构建依赖,比webpack的nodejs,快10-100倍  

3.从Webpack方面能不能做一些编译构建方面的优化

  a. 多入口的情况下,使用CommonsChunkPlugin来提取公共代码

  b. 通过externals配置来提取常用库

  c. 使用Happypack实现多线程加速编译

  d. 使用Tree-shaking和Scope Hoisting来剔除多余代码

  e. 使用 webpack-uglify-parallel来提升uglifyPlugin的压缩速度。原理上 webpack-uglify-parallel 采⽤了多核并⾏压缩来提升压缩速度

4.vite的劣势:

  a. 生态不及webpack,加载器、插件不够丰富

  b. 打包到生产环境时,vite使用了传统的rollup(也可以自己手动安装webpack来)进行打包

  c.项目的开发浏览器要支持ESmodule, 而且不能识别CommonJS语法

 

标签:浏览器,区别,webpack,Webpack,Vite,模块,vite
From: https://www.cnblogs.com/felix-felix/p/17131335.html

相关文章

  • powershell和cmd区别是什么
    前言powershell和cmd区别:1、CMD写的BAT脚本我们看作是面向过程的,而PowerShell则是面向对象的,是一种站在使用者的角度进行脚本的编写;2、CMD只能执行基本的任务,PowerShell......
  • Vite的简单原理
    请说说Vite的原理Vite有如下特点:快速的冷启动:NoBundle+esbuild预构建即时的模块热更新:基于ESM的HMR,同时利用浏览器缓存策略提升速度真正的按需加载:利......
  • 主键、唯一索引、聚集索引、非聚集索引,你真知道他们的区别么?
    【讲故事】近端时间一直在做一些数据库查询的工作,主要是根据表中的“日期”与“产品名”两个字段为条件在对表进行相关查询。但当表数据量达到3000万以上时,发现查询速度......
  • map数据类型,与object 类型的区别
    https://www.cnblogs.com/ht955/p/14170885.htmlhttps://www.cnblogs.com/Hijacku/p/16457600.htmlMAP数据类型是一个类似于对象的数据类型,大型项目中会经常使用。  ......
  • 微前端之qiankun 分别引入两种子应用 -- react && vue + vite
    搭建主应用主应用不限技术栈,只需要提供一个容器DOM,然后注册微应用并start即可。1、下载项目//TSnpxcreate-react-appqk-main--templatetypescript//JSnpxc......
  • Vue CLI 2内置框架webpack框架结构解析
    目前Vue已经到3.X版本,相应的VueCLI也已经是VueCLI3版本,创建命令使用vuecreate,如果要用2.X版的vueinit命令,需要全局安装一个桥接工具:npminstall-g@vue/cli-init创......
  • 高企和科技型中小企业有何区别
    对于企业来说,成功申报高新技术企业和科技型中小型企业都可以享受国家的补贴政策和税收上的优惠等好处,那么,你知道他们有什么区别吗?具体都有些什么好处呢?高新技术企业知识......
  • vue2和vue3的响应式区别
    vue响应式依赖的函数vue2vue2中依赖es5的Object.defineProperty属性,该方法可以在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回这个对象。监听的是对象......
  • 2023前端开发最新面试题收集-Webpack篇
    webpack整理谈谈webpack的理解webpack是一个静态模块打包器。当webpack处理应用程序时,会递归构建一个依赖关系图,其中包括应用程序所需的所有模块,最后将这些模块打包成一......
  • 作用域和链接之间的区别
    作用域和链接之间的区别问:“作用域”和“链接”之间的区别到底是什么?答:作用域是为编译器服务的,而链接则是为链接器服务的。编译器用标识符的作用域来确定在文件的给定位......