vue基础之路由(概念,基本使用,路由规则中定义参数,路由的嵌套,使用路由进行经典布局)
什么是路由
前端路由
对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上对应的资源;
对于单页面应用程序来说,主要通过URL中的hash(#号)来实现不同页面之间的切换,同时,hash有一个特点:HTTP请求中不会包含hash相关的内容;所以,单页面程序中的页面跳转主要用hash实现;
在单页面应用程序中,这种通过hash改变来切换页面的方式,称作前端路由(区别于后端路由);
后端路由
后端路由:对于普通的网站,所有的超链接都是url地址,所有url都对应服务器上对应的资源
路由的基础使用
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><script src="./lib/vue-2.4.0.js"></script><!-- 1. 安装 vue-router 路由模块 --><!-- 导入后,导航栏会出现#号,url的改变就基于此处 --><script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
</head><body><div id="app"><!-- 第一种方式 --><a href="#/login">登录</a><a href="#/register">注册</a><!-- 第二种方式 --><!-- router-link 默认渲染为一个a 标签,tag="span"渲染为span标签 --><router-link to="/login" tag="span">登录</router-link><router-link to="/register">注册</router-link><!-- 这是 vue-router 提供的元素,专门用来 当作占位符的,将来,路由规则,匹配到的组件,就会展示到这个 router-view 中去 --><!-- 所以: 我们可以把 router-view 认为是一个占位符 --><router-view></router-view></div><script>// 2. 创建一个路由对象, 当 导入 vue-router 包之后,在 window 全局对象中,就有了一个 路由的构造函数,叫做 VueRouter// 在 new 路由对象的时候,可以为 构造函数,传递一个配置对象var routerObj = new VueRouter({// route // 这个配置对象中的 route 表示 【路由匹配规则】 的意思routes: [ // 路由匹配规则 // 每个路由规则,都是一个对象,这个规则对象,身上,有两个必须的属性:// 属性1 是 path, 表示监听 哪个路由链接地址;// 属性2 是 component, 表示,如果 路由是前面匹配到的 path ,则展示 component 属性对应的那个组件// 注意: component 的属性值,必须是一个 组件的模板对象, 不能是 组件的引用名称;// { path: '/', component: login },{ path: '/', redirect: '/login' }, // 这里的 redirect 和 Node 中的 redirect 完全是两码事{ path: '/login', component: { template: '<h1>登录组件</h1>'} },{ path: '/register', component: { template: '<h1>注册组件</h1>'} }],linkActiveClass: 'myactive'})// 创建 Vue 实例,得到 ViewModelvar vm = new Vue({el: '#app',data: {},methods: {},router: routerObj // 将路由规则对象,注册到 vm 实例上,用来监听 URL 地址的变化,然后展示对应的组件});</script>
</body></html>
路由规则中定义参数
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><script src="./lib/vue-2.4.0.js"></script><script src="./lib/vue-router-3.0.1.js"></script>
</head><body><div id="app"><!-- 如果在路由中,使用 查询字符串,给路由传递参数,则 不需要修改 路由规则的 path 属性 --><router-link to="/login?id=10&name=zs">登录</router-link><router-link to="/register">注册</router-link><router-view></router-view></div><script>var login = {template: '<h1>登录 --- {{ $route.query.id }} --- {{ $route.query.name }}</h1>',data(){return {msg: '123'}},created(){ // 组件的生命周期钩子函数console.log(this.$route)console.log(this.$route.query.id)}}var register = {template: '<h1>注册</h1>'}var router = new VueRouter({routes: [{ path: '/login', component: login },{ path: '/register', component: register }]})// 创建 Vue 实例,得到 ViewModelvar vm = new Vue({el: '#app',data: {},methods: {},// router: routerrouter});</script>
</body></html>
路由的嵌套
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><script src="./lib/vue-2.4.0.js"></script><script src="./lib/vue-router-3.0.1.js"></script>
</head><body><div id="app"><router-link to="/account">Account</router-link><router-view></router-view></div><script>var router = new VueRouter({routes: [{path: '/account',component: {template: `<div><h1>这是 Account 组件</h1><router-link to="/account/login">登录</router-link><router-link to="/account/register">注册</router-link><router-view></router-view></div>`},// 使用 children 属性,实现子路由,同时,子路由的 path 前面,不要带 / ,否则永远以根路径开始请求,这样不方便我们用户去理解URL地址children:[{path: 'login', component: { template: '<h3>登录</h3>' }},{ path: 'register', component: { template: '<h3>注册</h3>' } }]}]})// 创建 Vue 实例,得到 ViewModelvar vm = new Vue({el: '#app',data: {},methods: {},router});</script>
</body></html>
使用路由实现经典布局
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><script src="./lib/vue-2.4.0.js"></script><script src="./lib/vue-router-3.0.1.js"></script><style>html,body { margin: 0; padding: 0;}.header {background-color: orange; height: 80px; }h1 {margin: 0;padding: 0; font-size: 16px;}.container {display: flex;height: 600px;}.left { background-color: lightgreen; flex: 2;}.main { background-color: lightpink; flex: 8; }</style>
</head><body><div id="app"><router-view></router-view><div class="container"><router-view name="left"></router-view><router-view name="main"></router-view></div></div><script>// 创建路由对象var router = new VueRouter({routes: [/* { path: '/', component: header },{ path: '/left', component: leftBox },{ path: '/main', component: mainBox } */// 相当于{path: '/',components: {default: {template: '<h1 class="header">Header头部区域</h1>'},'left': {template: '<h1 class="left">Left侧边栏区域</h1>'},'main': {template: '<h1 class="main">mainBox主体区域</h1>' }}}]})// 创建 Vue 实例,得到 ViewModelvar vm = new Vue({el: '#app',data: {},methods: {},router});</script>
</body></html>
vue基础之路由(概念,基本使用,路由规则中定义参数,路由的嵌套,使用路由进行经典布局)相关推荐
- Vue—基础概念—组建化
6.组件化 在大型应用开发的时候,页面可以划分成很多部分.往往不同的页面,也会有相同的部分.例如可能会有相同的头部导航. 但是如果每个页面都独自开发,这无疑增加了我们开发的成本.所以我们会把页面的不同 ...
- 【VUE】看完这篇文章能够了解es6特性和vue基础
Vue讲解 1.Vue.js特性简介 什么是Vue.js Vue是一套用于构建用户界面的渐进式JavaScript框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只 ...
- vue基础(主要为vue3)
VUE基础入门 vue 简介 Vue 是一套用于构建用户界面的前端框架. 1.1构建用户界面 前端开发者最主要的工作,就是为网站的使用者(又称为:网站的用户)构建出美观.舒适.好用的网页. 1.1构建 ...
- Vue基础 - 自我总结
vue 1. 什么是 vue 官方给出的概念:vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式****框架. 构建用户界面:前端每天就是在做画用户界面的工作,vue 帮 ...
- day03 - vue基础
day03 - Vue基础 能够说出Vue的概念和作用 能够使用@vue/cli脚手架工程化开发 能够熟练Vue指令 一.Vue基本概念 思考 问题1: 原生js – 代码复杂开发效率慢? - 效率慢 ...
- Laravel同时接收路由参数和查询字符串中的参数
Laravel捕捉路由参数 Laravel允许在controller方法中捕捉路由里定义的参数,如下所示: 路由中定义参数: Route::get('post/{id}', 'PostControll ...
- Vue 基础快速入门(一)
Vue 渐进式 JavaScript 框架,用来动态构建用户界面 特点: 遵循 MVVM 模式 编码简洁,体积小,运行效率高,适合 移动/PC 端开发 它本身只关注 UI,可以轻松引入 vue 插件或 ...
- Vue—基础概念—路由(vue-router)
原文地址:Vue路由vue-router 7.路由vue-router 7.1.场景模拟 现在我们来实现这样一个功能: 一个页面,包含登录和注册,点击不同按钮,实现登录和注册页切换: 7.1.1.编写 ...
- 【Vue】路由Router嵌套的实现及经典案例
Vue 中路由在使用的时候 嵌套 使用是非常频繁的,所以本文我们就来通过案例介绍一下嵌套路由的使用. Vue路由嵌套 先来准备一个普通的路由案例: <!DOCTYPE html> < ...
- vue/cli是什么?vue/cli如何使用? 入门篇(安装创建,组件使用,定义路由,项目导出) ∠( °ω°)/ 前端知识
文章目录 简介 安装 安装nodejs nvm npm换源 单次换源 永久换源 方法一 方法二 Vue/cli安装 创建Vue/cli项目 解决常见错误 用命令行创建项目 可视化界面创建 项目目录简介 ...
最新文章
- PostgreSQL 使用 pgbench 测试 sysbench 相关case
- 王璋等揭示慢性阻塞性肺疾病炎症内型与呼吸道微生物组的关系(IF 21)
- 北京超级云计算GPU服务器的使用教程
- 直播 | 清华大学郑楚杰:知识增强对话生成中的差异感知知识选择
- 引起Java序列化失败的常见原因
- PostgreSQL开放自由
- Java JUC工具类--CyclicBarrier
- vs2012中对于entity framework的使用
- Rational Rose 2016
- Vue中:error ‘XXXXX‘ is not defined no-undef解决办法
- Android平台体验分析报告
- 7-5 sdust-Java-学生成绩读取与排序 (22分)
- 用 Pinbox 轻松收藏代码,这就是我要的收藏工具
- 股票波段操作的技术缺陷在哪里?
- 仙剑java单机游戏_仙剑游戏源码(含文档)
- Material Design设计规范
- 5.3. nightly version
- 数据告诉你,剧版“浪姐“-《三十而已》凭什么这么戳中观众的心
- Hessian/Burlap: is an unknown class in WebappClassLoader
- Android添加标题栏返回按钮,修改标题,添加背景
热门文章
- QAQ来自弱鸡的嘲笑
- 关于MPMoviePlayerController类播放视频时,外放没有声音的问题(ios)
- ddr3配置 dsp6678_简简单单学TI 多核DSP(2):TMS320C6678的时钟配置
- 拓端tecdat|R语言文本挖掘、情感分析和可视化哈利波特小说文本数据
- 拓端tecdat|Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测
- 拓端tecdat|R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题
- 【leetcode】排序题(python)
- voc数据集转换为txt
- MATLAB 距离函数及用法
- python中PIL.Image,OpenCV,Numpy图像格式相互转换