Webpack和Vite的区别

       webpack会先打包,然后启动开发服务器,请求服务器时直接给予打包结果。 而vite是直接启动开发服务器,请求哪个模块再对该模块进行实时编译。 由于现代浏览器本身就支持ES Module,会自动向依赖的Module发出请求。 vite充分利用这一点,将开发环境下的模块文件,就作为浏览器要执行的文件,而不是像webpack那样进行打包合并。
 
      Vite 是基于 native ES module —— 浏览器厂商的不懈努力,现代浏览器基本已经全部支持了import/export 语法了。
      在Vite中,启动服务器时,是不需要提交编译文件,而是在浏览器请求对应URL时,再提供文件,实施了真正的路由懒加载,这个比起Webpack就要节省了不少时间。
      而在工程中不是所有的引用模块都是ES写法,可能是CommonJS 和 UMD 、AMD 等等,这个时候Vite 会进行预构建,将其转换为ESM模块,以支持Vite。并且将有许多内部模块的ESM依赖转换为单个模块,以提高后续页面加载性能。
       对于JSX、或者TS 等需要编译的文件,Vite是用esbuild来进行编译的,不同与Webpack的整体编译,Vite是在浏览器请求时,才对文件进行编译,然后提供给浏览器。因为esbuild编译够快,这种每次页面加载都进行编译的其实是不会影响加速速度的。

       尽管webpack有大量的插件和社区的支持,但是从很多方面来说,它现在确实算不上最好的选择。vite可以有效的解决上述的问题,不仅配置和Parcel一样简单,还可以使用ESM。