vite2 + vue3 中 vue-router4 基本使用(路由基本配置)

VueRouter官网 https://router.vuejs.org/zh/installation.html#%E7%9B%B4%E6%8E%A5%E4%B8%8B%E8%BD%BD-cdn

1.安装

npm install vue-router@4 

2. vite.config.js(配置别名)

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
const path = require('path')

// element -plus 配置 按需导入-> 自动导入
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
  ],
  // 别名
  resolve: {
    alias: {
      //设置别名
      '@': path.resolve(__dirname, './src'),
      '@assets': path.resolve(__dirname, './src/assets')
    }
  }
})

3. 在src下新建 router/index.js

import { createRouter, createWebHashHistory } from "vue-router"

const routes = [
  {
    path: '/',
    name: "Home",
    component: () => import('@/views/Home.vue'),
    redirect: { name: 'index' },
    meta: { title: '主页' },
    children: [
      {
        path: 'index',
        name: 'index',
        meta: { title: '首页' },
        component: () => import('@/views/pages/index/index.vue')
      }
    ]
  }
]


const router = createRouter({
  history: createWebHashHistory(),
  routes
})

export default router

4. main.js 

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'

createApp(App).use(router).mount('#app')

 注意:App.vue   不要忘记 <router-view></router-view>

5.页面之间的跳转,传参,接受参数

在vue2中我们使用this.$router进行页面的跳转,this.$route 接受参数。

vue3中没有 this 这个东西了  提供了 useRouter  和  useRoute 两种方式

 //页面跳转

import { useRouter } from 'vue-router'

export default {
  setup(props,context) {
    const router = useRouter()
    // 切换页面
    const menuClick = (val) => {
      router.replace({
        path: val,
        query: {
          name:'xxx',
          id: '---'
        }
      })
    }

    return {
      menuClick
    }
  }
}

接受参数: 

import { onMounted } from "vue";
import { useRoute } from "vue-router";

export default {
  setup(props, context) {
    const route = useRoute();
    console.log(route.query.id);  //通过query 传递过来的参数
    console.log(route.query.name); //通过query 传递过来的参数

    onMounted(() => {
      console.log(document.getElementById("div"), "dom元素");
    });
  },
};
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会说法语的猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值