vite与webpack

470 阅读1分钟

打包工具作用

资源合并(http请求多,网页性能差),打包(模块化开发规范多如commanjs,浏览器不能直接运行),压缩,兼容性

vite vs vue-cli(webpack)

  1. vue 在开发模式下不需要打包可以直接运行,使用的是ES6模块加载机制
  2. vue-cli下需要对项目进行打包再运行
  3. vite基于缓存的热更新
  4. vue-cli基于webpack的热更新

即vite的特点为快速启动,模块热更新,按需编译

运行机制

vue-cli(webpack)

graph TD
entry--> route1--> moudle1--> bundle
route1--> moudle2--> bundle
route1--> moudle3--> bundle
entry--> route2--> moudle3--> bundle
route2--> moudle4--> bundle
entry--> route... --> moudle... --> bundle
bundle--> serverReady --> chrome

运行过程:模块打包成一个bundle,将打包后的东西放到server,到浏览器再从server拿东西

如果改动了一个或者多个文件,将会重新去打包,当然,它不会傻傻的打包全部文件,会根据路由解析路径差异化打包,但是它确实需要重新打包,并替换内存中的bundle,浏览器才能更新。

vite

graph TD
serverReady --> index.html--> main.js--> chrome
main.js--> app.vue--> chrome
app.vue--> components.vue--> chrome
app.vue--> moudle... --> chrome
chrome --> serverReady

vite会先启动一个服务器,浏览器请求的时候,服务器会将我们写的代码编译一下直接返回

  • vue文件,编译为纯js返回,告诉浏览器这是js的文件类型
  • node_modules文件:根据import重写返回路径,读取node_modules相应文件返回

展望

目前大多数高版本浏览器支持ESmoudle规范,使用ESmoudle规范开发,各种各样的模块就不需要打包就可以运行起来,即生产环境也不需要打包

既然vite不打包,开发时会不会对浏览器产生阻塞,vite的server配置里面可以选择开启http2,解决阻塞问题