webpack + Vite

Webpack 是一个前端模块打包工具(Module Bundler),它的核心作用是把多个分散的代码文件打包成一个(或多个)浏览器能直接运行的文件 。

你的项目代码:

├── src/

│ ├── main.js ← 入口文件

│ ├── utils/

│ │ ├── date.js ← 工具函数

│ │ └── format.js

│ ├── components/

│ │ ├── Button.vue ← Vue 组件

│ │ └── Table.vue

│ └── assets/

│ ├── logo.png ← 图片

│ └── style.scss ← SCSS 样式

浏览器报错 ❌:

  • 不支持 import/export 语法
  • 不支持 .vue 文件
  • 不支持 .scss 文件
  • 大量 HTTP 请求(性能差)

使用 Webpack 打包后:

Webpack 处理后:

├── dist/

│ ├── main.js ← 所有 JS 合并成一个文件

│ ├── main.css ← 所有样式提取合并

│ └── assets/

│ └── logo.png ← 图片处理后的版本

浏览器正常 ✅

Webpack 的核心功能

功能 说明

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

模块打包 把多个 JS/CSS/图片等文件打包成少量文件

Loader 转换非 JS 文件(如 vue-loader 处理 .vue,sass-loader 处理 .scss)

Plugin 执行各种任务(压缩、提取 CSS、生成 HTML 等)

代码分割 按需加载(懒加载),减少首屏加载时间

开发服务器 提供热更新(HMR),修改代码自动刷新浏览器

1. 什么是 Vite?

Vite 是由 Evan You(Vue.js 的作者)开发的一个构建工具,目标是为现代前端开发提供更好的开发体验和更快的构建速度。Vite 采用了一些创新的思路,尤其是在 开发模式下,通过利用浏览器的原生模块支持来显著提升开发速度。

开发体验:Vite 使用原生 ES 模块,在开发时不需要打包,只需要启动一个开发服务器并通过 HTTP 请求直接加载模块。这样可以避免 Webpack 在开发时的重打包开销。

构建速度:Vite 使用了现代浏览器的特性(如 ES 模块和动态导入)来避免传统构建工具中的繁重工作,尤其在冷启动和热更新(HMR)方面表现得尤为突出。

构建流程:Vite 在生产环境下会使用 Rollup 来进行打包,Rollup 是一个优化过的 JavaScript 打包工具,专注于高效的树摇(tree-shaking)和按需加载。

特性 Vite Webpack
启动速度 非常快,采用原生 ES 模块,不需要打包过程,直接用浏览器加载模块 较慢,因为需要解析和打包整个项目,启动时会较慢
热更新 (HMR) 非常快速,只有受影响的模块会重新加载 较慢,尤其是在大型项目中,每次 HMR 都可能触发大量的重新构建
打包工具 生产环境下使用 Rollup 打包 内置了自己强大的打包引擎
开发体验 由于无须每次都打包,开发时响应非常迅速,体验更好 由于需要在开发时进行打包,开发体验相对较慢
配置复杂度 配置简单,开箱即用,默认配置即能满足大多数项目需求 配置灵活但复杂,需要手动设置很多细节
支持的功能 开箱即用,支持 Vue、React 等主流框架,支持 TypeScript、JSX 等 功能非常强大,支持自定义插件、loader、代码分割等
生态系统 生态相对较新,插件支持逐步完善 生态成熟,插件和社区支持非常强大
性能 对开发模式有显著性能优化,尤其适用于大规模项目 生产模式性能较强,但开发模式下性能较差
树摇(Tree Shaking) 内置 Rollup 支持,高效的树摇技术 内置树摇支持,但配置复杂,性能上可能不如 Rollup
相关推荐
YIAN3 分钟前
RAG 学到最后,我真正学会的不是“检索”,而是让系统知道自己缺什么
langchain·node.js·llm
用户11977079480736 分钟前
GitHub 电商开源项目分享:用 sharp 批量出饰品主图,试了裁剪、细节图和色彩配置文件三个坑
前端·node.js
deli00711 分钟前
地图定位为什么偏了 500 米?GPS 与火星坐标实测
前端
TK泰妞13 分钟前
节日促销前,TikTok 商品视频应该提前准备什么?
前端·人工智能·节日
donecoding19 分钟前
pnpm 配好了,为什么执行的还是另一份?命令入口与运行时排查
node.js·前端工程化
江屿风22 分钟前
【Plain Language Large Model】【从浏览器到全栈:一课精通Node.js三剑客】流食般投喂
笔记·前端框架·npm·node.js·js·npx
CCIE-Yasuo24 分钟前
网络安全-学习web开发-列表、标签
前端·学习·web安全
小大宇28 分钟前
Vue知识点-ElementPlus-06 单选+多选+下拉+日期选择
前端·vue.js·elementui
用户114818678948430 分钟前
Nuxt 3 学习版 Demo:跟着做一遍,从跑起来到自己会改
前端
hiahiahia1231 小时前
Streaming Model Output
开发语言·前端