详解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 语法集锦 脚本之家基础推荐
Nov 15 Javascript
jquery+css+ul模拟列表菜单具体实现思路
Apr 15 Javascript
jQuery中parent()方法用法实例
Jan 07 Javascript
JavaScript中exec函数用法实例分析
Jun 08 Javascript
javascript 继承学习心得总结
Mar 17 Javascript
AngularJS基础 ng-include 指令示例讲解
Aug 01 Javascript
谈谈jQuery之Deferred源码剖析
Dec 19 Javascript
微信小程序 自定义Toast实例代码
Jun 12 Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
Jul 15 Javascript
jQuery实现动态控制页面元素的方法分析
Dec 20 jQuery
Bootstrap Fileinput 4.4.7文件上传实例详解
Jul 25 Javascript
Node.js控制台彩色输出的方法与原理实例详解
Dec 01 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中常用字符串处理代码片段整理
2011/11/07 PHP
Yii中CGridView关联表搜索排序方法实例详解
2014/12/03 PHP
PHP之密码加密的几种方式
2015/07/29 PHP
php array_key_exists() 与 isset() 的区别
2016/10/24 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
Js 获取HTML DOM节点元素的方法小结
2009/04/24 Javascript
javascript页面上使用动态时间具体实现
2014/03/18 Javascript
jquery实现拖拽调整Div大小
2015/01/30 Javascript
JavaScript调用传递变量参数的相关问题及解决办法
2015/11/01 Javascript
jquery实现图片预加载
2015/12/25 Javascript
jquery实现无刷新验证码的简单实例
2016/05/19 Javascript
Jquery和Js获得元素标签名称的方法总结
2016/10/08 Javascript
ionic2打包android时gradle无法下载的解决方法
2017/04/05 Javascript
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
2018/09/04 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
2020/04/20 Javascript
iview实现图片上传功能
2020/06/29 Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
2020/09/11 Javascript
[01:00:59]VP VS VG Supermajor小组赛胜者组第二轮 BO3第二场 6.2
2018/06/03 DOTA
在Python中操作字典之update()方法的使用
2015/05/22 Python
pymongo中group by的操作方法教程
2019/03/22 Python
Python 实现取多维数组第n维的前几位
2019/11/26 Python
Python3和pyqt5实现控件数据动态显示方式
2019/12/13 Python
Selenium 配置启动项参数的方法
2020/12/04 Python
CSS3 特效范例整理
2011/08/22 HTML / CSS
phpquery中文手册
2021/03/18 PHP
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
C和C++经典笔试题附答案解析
2014/08/18 面试题
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/11/24 面试题
工商管理专业实习生自我鉴定
2013/09/29 职场文书
国际贸易个人求职信范文
2014/01/04 职场文书
电气自动化专业职业规划范文
2014/02/16 职场文书
美容院管理规章制度
2015/08/05 职场文书
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle
springboot layui hutool Excel导入的实现
2022/03/31 Java/Android
《金肉人》米特&《航海王》阿鹤声优松岛实因胰脏癌去世 享寿81岁
2022/04/13 日漫