标准答案

  1. @vue/compat 是 Vue 3 的迁移构建,可以提供部分 Vue 2 兼容行为,并对已变更或废弃的能力给出警告。
  2. 它适合大型 Vue 2 项目分阶段迁移:先让项目跑起来,再按警告逐步修复组件、路由、状态管理和模板语法。
  3. 依赖 Vue 2 私有 API、旧组件库内部实现、IE11 支持、自定义 SSR 或未升级插件的问题,不能只靠 Compat Build 解决。
  4. 迁移时要同步评估 vue-router、Vuex/Pinia、组件库、构建工具、TypeScript、测试工具和浏览器支持策略。
  5. 目标应该是最终移除 Compat Build,切到标准 Vue 3 构建,而不是长期把兼容层当生产架构。

题目解析

这道题要避免把 Compat Build 讲成一键迁移工具。它更像迁移雷达和过渡运行时。

Vue 官方迁移指南也明确指出,迁移构建主要覆盖公开的 Vue 2 API 和行为,依赖未文档化行为的项目仍需要重构。

好的迁移方案通常先盘点依赖和风险,再搭迁移分支,按 warning、页面优先级和测试覆盖逐步推进。

代码示例

下面是迁移构建的典型入口:把 vue 指向 @vue/compat,并打开 compat 配置。

TypeScript
// vite.config.ts
export default defineConfig({
  resolve: {
    alias: {
      vue: '@vue/compat'
    }
  },
  plugins: [
    vue({
      template: {
        compilerOptions: {
          compatConfig: {
            MODE: 2
          }
        }
      }
    })
  ]
})

常见误区

  • 把 Compat Build 当成长期方案,不计划清理警告和切换标准 Vue 3。
  • 只升级 vue 包,不检查 vue-router、Vuex、组件库、构建工具和测试工具。
  • 项目依赖旧组件库或私有 API,却期待兼容层完全兜底。

作者信息