【vue】Vue-router
Vue-router
- 安装
npm install vue-router --save-dev
vue-cli中已经选择安装了vue-router,那这里不需要重复安装了
- 解读route
路径```src/router/index.js``
import Vue from 'vue' //引入Vue
import Router from 'vue-router' //引入vue-router
import HelloWorld from '@/components/HelloWorld' //引入根目录下的HelloWorld.vue组件
Vue.use(Router) //Vue全局使用Router
export default new Router({
routes: [ //配置路由,这里是个数组
{ //每一个链接都是一个对象
path: '/', //链接路径
name: 'HelloWorld', //路由名称,
component: HelloWorld //对应的组件模板
}
]
})
<router-link to="/">首页</router-link>
- 配置子路由
import Vue from 'vue' //引入Vue
import Router from 'vue-router' //引入vue-router
import HelloWorld from '@/components/HelloWorld' //引入根目录下的HelloWorld.vue组件
import Hi from '@/components/Hi'
import Hi1 from '@/components/Hi1'
import Hi2 from '@/components/Hi2'
Vue.use(Router) //Vue全局使用Router
export default new Router({
routes: [ //配置路由,这里是个数组
{ //每一个链接都是一个对象
path: '/', //链接路径
name: 'HelloWorld', //路由名称,
component: HelloWorld //对应的组件模板
},
{
path: '/hi',
name: 'Hi',
component: Hi,
children: [
{ path: '/', name: 'hi', component: Hi },
{ path: 'hi1', name: 'hi1', component: Hi1 },
{ path: 'hi2', name: 'hi2', component: Hi2 }
]
}
]
})
- 参数传递
- 用name传递参数
routes: [ //配置路由,这里是个数组
{ //每一个链接都是一个对象
path: '/', //链接路径
name: 'HelloWorld', //路由名称,
component: HelloWorld //对应的组件模板
}]
<p>{{$route.name}}</p>
- 通过 标签中的to传参
<router-link :to="{name:xxx,params:{key:value}}">valueString</router-link>
<p>{{$route.params.username}}</p>
利用url传递参数
:
冒号的形式传递参数{
path: '/params/:newsId/:newsTitle',
name: 'Params',
component:Params
}
<!-- 传参 -->
<router-link to="/params/aaa/bbb">Params</router-link> <!-- 接收参数 -->
<div>
<p>新闻ID:{{$route.params.newsId}}</p>
<p>新闻标题:{{$route.params.newsTitle}}</p>
</div>
正则表达式在URL传值中的应用
path:'/params/:newsId(\\d+)/:newsTitle', //newsId 限制数字
redirect
重定向alias
别名
redirect:直接改变了url的值,把url变成了真实的path路径。
alias:URL路径没有别改变,这种情况更友好,让用户知道自己访问的路径,只是改变了中的内容
transition
过渡动画
<transition name="fade">
<router-view/>
</transition>
组件过渡过程中,会有四个CSS类名进行切换,这四个类名与transition的name属性有关,比如name=”fade”,会有如下四个CSS类名:
fade-enter
进入过渡的开始状态,元素被插入时生效,只应用一帧后立刻删除。
fade-enter-active
进入过渡的结束状态,元素被插入时就生效,在过渡过程完成后移除。fade-leave
离开过渡的开始状态,元素被删除时触发,只应用一帧后立刻删除。fade-leave-active
离开过渡的结束状态,元素被删除时生效,离开过渡完成后被删除。
.fade-enter {
opacity:0;
}
.fade-leave{
opacity:1;
}
.fade-enter-active{
transition:opacity .5s;
}
.fade-leave-active{
opacity:0;
transition:opacity .5s;
}
mode
模式
histroy
url没有
#
号,浏览历史记录栈的API实现hash
默认,监听location对象hash值变化事件来实现
window.onhashchange
路由钩子函数
beforeEnter
写在路由文件中,在进入此路由配置时{
path: '/params/:newsId(\\d+)/:newsTitle',
name: 'Params',
component: Params,
beforeEnter:(to,from,next)=>{
console.log('我进入了params模板');
console.log(to);
console.log(from);
next();
}
}beforeRouteEnter
写在模板中,在路由进入前beforeRouteLeave
写在模板中,在路由离开前
export default {
data() {
return {
msg: "params pages"
};
},
beforeRouteEnter(to, from, next) {
console.log("准备进入路由模板");
next();
},
beforeRouteLeave(to, from, next) {
console.log("准备离开路由模板");
next();
}
};
编程式导航
router.go(-1) //代表着后退,我们可以让我们的导航进行后退,并且我们的地址栏也是有所变化的。
router.go(1) //前进
this.$router.push('/xxx')//跳转
【vue】Vue-router的更多相关文章
- 【可视化】Vue基础
作者 | Jeskson 来源 | 达达前端小酒馆 Vue简介 Vue框架,框架的作者,尤雨溪,组件化,快速开发的特点. 生命周期 beforeCreate:组件刚刚被创建 created:组件创建完 ...
- 【Vue】Vue的依赖追踪系统 ——搞懂methods watch和compute
从作用机制和性质上看待methods,watch和computed的关系 <他三个是啥子关系呢?> 首先要说,methods,watch和computed都是以函数为基础的,但各自却都不同 ...
- 【Vue】Vue中的父子组件通讯以及使用sync同步父子组件数据
前言: 之前写过一篇文章<在不同场景下Vue组件间的数据交流>,但现在来看,其中关于“父子组件通信”的介绍仍有诸多缺漏或者不当之处, 正好这几天学习了关于用sync修饰符做父子组件数据双向 ...
- 【1】vue/cli 3.0 脚手架 及cube-ui 安装
安装 Vue CLI 需要 Node.js 8.9 或更高版本 (推荐 8.11.0+).你可以使用 nvm 或 nvm-windows在同一台电脑中管理多个 Node 版本. 检查node版本: $ ...
- 【vue】vue前端项目结构
[一]项目结构 [二]项目结构释意 目录/文件 说明 build 项目构建(webpack)相关代码 config 配置目录,包括端口号等.我们初学可以使用默认的. node_modules npm ...
- 【转载】Vue项目中的文件/文件夹命名规范
文件或文件夹的命名遵循以下原则: index.js 或者 index.vue,统一使用小写字母开头的(kebab-case)命名规范 属于组件或类的,统一使用大写字母开头的(PascalCase)命名 ...
- 【转】Vue.js:轻量高效的前端组件化方案
摘要:Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统.在前端纷繁复杂的生态中,Vue.js有幸受到一定程度的关注,目前在GitHub上已经有5000+的star.本文将从各方面对Vue ...
- 【06】Vue 之 组件化开发
组件其实就是一个拥有样式.动画.js逻辑.HTML结构的综合块.前端组件化确实让大的前端团队更高效的开发前端项目.而作为前端比较流行的框架之一,Vue的组件和也做的非常彻底,而且有自己的特色.尤其是她 ...
- 【05】Vue 之 实例详解与生命周期
Vue的实例是Vue框架的入口,其实也就是前端的ViewModel,它包含了页面中的业务逻辑处理.数据模型等,当然它也有自己的一系列的生命周期的事件钩子,辅助我们进行对整个Vue实例生成.编译.挂着. ...
- Vue学习笔记【23】——Vue组件(组件的定义)
定义Vue组件 什么是组件: 组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用对应的组件即可: 组件化和模块化的不同: ...
随机推荐
- javaSE学习一
java基础 java是一种强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用. java的数据类型有两大类:基本数据类型和引用类型(类.接口.数组) 八大基本数据类型: 1.整 ...
- Spanve:一种检测大规模空间转录组学数据中空间变异基因的有效统计方法
文章题目 Spanve: an Effective Statistical Method to Detect Spatially Variable Genes in Large-scale Spati ...
- 【Python】【算法】【排序】用Python实现排序的三种算法
class SortTest: def __init__(self): pass # 冒泡排序 def BubbleSort(self, value): if isinstance(value, li ...
- echarts:双y轴图表刻度均匀分布问题
今天分享一个小问题,内容不多. 双y轴图表中,为了图表的美观,经常会隐藏一侧的y轴刻度线,仅显示一侧的刻度线.那么问题就来了,两个y轴的数据数值大小不同,常常会导致刻度线的刻度分布不均匀,该如何解决呢 ...
- Java语言打印空心菱形
打印空心菱形如果一开始觉得比较困难的话,那么不妨分成几个步骤走完成菱形的打印. 1.先打印一个直角三角形(都是由星星组成的) 代码如下: import java.util.Scanner;//导入Sc ...
- 实现接口开启线程(实现Runnable接口)
步骤 定义类实现Runnable接口 重写run()方法 在测试类创建子类对象 创建线程对象把子类对象作为参数传入构造方法 用线程对象调用start()方法开启线程 //1.类实现Runnable接口 ...
- js中的base64转化
创建一个base64.js文件,将以下代码粘贴进去 var Base64= { _keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrst ...
- 物理核与逻辑核-转 perf
Linux和Windows 物理CPU.物理核.逻辑核--区别.关系和查看 cat /proc/cpuinfo命令部分输出信息的含义 physical id 物理封装的处理器的idprocessor ...
- SSD1306 屏幕使用-Micropython
1.I2C总线是什么? I2C:俗称集成电路总线,是一种简单.双向二线制同步串行通信总线,使用多主从架构.它只需要两根线即可在连接于总线上的器件之间传送信息. 主器件用于启动总线传送数据,并产生时钟以 ...
- 第二周day5
第二周day5,星期五 所花时间:1h 代码量: 搏客量:1 了解到的知识点:学习了安卓的帧布局表格布局和约束布局的相关知识,并完成了对应的习题.