vue-router

38 阅读2分钟

一、HTML示例

<script src="https://unpkg.com/vue@3"></script>
<script src="https://unpkg.com/vue-router@4"></script>

<div id="app">
  <h1>Hello App!</h1>
    <p>
    <!--使用 router-link 组件进行导航 -->
    <!--通过传递 `to` 来指定链接 -->
    <!--`<router-link>` 将呈现一个带有正确 `href` 属性的 `<a>` 标签-->
    <router-link to="/">Go to Home</router-link>
    <router-link to="/about">Go to About</router-link>
    </p>
    <!-- 路由出口 -->
    <!-- 路由匹配到的组件将渲染在这里 -->
    <router-view></router-view>
</div>
  • <router-link></router-link> ****作用相当于 <a></a> 标签 href属性 使用 to来代替
  • <router-view></router-view> 将预设的页面展示到这里

二、JS示例

声明一个名为routes的哈希表,将路径和其对应的组件声明到这个hash 表中,

// 1. 定义路由组件.
// 也可以从其他文件导入
const Home = { template: '<div>Home</div>' }
const About = { template: '<div>About</div>' }

// 2. 定义一些路由
// 每个路由都需要映射到一个组件。
// 我们后面再讨论嵌套路由。
const routes = [
  { path: '/', component: Home },
  { path: '/about', component: About },
]

// 3. 创建路由实例并传递 `routes` 配置
// 你可以在这里输入更多的配置,但我们在这里
// 暂时保持简单
const router = VueRouter.createRouter({
  // 4. 内部提供了 history 模式的实现。为了简单起见,我们在这里使用 hash 模式。
  history: VueRouter.createWebHashHistory(),
  routes, // `routes: routes` 的缩写
})

// 5. 创建并挂载根实例
const app = Vue.createApp({})
//确保 _use_ 路由实例使
//整个应用支持路由。
app.use(router)

app.mount('#app')

// 现在,应用已经启动了!

三、命名路由

可以为任何路由提供 name(name就是路径的别名)这有以下优点:

  • 没有硬编码的 URL
  • params 的自动编码/解码。
  • 防止你在 url 中出现打字错误。
  • 绕过路径排序(如显示一个)

四、param 和 query 的区别:

  • 使用params传参只能用name来引入路由,即push里面只能是name:'xxx',不能是path:'/xxx',因为params只能用name来引入路由,如果这里写成了path,接收参数页面会是undefined。query name 和 path 都支持。
  • query 更类似于get请求,url会加上参数信息,而param类似于post请求,url并不会携带参数信息。
//定义路由 router/index.js
{
  path: '/edit/notebook/:notebook/note/:note',
    name: 'Edit',
    component: Edit
},

//使用方法
this.$router.push({
  name: "Edit",
  params: { notebook: this.selected, note: this.noteName },
});
this.$router.push({name:'xxx',query:{key:value}})

五、不使用 router-link 重定向

  • 在组件内部如果需要不使用 <router-link> 进行页面跳转 需要使用 this.$router('路径')
this.$router('path')