vue学习笔记(二) 路由学习

vue-router与vue.js深度集成,适合用于构建单页面应用。vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。一般的页面应用,是用一些超链接来实现页面切换和跳转的,比如说a标签,在vue-router单页面应用中,则是路径之间的切换,也就是组件的切换。
路由中有三个基本的概念:

  1. route,它是一条路由。Home按钮=>home内容,这是一条route,about
    按钮=>about内容,这是另一条路由。
  2. router是一组路由,把上面的每一条路由组合起来,形成一个数组。
    [ {home 按钮 =>home内容 }, { about按钮 => about 内容} ]
    router 是一个机制,相当于一个管理者,它来管理路由。因为routes 只是定义了一组路由,它放在哪里是静止的,当真正来了请求,怎么办? 就是当用户点击home 按钮的时候,怎么办?这时router 就起作用了,它到routes 中去查找,去找到对应的 home 内容,所以页面中就显示了 home 内容。
  3. 路由在项目中的基本定义为(文件router/index.js):
    在这里插入图片描述
    再通过来实现组件之间的跳转。
    1.1 声明式路由
    在页面中通常使用这个标签来实现页面的跳转,它属于声明式路由,相当于a标签。
    如何带值传递?
    在这里插入图片描述
    用法:
    在这里插入图片描述
    1.2 编程式路由
    在页面中可以使用这个标签来实现页面的跳转,还可以通过router的实例化方法来实现页面的跳转。
    1.2.1 router.push
    平时使用的实际上是调用router.push。
    具体的语法:
    router.push(location, onComplete?, onAbort?)
    在具体使用该方法时,在Vue实例内部,可以通过router来访问路由的实例,项目中常用到的有(c,d为传参方式):
    (a)this.router.push(‘/xxxx’) – 某一个路径
    (b)this.router.push ({name : ‘xxxx’}) – 跳转到某一个页面
    ©this.router.push ({name : ‘xxxx’, query: xxx})
    (d)this.router.push ({name : ‘xxxx’, param: {userId: ‘xxxx’}}) --由于动态路由也是传递params的,所以在 this.router.push() 方法中 path不能和params一起使用,否则params将无效。需要用name来指定页面。
    3与4的区别在于在页面接收参数的方式不同:
    this.route.query.xxx
    this.route.param.xxx
    使用这个方法,它会向栈里添加一条历史记录,所以在选择回退时,它会回退到历史页面
    在项目中常见的场景是从一个单页面回退到上一层页面。
    在这里插入图片描述
    1.2.2 router.replace
    语法:router.replace(location, onComplete?, onAbort?)
    这个跟 router.push 很像,唯一的不同就是,它不会向 history 添加新记录,而是替换掉当前的 history 记录。参数的传递与router.push相同。
    (1) 路由按需加载:
    为了不影响页面加载,如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就很高效了
    我们一般定义路由:
    在这里插入图片描述
    按需加载的写法:
    在这里插入图片描述
    1.2.3 router-view
    在App.vue中定义 router-view和 router-link,App.vue中定义router-view是必不可少的。
    在这里插入图片描述
    项目中使用的场景:
    router-view 也可看做一个组件,结合 keep-alive 来,将所有匹配到的视图组件进行缓存处理,避免重复加载。
    在这里插入图片描述
    1.2.4 路由钩子
    路由钩子主要是在路由发生变化时进行一些特殊处理,总的来说,提供了三大类钩子函数:
    (1) 全局钩子
    (2) 某个路由独享的钩子
    (3) 组件内钩子
    三种路由钩子中都涉及到了三个参数:
    (1) to :Route:即将要进入的目标 路由对象
    (2) from :Route 当前导航正要离开的 路由
    (3) next : Function 一定要调用该方法来 resolve 这个钩子。
    next(): 进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是 confirmed (确认的)。
    next(false): 中断当前的导航。如果浏览器的 URL 改变了(可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到 from 路由对应的地址。
    next(’/’) 或者 next({ path: ‘/’ }): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。
    next(error): 如果传入 next 的参数是一个 Error 实例,则导航会被终止且该错误会被传递给 router.onError() 注册过的回调。
    参考资料:https://router.vuejs.org/zh-cn/advanced/navigation-guards.html
    (1)全局钩子:
    router. beforeEnter 与router.afterEach
    全局钩子在main.js里面调用,比如以下的场景,一个应用页面返回上一页面
    在这里插入图片描述
    (2)某个路由独享的钩子
    在这里插入图片描述
    这个没有用过,以后用上了再补上
    (3)组件内钩子
    组件内的钩子可以在路由组件中直接定义一下路由导航守卫。
    a)beforeRouteEnter
    b)beforeRouteUpdate (2.2 新增)
    c)beforeRouteLeave
    在项目中主要用到的是beforeRouteLeave,它的使用场景我用到最多的为:
    导航离开该组件的对应路由时,比如说从某页面进入该编辑页,当放弃编辑时,给出提示“信息未保存,是否编辑”。
    这里用到了状态管理store与vux,暂时忽略,现只看用法。
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的高校科研信息管理系统实现了操作日志管理、字典管理、反馈管理、公告管理、科研成果管理、科研项目管理、通知管理、学术活动管理、学院部门管理、科研人员管理、管理员管理等功能。系统用到了关系型数据库中王者MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让高校科研信息管理系统更能从理念走到现实,确确实实的让人们提升信息处理效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值