vite与vue的cli的区别

Vite 和 Vue CLI(基于 Webpack)确实都能提供本地开发服务器(dev server),但它们的核心设计理念、构建机制和性能表现有本质区别。


相同点(你感受到的"差不多")

功能 Vite Vue CLI
启动本地开发服务器 ✅ vite ✅ vue-cli-service serve
热更新(HMR) ✅ ✅
支持 Vue 单文件组件(.vue) ✅ ✅
内置 Babel / TypeScript 支持 ✅ ✅

所以日常开发体验上,命令行操作和基本功能确实"看起来差不多"。


核心区别(本质不同)

维度 Vite Vue CLI (Webpack)
底层原理 原生 ES 模块(ESM) + 开发时按需编译 打包整个应用 → 启动服务
启动速度 ⚡ 极快(秒开,与项目大小无关) 🐢 慢(项目越大越慢,需打包所有依赖)
热更新(HMR) ⚡ 瞬间更新(只更新改的文件) 🐢 较慢(需重新构建模块依赖图)
依赖预构建 用 esbuild(Go 编写,超快)预构建 npm 包 用 Webpack 打包所有依赖
生产构建 默认用 Rollup 用 Webpack
配置方式 vite.config.js(更简洁) vue.config.js(Webpack 封装)
适用范围 不仅限 Vue!支持 React、Svelte、Lit 等 专为 Vue 设计(虽可配其他,但非主流)

举个形象的例子

Vue CLI(Webpack)像"盖楼前先造完整模型"
  • 启动时:把所有代码 + 依赖 全部打包成一个 bundle
  • 改一行代码:重新分析整个依赖图 → 重新打包受影响部分
  • 项目越大,等待越久
Vite 像"边盖边用,即拿即用"
  • 启动时:不打包 !直接让浏览器通过 <script type="module"> 加载源文件
  • 依赖(node_modules)用 esbuild 提前转成 ESM 格式(一次性的)
  • 改一行代码:浏览器直接拉取这个新文件,无需打包
  • 所以无论项目多大,启动都是秒级!

💡 Vite 的口号就是:No bundling during development!


性能对比(实测数据)

项目规模 Vue CLI 启动时间 Vite 启动时间
小型(10个组件) ~2s ~300ms
中型(50+组件 + 路由 + 状态管理) ~8s ~400ms
大型(100+组件) ~20s+ ~500ms

Vite 的优势随项目增大而爆炸式放大


那为什么你会觉得"差不多"?

  1. 你用的是小项目 → 两者速度差异不明显

  2. 日常操作命令相似 :

    bash 复制代码
    # Vue CLI
    vue create my-app
    cd my-app
    npm run serve
    
    # Vite
    npm create vue@latest  # 或 npm init vite
    cd my-app
    npm run dev
  3. 最终产出都是运行在浏览器里的 Vue 应用 → 用户无感


结论:不只是"本地服务",而是开发范式的升级

Vue CLI Vite
定位 Vue 官方脚手架(基于 Webpack) 下一代前端构建工具(框架无关)
重点 "开箱即用的 Vue 工程方案" "极致的开发体验 + 未来标准(ESM)"
适合 老项目维护、需要 Webpack 深度定制 新项目首选、追求开发效率

📌 官方态度 :

Vue 3 官方文档默认推荐 Vite,Vue CLI 已进入维护模式(不再主推)。


💡 建议

  • 新项目一律用 Vite (npm create vue@latest)
  • 老 Vue 2 项目 可继续用 Vue CLI
  • 如果想深入理解,试试在大型项目中分别启动两者 ------ 你会立刻感受到"天壤之别"

Vite 不是"另一个本地服务器",而是 用现代浏览器能力重构了前端开发工作流。

相关推荐
吠品7 小时前
箭头函数为什么不能 new
开发语言·javascript·原型模式
liangshanbo12157 小时前
面试题:React.memo 和 useMemo 的区别
前端·react.js·前端框架
苹果二7 小时前
使用Vue的指南
前端·javascript·vue.js
害人终害己8 小时前
‘vue-cli-service‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
前端·javascript·vue.js
被摘下的星星8 小时前
CSS 基础说明
前端·css
To_OC18 小时前
从一头雾水到跑通全流程:我用一个周末啃透了JWT登录鉴权
前端·后端·http
excel19 小时前
研究 Vue 3 源码的收获
前端·vue.js
可乐鸡翅yeah_21 小时前
业务中 M3U8 水印相关坑,硬水印和动态水印区别
前端·网络·数据库·ffmpeg·m3u8在线
lerhxx21 小时前
AI 应用如何高效优雅地恢复中断?—— "连接解耦 + 状态持久化"
前端·javascript
计算机魔术师1 天前
METR 演示 AI 智能体如何篡改 Inspect 评估记录以掩盖不当行为
前端