详解vue路由


Posted in Javascript onAugust 05, 2020

前端路由和后端路由:

  • 后端路由:对于普通的网站,所有的超链接都是url地址,所有url都对应服务器上对应的资源
  • 前端路由:对于单页面应用程序来说,主要通过url的hash(#)来实现不同页面的切换,同时hash还有一个特点HTTP请求中不会包含hash相关的内容,所以单页面程序中的页面跳转主要用hash实现

在单页面应用程序中这种通过hash来改变页面的方式称作前端路由区别于后端路由

路由的使用

1.创建一个路由对象,当导入vue-router包之后,在window全局对象中就有一个路由的构造函数VueRouter

2.在new路由对象的时候可以传递一个配置对象,这个配置对象的route表示路由器的匹配规则

3.每个路由规则都是一个对象,这个规则对象身上必须有两个属性

  • 属性1 path表示监听哪个路由链接地址
  • 属性2 component,表示如果路由是前面匹配到的path,则展示component属性对应的组件,component属性值必须是一个组件模板对象,不能是组件的引用名称
var login={
      template:'<h2>登录</h2>'
    }
    var register={
      template:'<h2>注册</h2>'
    }
    var routerObj=new VueRouter({
      routes:[
        {path:'/login',component:login},
        {path:'/register',component:register}

      ]
    })

4.router:routerObj将路由规则对象注册到VM实例上,用来监听URL地址的变化,然后展示对应的组件

var vm=new Vue({
          el:'#div1',
          data:{
            
          },
          methods:{
            
            },
          router:routerObj  
          
        })

5.在控制的div中使用

<router-view></router-view>

6.在搜索栏输入对应的匹配规则,login

详解vue路由

7.使用vue官方提供的router-link元素使用,它默认渲染为一个a标签

<router-link to="/login">登录</router-link>
<router-link to="/register">注册</router-link>

路由重定向

1.设置一个默认展示组件,不推荐

{path:'/',component:login},

2.路由redirect重定向,设置默认组件

{path:'/',redirect:'login'},

路由传参

1.如果使用查询字符串 给路由传递参数则不需要修改路由规则的path属性

<router-link to="/login?id=10">登录</router-link>

2.使用query传递参数

var login={
      template:'<h2>登录----{{$route.query.id}}</h2>'
    }

详解vue路由

3.通过params方式传递路由参数,login后面会被解析为id的值

<router-link to="/login/12">登录</router-link>
var login={
      template:'<h2>登录----{{$route.params.id}}</h2>'
    }
{path:'/login/:id',component:login},

路由的嵌套

使用children属性实现路由嵌套,子路由path前不要加/,否则永远以根路径开始请求

<div id="div1"
      <router-link to="/account">account</router-link>
            <router-view></router-view>
    </div>
    <template id="tmp1">
      <div>
        <h2>account 组件</h2>
        <router-link to="/account/login">登录</router-link>
        <router-link to="/account/register">注册</router-link>
        <router-view></router-view>
      </div>
    </template>
var router=new VueRouter({
        routes:[
          {path:'/account',component:account,
          children:[
            {path:'login',component:login},
            {path:'register',component:register}
          ]}
        ]
      })

命名视图

命名视图在components(这时会多个s)后加属性再在使用<router-view></router-view>的时候用name引入,可以使一个页面中存在多个路由

<router-view></router-view>
      <router-view name="left"></router-view>
      <router-view name="main"></router-view>
var router=new VueRouter({
        routes:[
          {path:'/',components:{
            default:header,
            left:leftBox,
            main:mainBox
          }},
          
        ]
      })

以上就是详解vue路由的详细内容,更多关于vue路由的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
关于 byval 与 byref 的区别分析总结
Oct 08 Javascript
JS支持带x身份证号码验证函数
Aug 10 Javascript
用jquery和json从后台获得数据集的代码
Nov 07 Javascript
基于jQuery判断两个元素是否有重叠部分的代码
Jul 25 Javascript
异步动态加载js与css文件的js代码
Sep 15 Javascript
Vue.js 表单校验插件
Aug 14 Javascript
使用DeviceOne实现微信小程序功能
Dec 29 Javascript
详解vue与后端数据交互(ajax):vue-resource
Mar 16 Javascript
微信小程序的日期选择器的实例详解
Sep 29 Javascript
Vue自定义指令封装节流函数的方法示例
Jul 09 Javascript
微信小程序仿RadioGroup改变样式的处理方案
Jul 13 Javascript
超详细的5个Shell脚本实例分享(值得收藏)
Aug 15 Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
Aug 05 #Javascript
vant 自定义 van-dropdown-item的用法
Aug 05 #Javascript
浅谈vue 多个变量同时赋相同值互相影响
Aug 05 #Javascript
Vue的v-model的几种修饰符.lazy,.number和.trim的用法说明
Aug 05 #Javascript
vue实现在进行增删改操作后刷新页面
Aug 05 #Javascript
vue 限制input只能输入正数的操作
Aug 05 #Javascript
vue:el-input输入时限制输入的类型操作
Aug 05 #Javascript
You might like
php简单复制文件的方法
2016/05/09 PHP
详解PHP字符串替换str_replace()函数四种用法
2017/10/13 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
JSON JQUERY模板实现说明
2010/07/03 Javascript
基于jQuery替换table中的内容并显示进度条的代码
2011/08/02 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
javascript和jquery实现用户登录验证
2016/05/04 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
关于TypeScript中import JSON的正确姿势详解
2017/07/25 Javascript
Vue实现active点击切换方法
2018/03/16 Javascript
vue 详情跳转至列表页实现列表页缓存
2019/03/27 Javascript
使用Vue中 v-for循环列表控制按钮隐藏显示功能
2019/04/23 Javascript
javascript的this关键字详解
2019/05/20 Javascript
微信小程序实现watch监听
2020/06/04 Javascript
vue-router之解决addRoutes使用遇到的坑
2020/07/19 Javascript
[05:08]2014DOTA2国际邀请赛 Hao专访复仇的胜利很爽
2014/07/15 DOTA
Python中if __name__ == &quot;__main__&quot;详细解释
2014/10/21 Python
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
Python在Console下显示文本进度条的方法
2016/02/14 Python
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
2016/07/02 Python
使用Windows批处理和WMI设置Python的环境变量方法
2019/08/14 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
Python 复平面绘图实例
2019/11/21 Python
Champs Sports加拿大:北美最大的以商场为基础的专业运动鞋和服装零售商之一
2018/05/01 全球购物
MIXIT官网:俄罗斯最大的化妆品公司之一
2020/01/25 全球购物
迪卡侬波兰体育用品商店:Decathlon波兰
2020/03/31 全球购物
Swanson中国官网:美国斯旺森健康产品公司
2021/03/01 全球购物
介绍一下Cookie和Session及他们之间的区别
2012/11/20 面试题
中学生获奖感言
2014/02/04 职场文书
高中军训感言400字
2014/02/24 职场文书
2014年十一国庆节活动方案
2014/09/16 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
Go语言 go程释放操作(退出/销毁)
2021/04/30 Golang
24年收藏2000多部退役军用电台
2022/02/18 无线电