详解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 相关文章推荐
Javascript中获取出错代码所在文件及行数的代码
Sep 23 Javascript
jQuery学习笔记之jQuery动画效果
Sep 09 Javascript
原生JS实现加入收藏夹的代码
Oct 24 Javascript
javascript 10进制和62进制的相互转换
Jul 31 Javascript
javascript实现继承的简单实例
Jul 26 Javascript
JS实现购物车特效
Feb 02 Javascript
jquery实现轮播图效果
Feb 13 Javascript
JS原生带小白点轮播图实例讲解
Jul 22 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
Oct 19 jQuery
了解ESlint和其相关操作小结
May 21 Javascript
JavaScript引用类型Array实例分析
Jul 24 Javascript
vue实现拖拽效果
Dec 23 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 echo()和print()、require()和include()函数区别说明
2010/03/27 PHP
PHP操作mysql函数详解,mysql和php交互函数
2011/05/19 PHP
使用PHPMyAdmin修复论坛数据库的图文方法
2012/01/09 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
PDO::getAvailableDrivers讲解
2019/01/28 PHP
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
2020/02/12 PHP
js Dialog 实践分享
2012/10/22 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
Array栈方法和队列方法的特点说明
2014/01/24 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
jquery实现二级导航下拉菜单效果
2015/12/18 Javascript
深入理解JavaScript单体内置对象
2016/06/06 Javascript
Bootstrap Metronic完全响应式管理模板之菜单栏学习笔记
2016/07/08 Javascript
jQuery html表格排序插件tablesorter使用方法详解
2017/02/10 Javascript
详解vue事件对象、冒泡、阻止默认行为
2017/03/20 Javascript
JavaScript实现换肤功能
2017/09/15 Javascript
vue实现长图垂直居上 vue实现短图垂直居中
2017/10/18 Javascript
JavaScript插件Tab选项卡效果
2017/11/14 Javascript
jquery 动态遍历select 赋值的实例
2018/09/12 jQuery
VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip
2018/11/30 Javascript
Vue开发之watch监听数组、对象、变量操作分析
2019/04/25 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
2019/10/23 Javascript
使用uni-app开发微信小程序的实现
2019/12/13 Javascript
[08:44]和酒神一起战斗 DOTA2教你做大人
2014/03/27 DOTA
[01:07]DOTA2次级职业联赛 - Fpb战队宣传片
2014/12/01 DOTA
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
Python实现字符串匹配算法代码示例
2017/12/05 Python
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
Python列表如何更新值
2020/05/27 Python
沪江旗下的海量优质课程平台:沪江网校
2017/11/07 全球购物
美国室内盆栽植物购买网站:Plants.com
2020/04/24 全球购物
在C中是否有模拟继承等面向对象程序设计特性的好方法
2012/05/22 面试题
监察建议书范文
2014/03/12 职场文书
《诚实与信任》教学反思
2014/04/10 职场文书
2016应届毕业生实习心得体会
2015/10/09 职场文书