什么是路由

前端路由

  1. 对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上对应的资源;

  2. 对于单页面应用程序来说,主要通过URL中的hash(#号)来实现不同页面之间的切换,同时,hash有一个特点:HTTP请求中不会包含hash相关的内容;所以,单页面程序中的页面跳转主要用hash实现;

  3. 在单页面应用程序中,这种通过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基础之路由(概念,基本使用,路由规则中定义参数,路由的嵌套,使用路由进行经典布局)相关推荐

  1. Vue—基础概念—组建化

    6.组件化 在大型应用开发的时候,页面可以划分成很多部分.往往不同的页面,也会有相同的部分.例如可能会有相同的头部导航. 但是如果每个页面都独自开发,这无疑增加了我们开发的成本.所以我们会把页面的不同 ...

  2. 【VUE】看完这篇文章能够了解es6特性和vue基础

    Vue讲解 1.Vue.js特性简介 什么是Vue.js Vue是一套用于构建用户界面的渐进式JavaScript框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只 ...

  3. vue基础(主要为vue3)

    VUE基础入门 vue 简介 Vue 是一套用于构建用户界面的前端框架. 1.1构建用户界面 前端开发者最主要的工作,就是为网站的使用者(又称为:网站的用户)构建出美观.舒适.好用的网页. 1.1构建 ...

  4. Vue基础 - 自我总结

    vue 1. 什么是 vue 官方给出的概念:vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式****框架. 构建用户界面:前端每天就是在做画用户界面的工作,vue 帮 ...

  5. day03 - vue基础

    day03 - Vue基础 能够说出Vue的概念和作用 能够使用@vue/cli脚手架工程化开发 能够熟练Vue指令 一.Vue基本概念 思考 问题1: 原生js – 代码复杂开发效率慢? - 效率慢 ...

  6. Laravel同时接收路由参数和查询字符串中的参数

    Laravel捕捉路由参数 Laravel允许在controller方法中捕捉路由里定义的参数,如下所示: 路由中定义参数: Route::get('post/{id}', 'PostControll ...

  7. Vue 基础快速入门(一)

    Vue 渐进式 JavaScript 框架,用来动态构建用户界面 特点: 遵循 MVVM 模式 编码简洁,体积小,运行效率高,适合 移动/PC 端开发 它本身只关注 UI,可以轻松引入 vue 插件或 ...

  8. Vue—基础概念—路由(vue-router)

    原文地址:Vue路由vue-router 7.路由vue-router 7.1.场景模拟 现在我们来实现这样一个功能: 一个页面,包含登录和注册,点击不同按钮,实现登录和注册页切换: 7.1.1.编写 ...

  9. 【Vue】路由Router嵌套的实现及经典案例

    Vue 中路由在使用的时候 嵌套 使用是非常频繁的,所以本文我们就来通过案例介绍一下嵌套路由的使用. Vue路由嵌套 先来准备一个普通的路由案例: <!DOCTYPE html> < ...

  10. vue/cli是什么?vue/cli如何使用? 入门篇(安装创建,组件使用,定义路由,项目导出) ∠( °ω°)/ 前端知识

    文章目录 简介 安装 安装nodejs nvm npm换源 单次换源 永久换源 方法一 方法二 Vue/cli安装 创建Vue/cli项目 解决常见错误 用命令行创建项目 可视化界面创建 项目目录简介 ...

最新文章

  1. PostgreSQL 使用 pgbench 测试 sysbench 相关case
  2. 王璋等揭示慢性阻塞性肺疾病炎症内型与呼吸道微生物组的关系(IF 21)
  3. 北京超级云计算GPU服务器的使用教程
  4. 直播 | 清华大学郑楚杰:知识增强对话生成中的差异感知知识选择
  5. 引起Java序列化失败的常见原因
  6. PostgreSQL开放自由
  7. Java JUC工具类--CyclicBarrier
  8. vs2012中对于entity framework的使用
  9. Rational Rose 2016
  10. Vue中:error ‘XXXXX‘ is not defined no-undef解决办法
  11. Android平台体验分析报告
  12. 7-5 sdust-Java-学生成绩读取与排序 (22分)
  13. 用 Pinbox 轻松收藏代码,这就是我要的收藏工具
  14. 股票波段操作的技术缺陷在哪里?
  15. 仙剑java单机游戏_仙剑游戏源码(含文档)
  16. Material Design设计规范
  17. 5.3. nightly version
  18. 数据告诉你,剧版“浪姐“-《三十而已》凭什么这么戳中观众的心
  19. Hessian/Burlap: is an unknown class in WebappClassLoader
  20. Android添加标题栏返回按钮,修改标题,添加背景

热门文章

  1. QAQ来自弱鸡的嘲笑
  2. 关于MPMoviePlayerController类播放视频时,外放没有声音的问题(ios)
  3. ddr3配置 dsp6678_简简单单学TI 多核DSP(2):TMS320C6678的时钟配置
  4. 拓端tecdat|R语言文本挖掘、情感分析和可视化哈利波特小说文本数据
  5. 拓端tecdat|Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测
  6. 拓端tecdat|R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题
  7. 【leetcode】排序题(python)
  8. voc数据集转换为txt
  9. MATLAB 距离函数及用法
  10. python中PIL.Image,OpenCV,Numpy图像格式相互转换