首页 > 其他分享 >vue-router学习笔记

vue-router学习笔记

时间:2023-03-29 13:46:49浏览次数:43  
标签:vue const 笔记 User path router 路由 user

入门

  • router-link // Go to Home
  • router-view //router-view 将显示与 url 对应的组件。

动态路由匹配

带参数的动态路由匹配($route.params)

const User = {
  template: '<div>User</div>',
}

// 这些都会传递给 `createRouter`
const routes = [
  // 动态字段以冒号开始
  { path: '/users/:id', component: User },
]
const User = {
  template: '<div>User {{ $route.params.id }}</div>',
}

响应路由参数的变化(看不懂之后补充)

捕获所有路由或 404 Not found 路由(正则表达式)(看不懂之后补充)

嵌套路由

<div id="app">
  <router-view></router-view>
</div>
const User = {
  template: `
    <div class="user">
      <h2>User {{ $route.params.id }}</h2>
      <router-view></router-view>
    </div>
  `,
}
const routes = [
  {
    path: '/user/:id',
    component: User,
    children: [
      {
        // 当 /user/:id/profile 匹配成功
        // UserProfile 将被渲染到 User 的 <router-view> 内部
        path: 'profile',
        component: UserProfile,
      },
      {
        // 当 /user/:id/posts 匹配成功
        // UserPosts 将被渲染到 User 的 <router-view> 内部
        path: 'posts',
        component: UserPosts,
      },
    ],
  },
]

嵌套的命名路由(不懂)

const routes = [
  {
    path: '/user/:id',
    component: User,
    // 请注意,只有子路由具有名称
    children: [{ path: '', name: 'user', component: UserHome }],
  },
]

编程式导航

导航到不同的位置(向 history 栈添加一个新的记录,所以,当用户点击浏览器后退按钮时,会回到之前的 URL。)

编程式: router.push(...)
声明式:

// 字符串路径
router.push('/users/eduardo')

// 带有路径的对象
router.push({ path: '/users/eduardo' })

// 命名的路由,并加上参数,让路由建立 url
router.push({ name: 'user', params: { username: 'eduardo' } })

// 带查询参数,结果是 /register?plan=private
router.push({ path: '/register', query: { plan: 'private' } })

// 带 hash,结果是 /about#team
router.push({ path: '/about', hash: '#team' })

如果提供了 path,params 会被忽略

const username = 'eduardo'
// 我们可以手动建立 url,但我们必须自己处理编码
router.push(`/user/${username}`) // -> /user/eduardo
// 同样
router.push({ path: `/user/${username}` }) // -> /user/eduardo
// 如果可能的话,使用 `name` 和 `params` 从自动 URL 编码中获益
router.push({ name: 'user', params: { username } }) // -> /user/eduardo
// `params` 不能与 `path` 一起使用
router.push({ path: '/user', params: { username } }) // -> /user

替换当前位置(它在导航时不会向 history 添加新记录)

声明式:
编程式: router.replace(...)

横跨历史

router.go 表示在历史堆栈中前进或后退多少步

// 向前移动一条记录,与 router.forward() 相同
router.go(1)

// 返回一条记录,与 router.back() 相同
router.go(-1)

// 前进 3 条记录
router.go(3)

// 如果没有那么多记录,静默失败
router.go(-100)
router.go(100)

篡改历史

router.push router.replace router.go
window.history.pushState window.history.replaceState window.history.go

命名路由

const routes = [
  {
    path: '/user/:username',
    name: 'user',
    component: User,
  },
]
<router-link :to="{ name: 'user', params: { username: 'erina' }}">
  User
</router-link>
router.push({ name: 'user', params: { username: 'erina' } })

命名视图

<router-view class="view left-sidebar" name="LeftSidebar"></router-view>
<router-view class="view main-content"></router-view>
<router-view class="view right-sidebar" name="RightSidebar"></router-view>
const router = createRouter({
  history: createWebHashHistory(),
  routes: [
    {
      path: '/',
      components: {
        default: Home,
        // LeftSidebar: LeftSidebar 的缩写
        LeftSidebar,
        // 它们与 `<router-view>` 上的 `name` 属性匹配
        RightSidebar,
      },
    },
  ],
})

