【vue】------ 路由创建 ------ 【William】
路由常用的配置项:
path:路由请求的路径 component:路由匹配成功后需要渲染的组件或者页面 tag:改变组件内部渲染的元素 假设组件内部渲染的是a标签 tag="li" 那么li就会替换a import Router from 'vue-router'
import Home from "./views/Home.vue";
import List from "./views/list.vue";
Vue.use(Router) //路由的配置项
export default new Router({
//每一个路由的配置项,每一个路由都是一个对象
routes: [
{
//请求的路径 pathname
path:"/home",
//path路径匹配成功后渲染哪个组件/页面
component:Home
},
{
path:"/list",
component:List
}
]
})
路由跳转的方式:
1、<a href="#/home"></a> 2、<router-link to="/home"></router-link> to的路径会与path进行匹配,如果匹配成功会渲染component对应的组件 组件怎样才能在页面上进行展示:
必须依赖一个内置组件
<router-view></router-view> //展示路径匹配成功以后相对应的组件 3、直接调用$router.push 实现携带参数的跳转
getDescribe(id){
this.$router.push({
path:'/describe/${id}',
})
}
路由的重定向:
redirect:重定向 (当访问一个路径时想展示另一个路径的页面) {
path:"/",
redirect:"/home"
}
路由嵌套:
children:路由嵌套 children是一个数组 数组里存放对象 每一个对象都是下一级的路由的配置项 配置项的属性与routes里面的属性一样 name:命名路由 给当前路由取一个别名 children:[
{
name:"city",
path:"city",
component:City
}
]
路由传参:
路由传参:
tip: 用params传参,F5强制刷新参数会被清空,用query,由于参数适用路径传参的所以F5强制刷新也不会被清空。 路由的传参接收方式统一在this.$route里面 1、query传值接收方式 query传值?后面的参数 &进行链接 /user?name=zhangsan&age=18 传值的方式:通过?进行数据的拼接 每个字段之间用&分隔 类似与get请求的方式
接收:this.$route.query router.js页面:
{
name:"detail",
path:"/detail",
component:Detail,
} 传递参数地址页面:
//query传值接收方式
let {id,name} = this.$route.query;
this.id = id;
this.name = name; 所要跳转的路径: 1、
<div class="app">
<ul>
<Router-link
v-for="(item,index) in goods"
:to="'/detail?id='+item.id+'&name='+item.goodsName"
tag="li"
> <h2>{{item.goodsName}}</h2>
</Router-link>
</ul>
<router-view></router-view>
</div> 2、
<div class="app">
<ul>
<Router-link
v-for="(item,index) in goods"
:to="{name:'detail',query:{id:item.id,name:item.goodsName}}"
tag="li"
> <h2>{{item.goodsName}}</h2>
</Router-link>
</ul>
<router-view></router-view>
</div> 2、动态路径接收方式
params:参数不会显示到路径上 在路由的配置项path中,设定传递参数的属性 方式为 /:属性.....
在路由跳转的属性中 设置属性的值 方式为 /detail/0/苹果 接收:this.$route.params router.js页面:
{
name:"detail",
path:"/detail/:id/:name",
component:Detail,
} 传递参数地址页面:
//动态路径接收方式
let {id,name} = this.$route.params;
this.id = id;
this.name = name; 所要跳转的路径:
1、
<div class="app">
<ul>
<Router-link
v-for="(item,index) in goods"
:to="'/detail/'+item.id+'/'+item.goodsName"
tag="li">
<h2>{{item.goodsName}}</h2>
</Router-link>
</ul>
<router-view></router-view>
</div> 2、
<div class="app"> <ul>
<Router-link
v-for="(item,index) in goods"
:to="{name:'detail',params:{id:item.id+'',name:item.goodsName}}"
tag="li">
<h2>{{item.goodsName}}</h2>
</Router-link>
</ul>
<router-view></router-view>
</div> 3、props接收方法 router.js页面:
{
name:"detail",
path:"/detail/:id/:name",
component:Detail,
props:true,
} 传递参数地址页面:
props:{
id:{
type:String,
default:""
},
name:{
type:String,
default:""
}
},
动态路由传值与query传值的区别:
query传值是非必须传值 动态路由传值是必须要传值
路由钩子函数 路由守卫:
beforRouteEnter 路由进入之前
1、热力图
2、登陆验证
3、权限验证
4、会员 VIP验证
5、验证商品携带信息是否完整 在当前钩子函数中是访问不到this的,因为还没有进入当前组件所以this为undefined
如果需要使用this则需要在next中使用回调,回调中的第一个参数就是组件的实例 进入路由之前
props:{
id:{
type:String,
default:""
},
name:{
type:String,
default:""
}
} beforeRouteEnter(to,from,next){ //to 到哪里去 from 从哪来 next执行下一步
document.title = to.meta.title next((vm)=>{ console.log(vm); });
}, beforRouteUpdate 路由更新的时候 当路由发生了改变,但是当前组件没有经历创建和销毁的时候,如果我们需要接收路由传递过来的数据时
我们就需要用到了beforRouteUpdate props:{
id:{
type:String,
default:""
},
name:{
type:String,
default:""
}
} beforeRouteUpdate (to,from,next) {
//当路由发生改变的时候
console.log("执行了") this.id = to.params.id; this.name = to.params.name; next();
} beforRouteLeave 路由离开的时候
1、信息没有填写完成
2、答题系统
3、支付
4、退出登陆 当路由离开的时候
props:{
id:{
type:String,
default:""
},
name:{
type:String,
default:""
}
} beforeRouteLeave(to,from,next){
var flag = window.confirm("您确定要离开吗?");
if(flag){
next();
}
}
beforEach 一般情况下用来做一些路由公众部分的验证 登陆验证 router.beforeEach((to, from, next) => {
if(to.meta.requireAuth){
next();
}else{
if(getCookie("X-TOKEN")){
next()
}else{
next("/login");
}
}
})
【vue】------ 路由创建 ------ 【William】的更多相关文章
- vue项目创建步骤 和 路由router知识点
菜单快捷导航: vue项目创建 vue路由router知识点(路径参数.查询参数.命名路由.嵌套路由.命名视图.hash/history模式) 1.创建一个vue项目步骤 (windows环境下).创 ...
- Vue之创建组件之配置路由!
Vue之创建组件之配置路由!== 第一步: 当然就是在我们的试图文件夹[views]新建一个文件夹比如home 在home文件夹下面新建一个文件index.vue 第二步:在router目录下做如下事 ...
- Vue路由vue-router
前面的话 在Web开发中,路由是指根据URL分配到对应的处理程序.对于大多数单页面应用,都推荐使用官方支持的vue-router.Vue-router通过管理URL,实现URL和组件的对应,以及通过U ...
- vue路由详解
自己看vue文档,难免有些地方不懂,自己整理一下,主要是vue-router具体实现的操作步骤. 安装 直接下载/CDN https://unpkg.com/vue-router/dist/vue-r ...
- vue路由原理剖析
单页面应用(SPA)的核心之一是: 更新视图而不重新请求页面, 实现这一点主要是两种方式: 1.Hash: 通过改变hash值 2.History: 利用history对象新特性(详情可出门左拐见: ...
- 14.vue路由&脚手架
一.vue路由:https://router.vuejs.org/zh/ 1.定义 let router = new VueRouter({ mode:"history/hash" ...
- Vue脚手架创建项目
创建一个基于webpack模板的新项目 D:\Git $ vue -V D:\Git $ vue init webpack my-project ? Project name my-project ? ...
- react router @4 和 vue路由 详解(一)vue路由基础和使用
完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 1.vue路由基础和使用 a.大概目录 我这里建了一个router文件夹,文件夹下有in ...
- react router @4 和 vue路由 详解(全)
react router @4 和 vue路由 本文大纲: 1.vue路由基础和使用 2.react-router @4用法 3.什么是包容性路由?什么是排他性路由? 4.react路由有两个重要的属 ...
- vue 路由 以及默认路由跳转
https://router.vuejs.org/ vue路由配置: 1.安装 npm install vue-router --save / cnpm install vue-router --sa ...
随机推荐
- Java学习笔记——设计模式之八.外观模式
外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 子系统: package cn.happy.design_patter ...
- Python静态方法,其实暗藏玄机
文章首发于 微信公众号:Python编程时光 这个标题「静态方法其实暗藏玄机」其实只是该文章的一个知识点.或许有些标题党,但没有关系,我相信有不少人对此并没有深入研究他们,不信我问你三个问题,你看能否 ...
- GMap 自定义绘图
GMap自定义绘图 gmap自带的绘图只难绘制路径,多边形,固定大小的圆.在实际开发中可能这些并不能满足自己所需.这里就需要自定义绘图 原理:继承GMapRoute或者GMapMarker类,重写里面 ...
- yarn or npm 版本固化如何选择
前言 作为前端开发者,npm这个包管理工具的重要性显而易见.优点不再表述,但一些缺点是为使用者诟病比较多的:速度慢.版本控制.下面主要讨论下npm的版本固化问题,即lock文件. npm语义化版本管理 ...
- 01(b)无约束优化(准备知识)
1.解方程转化为优化问题 $n\left\{ \begin{aligned}& {{P}_{1}}(x)=0 \\ & {{P}_{2}}(x)=0 \\ & \text{ ...
- Don’t Repeat Yourself
The Don’t Repeat Yourself (DRY) principle states that duplication in logic should be eliminated via ...
- Acrobat pro Dc 2018破解版|Adobe Acrobat pro Dc 2018中文破解版下载(附序列号/免破解)
Acrobat pro Dc 2018破解版是由Adobe公司开发的一款PDF编辑软件,它可以以PDF格式制作和保存用户的文档,以此方便浏览和打印,或使用更高级的功能,且PDF格式的文档可如实地保留原 ...
- Ubuntu系统 apt-get update失败解决办法
使用apt-get的时候发现ubuntu和阿里云均已经不提供该版本的源,所以需要找到其他的替代源. 使用的ubuntu版本是14.10,属于非LTS(长期支持版本),因此前一段时间还可以使用apt-g ...
- 使用wincc vbs脚本查找进程及如何运行进程
使用vbs代码查看某个进程是否在运行,本文要检查的进程名为 QRscan.exe,其代码如下: sub CheckProcess Dim WMI,Objs,Process,ObjSet WMI=Get ...
- HBase学习笔记一
HBase简介 HBase概念 HBase的原型是谷歌的Bigtable论文 HBase是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价PC上搭建起大规模结构化存储集 ...