Pinia 和 Vuex 最大的区别是什么?
1.去掉了mutation, pinia可直接修改state状态,去掉了commit,只有state,getter,action
2.Pinia原生支持TS, Vuex虽然提供了类型声明,因此可以使用 TypeScript 定义 store,并且不需要任何特殊的 TypeScript 配置。但是,如果你使用 TypeScript 来编写 Vue 组件,则需要遵循一些步骤才能正确地为 store 提供类型声明。
3.Pinia 没有 modules 嵌套的概念,每个 Store 都是独立的,按需引入,支持代码分割。
4.代码体量更小, 约1kb
webpack和vite的区别
Webpack:打包优先(Bundle-based)
- 原理:Webpack 是“打包器”。在开发环境启动时,它必须先递归分析所有依赖,把 JS、CSS、图片等资源全部打包成一个或多个 Bundle 文件,然后才能启动开发服务器。
- 痛点:项目越大,依赖越多,打包时间越长。哪怕你只改了一行代码,Webpack 可能也需要重新构建整个依赖图(虽然有缓存,但还是很慢)
Vite:原生 ESM 优先(Native ESM)
-
原理:Vite 利用了现代浏览器原生支持 ES Modules (ESM) 的特性。
- 开发环境:Vite 不打包。它直接启动服务器,浏览器请求什么文件,它就即时编译(使用 esbuild)并返回什么文件。
- 生产环境:Vite 使用 Rollup 进行打包,因为 Rollup 打包出来的产物更轻量,Tree-shaking 更彻底。
-
优势:启动速度与项目大小无关。哪怕你有 1000 个文件,Vite 也是瞬间启动,因为它只处理当前页面用到的模块。