Vue 2 集成
本指南涵盖了将 @esmx/router 与 Vue 2.7+ 集成的全部内容。Vue 2.7 引入了内置的组合式 API 支持,@esmx/router-vue 的组合式函数依赖此特性。
需要 Vue 2.7+
@esmx/router-vue 需要 Vue 2.7 或更高版本。更早的 Vue 2 版本不支持组合式 API,因此不兼容。
安装
安装核心路由包和 Vue 集成包:
同一个 @esmx/router-vue 包同时适用于 Vue 2.7+ 和 Vue 3,它会自动检测 Vue 版本。
与 Vue 3 的差异
在开始之前,以下是与 Vue 3 集成的主要差异:
路由定义、组合式函数和组件(RouterView、RouterLink)完全相同。
分步设置
1. 定义路由
与 Vue 3 相同 —— 路由是框架无关的:
src/routes.ts
2. 创建应用工厂
与 Vue 3 的主要区别在于使用 new Vue() 而不是 createApp():
src/create-app.ts
与 Vue 3 的关键差异:
Vue.use(RouterPlugin)在 Vue 构造函数上调用,而不是在应用实例上。new Vue()替代createApp()/createSSRApp()。useProvideRouter(router)用法相同 —— 必须在setup()中调用。
3. 客户端入口
src/entry.client.ts
注意:Vue 2 使用 $mount() 而不是 mount()。
4. 服务端入口(SSR)
Vue 2 使用 vue-server-renderer 而不是 @vue/server-renderer:
src/entry.server.ts
5. Node 入口
使用 createRspackVue2App 而不是 createRspackVue3App:
src/entry.node.ts
在组件中使用路由
组合式 API(推荐)
Vue 2.7+ 支持使用组合式 API 的 <script setup>。组合式函数与 Vue 3 完全相同:
src/pages/UserProfile.vue
选项式 API
RouterPlugin 使 this.$router 和 this.$route 在所有组件中可用:
src/pages/About.vue
RouterView 和 RouterLink
在 Vue 2 和 Vue 3 中用法完全相同:
src/App.vue
RouterLink 在 Vue 2 和 Vue 3 中支持相同的属性:
to— 目标路由(字符串或对象)type— 导航类型('push'、'replace'、'pushWindow'等)activeClass— 路由匹配时的 CSS 类名exact— 匹配模式('include'、'exact'、'route')tag— 渲染的 HTML 标签(默认:'a')