vite.config.js - 完整的 Vite 配置,包含 Vue 插件、别名、开发服务器设置index.html - Vite 入口点,替代 public/index.htmlvue.config.js - 不再需要@vue/cli-*, @vue/test-utils, cross-env)vite@5.4.21, @vitejs/plugin-vue@4.5.0)less 移至 devDependenciesdev, build, preview).yarnrc.yml 为 node-modules linker.vue 扩展名到动态导入:src/router/redirect.js - 404.vue, 401.vue, coding.vuesrc/router/index.js - Index.vuesrc/views/Index.vue - RouterLoading 导入/lib/ 改为 /es/manualChunks 配置分离主要库:vendor_element-plus - Element Plus UI 库vendor_vue - Vue 框架vendor_drag - 拖拽库 (sortablejs, vue-draggable)vendor_signalr - SignalR 实时通讯vendor_misc - 其他第三方库vendor_echarts_lazy - ECharts 图表库 (lazy)vendor_wangeditor_lazy - 王文编辑器 (lazy)import())src/views/charts/chart.vue - 按需加载src/views/charts/formChart.vue - 按需加载src/views/charts/bigdata.vue - 按需加载✅ WangEditor - 转换为动态导入 (import())
src/components/editor/VolWangEditor.vue - 按需加载| 文件名 | 大小 (KB) | Gzip (KB) | 说明 |
|---|---|---|---|
| vendor_element-plus | 919.08 | 287 | UI 框架 |
| vendor_echarts_lazy | 808.19 | 272 | 📈 图表库 (延迟加载) |
| vendor_misc | 341.56 | 121 | 杂项库 |
| vendor_wangeditor_lazy | 260.86 | 79 | 📝 编辑器 (延迟加载) |
| vendor_vue | 129.49 | 50 | Vue 框架 |
| index (主文件) | 110.19 | 33 | 应用逻辑 |
| vendor_signalr | 47.07 | 13 | 实时通讯 |
| vendor_drag | 40.96 | 15 | 拖拽功能 |
总体大小: ~1.6 MB (未压缩), ~530 KB (gzip)
yarn serve
# Vite dev server 运行于 http://localhost:8080/
# 支持 HMR (Hot Module Replacement)
yarn build
# 生成优化后的 dist/ 目录
# 包含所有分离的 vendor chunks 和延迟加载脚本
yarn preview
# 本地预览生产构建结果
vite.config.js - Vite 主配置index.html - HTML 入口 (根目录).yarnrc.yml - Yarn 配置src/
├── main.js (更新导入)
├── App.vue (Element Plus 路径修复)
├── router/
│ ├── index.js (添加 .vue 扩展)
│ ├── redirect.js (添加 .vue 扩展)
│ └── charts.js (动态导入已就位)
├── views/
│ ├── Index.vue (导入修复)
│ ├── charts/
│ │ ├── chart.vue (✨ ECharts 延迟加载)
│ │ ├── formChart.vue (✨ ECharts 延迟加载)
│ │ └── bigdata.vue (✨ ECharts 延迟加载)
└── components/
└── editor/
└── VolWangEditor.vue (✨ WangEditor 延迟加载)
package.json (依赖更新)
vue.config.js - 已迁移至 vite.config.jsserver: {
port: 8080,
hmr: { overlay: false }
}
build: {
sourcemap: false,
chunkSizeWarningLimit: 1200,
rollupOptions: {
output: {
manualChunks: {
// 自动分离大型库到单独的 chunks
}
}
}
}
resolve: {
alias: {
'@': path.resolve(__dirname, 'src')
}
}
/*#__PURE__*/ 注释>>> 和 /deep/,建议改为 :deep()vm 模块为浏览器兼容性外部化<!-- 推荐: 使用 :deep() 代替 >>> -->
<style scoped>
.parent ::v-deep(.child) { ... }
/* 改为 */
.parent :deep(.child) { ... }
</style>
yarn dev)yarn build)yarn preview)Webpack → Vite 迁移已成功完成!项目现在享受以下优势:
✨ 更快的开发体验
- 毫秒级 HMR
- 极快的冷启动
⚡ 优化的生产构建
- 精细的代码分割
- 延迟加载重型库
- 减少初始包体积
🚀 现代工具链
- 原生 ES 模块支持
- 预构建依赖缓存
- 开箱即用的 TypeScript 支持
迁移完成日期: 2024
最后更新: 延迟加载实现完成