嵌套命名视图

<div>
  <h1>User Settings</h1>
  <NavBar />
  <router-view />
  <router-view name="helper" />
</div>
{
  path: '/settings',
  // 你也可以在顶级路由就配置命名视图
  component: UserSettings,
  children: [{
    path: 'emails',
    component: UserEmailsSubscriptions
  }, {
    path: 'profile',
    components: {
      default: UserProfile,
      helper: UserProfilePreview
    }
  }]
}

router-view 中name的名字要和路由配置中的键名一致

重定向

//第一种
const routes = [{ path: '/home', redirect: '/' }]
//第二种
const routes = [{ path: '/home', redirect: { name: 'homepage' } }]
//第三种
const routes = [
  {
    // /search/screens -> /search?q=screens
    path: '/search/:searchText',
    redirect: to => {
      // 方法接收目标路由作为参数
      // return 重定向的字符串路径/路径对象
      return { path: '/search', query: { q: to.params.searchText } }
    },
  },
  {
    path: '/search',
    // ...
  },
]

相对重定向

const routes = [
  {
    // 将总是把/users/123/posts重定向到/users/123/profile。
    path: '/users/:id/posts',
    redirect: to => {
      // 该函数接收目标路由作为参数
      // 相对位置不以`/`开头
      // 或 { path: 'profile'}
      return 'profile'
    },
  },
]

别名(看不懂稍后再补充)

路由组件传参 (看不懂稍后再补充)

标签:vue,const,笔记,User,path,router,路由,user
From: https://www.cnblogs.com/hxy--Tina/p/17101426.html

相关文章

  • vue全家桶进阶之路24:Mock
    Mock是一个JavaScript库,用于生成随机数据或模拟HTTP请求响应,用于前端开发中的单元测试、功能测试、集成测试等场景。Mock可以生成各种类型的数据,包括字符串、数字、......
  • AutoEmbedding论文阅读笔记
    问题背景目前推荐系统中,在特征维度上低频特征和高频特征的维度是通过遍历mask特征获得到的auc衰减衡量特征对模型的重要度来决定的.如果想提升模型效果,在field层面上......
  • Vue.js 路由的query参数
    视频4.路由的query参数传递参数<!--跳转并携带query参数,to的字符串写法--><router-link:to="/home/message/detail?id=666&title=你好">跳转</router-link> ......
  • Vue2使用setup、ref、reactive等Vue3的组合式api
    有些同学想在当前项目中体验Vue3组合式api,setup、ref、reactive等,而且一步就可以升级到Vue3,但是vue确实2.x版本,不改变当前版本怎么办呢?vue2.7.0开始自带composition-api可......
  • [Volo.Abp升级笔记]使用旧版Api规则替换RESTful Api以兼容老程序
    @目录原理分析开始改造更换基类型重写接口替换默认规则在微服务架构中的问题Volo.Abp配置应用层自动生成Controller,增删查改服务(CrudAppService)将会以RESTfulApi的方式......
  • vue动态切换组件
    多个组件挂在到同一个组件上,通过参数进行动态切换一、实现方式<component:is="componentName"></component> 二、示例importPage1from'./Page1'importPage2......
  • nginx配置vue打包npm build的静态页面
    nginx配置vue项目server{listen8081;server_name10.8.8.8;indexindex.html;root/home/www/crm/vue/dist;#SSL-STARTSSL相关配置,请勿删......
  • C++11 笔记
    1、可以利用C++11friend友元新特性创建可靠的测试版本。 2、移动语义 移动构造函数 ----  https://blog.csdn.net/u011852872/article/details/127076918......
  • mybatis学习笔记
    1、第一个mybatis导入依赖//mysql依赖<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.31</v......
  • 思考 React Hook 和 Vue 组合式 API
    Vue组合式API优化周期函数Vue2比如mounted周期中有很多获取数据的逻辑都在这里,在updated周期中又有很多更新的逻辑在这里。在老版本的Vue3文档中讲解组合式AP......