Router对象、Route对象、声明式导航、编程式导航

Router和Route

当我们创建实例VueRouter

let router =  new VueRouter();

会有一个全局的router路由器对象, 这个路由器对象在其他路由组件上可以通过路由组件的实例.$router的方式访问到

当跳转到一个新的路由时,会创建一个新的route实例对象,每一个路由实例都是唯一的, 保存着当前路由的状态信息。

注意:在应用中只存在唯一的Router对象,在每个路由组件中访问到的Router对象都是一个Router实例,互相之间是相同的,但是每个路由之间route不相同的


属性方法

$router

console.log(this. $ router);

  • 属性
属性描述
options保存了创建路由的原始配置对象
currentRoute当前路由的地址信息和this.$route一致
  • 方法
 + 方法
          - addRoute(parentName, route) :  添加一条行的路由记录到路由
          - afterEach(to, from, failure) : 全局的路由导航后置守卫, 每次在切换路由后执行
          - beforeEach(to, from, failure): 全局的路由导航前置守卫, 每次在切换路由前执行

          - push({
              path:路由路径,
              name:路由名称,
              query:{}传递的query参数,
              params:{}传递的params参数,
          }): 跳转到一个路由,以编程式导航的方式跳转, 传入一个对象
                    与声明式路由导航配置属性一致,因为是向记录栈中推入一条记录
                    所以跳转后回退 会回退到 之前的路由记录(未替换)

          - replace({}) : 跳转到一个路由 ,以编程式导航的方式导航,参数和push一致
                          因为将路由记录栈的当前记录给替换了,所以跳转后不能回退到之前的记录
                          只能回退到之前记录的上一条记录(已替换)

          - resolve({}): 跳转到一个新的页面,参数和push一致

          - back(): 回退到上一个路由

          - forward(): 在历史路由向前进一个路由记录

          - getRoutes(): 获取路由的完整列表

          - go(num): 在历史路由记录中前进或后退,前或后取决于参数的正负

          - hasRoute(routeName): 检测是否有指定name的路由

          - removeRoute(routeName): 移除路由记录栈中对应名称的路由记录

          - onError(function(err)···): 捕获导航期间发生的错误

$route

console.log(this.$route);

 - fullPath : 跳转该路由的完整路径

 - hash: 当前路由的hash值, 无则为空

 - meta: 路由元信息

 - name:路由定义的名称

 - matched :  数组,包含当前匹配的路径中所包含的所有片段所对应的配置参数对象。
   
 - path: 对应当前路由的绝对路径(获取)

 - params: 当前路由的params参数(获取)

 - query: 当前路由的query参数(获取)

声明式导航和函数式导航

导航:

​ 一个路由被执行一次,就是一次导航。导航可以分为声明式导航和编程式导航。

声明式导航

一个路由组件(如 router-link)通过点击等方式实现路由跳转,这个过程称为“声明式导航(静态)”。

编程式导航
切换执行并不通过声明式导航实现,通过程序代码的方式给实现出来,就是“编程式导航(动态)”。

编程式导航的实现:
通过路由器对象直接使用js代码操作

1.声明式导航是直接渲染到页面的,比如a链接
2.编程式导航则是用在js处理逻辑后需要页面跳转,比如点击button按钮跳转

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vue提供了两种方来实现页面导航声明导航编程导航。 1. 声明导航 声明导航是通过在模板中使用Vue Router提供的组件来实现的。例如,可以使用<router-link>标签来创建一个链接,当用户点击链接时,Vue Router会自动地导航到指定的页面。可以像下面这样使用<router-link>: ``` <router-link to="/home">Home</router-link> ``` to属性指定了要导航到的页面路径。 2. 编程导航 编程导航是通过JavaScript代码来实现的。Vue Router提供了$router对象来控制导航。可以使用$router.push()方法来导航到指定的页面。例如,可以像下面这样使用$router.push(): ``` this.$router.push('/home') ``` 这将导航到名为“home”的路由。 总的来说,声明导航更加适合简单的导航,而编程导航更适合复杂的导航和在JavaScript代码中动态导航。 ### 回答2: Vue声明导航编程的主要区别在于指导方和实现方。 Vue声明导航是指通过使用Vue Router插件提供的router-link标签或者编程导航方法,以声明的方实现页面之间的导航跳转。在模板中使用router-link标签可以根据目标路由名称或路径自动生成对应的超链接,而不需要手动编写a标签或者使用window.location等方进行跳转。使用router-link可以使页面路由的变化更加方便和直观,同时也提供了一些额外的特性,如可以设置活动状态、添加CSS类等。 而Vue编程导航则是通过直接调用Vue Router插件提供的方法进行页面导航,一般使用$router对象的push、replace、go等方法。通过编程导航可以实现更加灵活和条件性的页面跳转,可以在某些事件触发或者某些条件满足时进行页面的跳转操作,而不仅仅是在模板中静态地声明。同时,编程导航还可以获得更多的路由导航相关信息,如当前路由对象路由参数等。 总结来说,Vue声明导航更加适用于简单的页面跳转,可以通过在模板中声明来完成;而Vue编程导航更加适用于复杂的导航逻辑和条件性的页面跳转,可以通过在代码中调用相关方法来完成。两者可以根据实际需求来选择合适的方进行页面导航。 ### 回答3: Vue声明导航编程都是Vue.js框架中用于导航的不同方。 Vue声明导航指的是通过使用Vue.js提供的router-link组件来进行页面导航router-link是Vue.js官方提供的路由导航组件,它会根据配置的路由规则自动渲染对应的导航链接。使用router-link,我们可以在模板中直接使用类似于a标签的方来进行页面导航,而不需要编写复杂的导航跳转逻辑。 Vue编程导航是指通过使用Vue.js提供的router实例的编程接口来进行页面导航。通过在组件中获取router实例,并使用路由对象提供的方法,我们可以在Vue组件的回调函数中进行程序化的导航,比如跳转到指定的路由、前进或后退等操作。 在Vue声明导航中,路由链接是在模板中声明的,即在html中直接使用router-link组件来生成对应的导航链接。这种方更适合编写简单的页面导航逻辑,对于一些复杂的导航需求可能不太方便。 而在Vue编程导航中,页面导航逻辑是在Vue组件中通过编程的方进行操作的,可以根据不同的情况来进行相应的导航操作。这种方适合处理一些复杂的导航逻辑,比如根据用户权限进行页面跳转等。 综上所述,Vue声明导航编程导航都是Vue.js框架中用于导航的不同方,可以根据实际需求选择使用哪种方进行页面导航
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值