广告位

前端动态路由配置,<路由router-基本使用>

关于【前端动态路由配置】,,今天小编给您分享一下,如果对您有所帮助别忘了关注本站哦。内容导航:1、Vue教程(路由router-基本使用)2、前端动态路由配置,1、Vue教程(路由router-基本使用)本文开始我们来给大家介绍

关于【前端动态路由配置】,<路由router-基本使用>,今天小编给您分享一下,如果对您有所帮助别忘了关注本站哦。

  • 内容导航:
  • 1、Vue教程(路由router-基本使用)
  • 2、前端动态路由配置,<路由router-基本使用>

1、Vue教程(路由router-基本使用)

本文开始我们来给大家介绍在Vue中非常重要的一个内容,就是路由Router

什么是路由

后端路由:对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上对应的资源;

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

在单页面应用程序中,这种通过hash改变来切换页面的方式,称作前端路由(区别于后端路由);

Vue路由基本使用

1. 基本使用

我们先来看看 路由的 基本使用,基础页面如下

前端动态路由配置,<路由router-基本使用>

1.1 引入vue-router

我们需要引入vue-router.js文件,而且必须是在vue.js文件之后引入

前端动态路由配置,<路由router-基本使用>

1.2 创建组件模板

创建两个组件模板对象,如下

前端动态路由配置,<路由router-基本使用>

1.3 VueRouter实例

当 导入 vue-router 包之后,在 window 全局对象中,就有了一个 路由的构造函数叫做 VueRouter,在 new 路由对象的时候,可以为 构造函数,传递一个配置对象。在配置对象中我们可以来创建我们的路由规则

前端动态路由配置,<路由router-基本使用>

1.4 vm实例绑定

创建的VueRouter对象我们还需要绑定到Vue实例中才有效果

前端动态路由配置,<路由router-基本使用>

1.5 router-view

我们想要使用router路由,那么我们通过router-view标签来占位 我们要显示的内容的位置

前端动态路由配置,<路由router-基本使用>

router-view标签是 vue-router 提供的元素,专门用来 当作占位符的,将来,路由规则,匹配到的组件,就会展示到这个 router-view 中去。所以: 我们可以把 router-view 认为是一个占位符。

1.6 访问

前端动态路由配置,<路由router-基本使用>

通过上面的演示我们可以通过修改 #/后的内容来 触发路由中的规则,这时我们可以在页面中添加对应的操作按钮来便捷触发。

前端动态路由配置,<路由router-基本使用>

前端动态路由配置,<路由router-基本使用>

2. 重定向

上面的案例我们实现了路由的基本使用,但是页面第一次打开的时候,是没有路由规则的,这时我们可以配置一个,如下

前端动态路由配置,<路由router-基本使用>

效果

前端动态路由配置,<路由router-基本使用>

有实现,但是地址显示的是“/”,我们希望地址和路由的结果是一致的,这时我们可以设置个重定向来处理。

前端动态路由配置,<路由router-基本使用>

3. router-link

我们可以用router-link标签来替换掉 a标签,这样会更灵活些,如下

前端动态路由配置,<路由router-基本使用>

前端动态路由配置,<路由router-基本使用>

我们发现router-link渲染的最终的标签也是 a 标签,我们可以通过 router-link中的 tag属性来修改 渲染的标签类型

前端动态路由配置,<路由router-基本使用>

前端动态路由配置,<路由router-基本使用>

4. 高亮处理

有时候我们需要给被选中的标签设置特殊的样式,这时怎么办呢?看下面的动图。

前端动态路由配置,<路由router-基本使用>

通过演示我们发现,当对应的标签被选中的时候会动态给标签添加 class属性:

router-link-active,那么我们就可以利用这 属性了

前端动态路由配置,<路由router-基本使用>

前端动态路由配置,<路由router-基本使用>

实现了我们需要的效果,注意在VueRouter实例中有个属性叫 linkActiveClass 可以设置我们 特定的 class 值。

前端动态路由配置,<路由router-基本使用>

前端动态路由配置,<路由router-基本使用>

效果

前端动态路由配置,<路由router-基本使用>

5. 动画效果

 最后我们可以将前面讲过的动画运用到组件切换上。如下

前端动态路由配置,<路由router-基本使用>

前端动态路由配置,<路由router-基本使用>

最终效果如下

前端动态路由配置,<路由router-基本使用>

————————————————

2、前端动态路由配置,<路由router-基本使用>

0. 摘要

本文介绍了单页应用和路由的概念,并介绍了如何用两个技术:hash模式和history模式来实现单页应用的效果。

1. 内容
  • 什么是单页应用
  • 单页应用的特点
  • 用路由来实现单页应用
  • hash模式
  • history模式
  • 总结
2. 什么是单页应用

单页应用的英文是single page application,简称SPA。字面含义就是一个应用只有一个页面,这其实是一个很颠覆的概念,有点反常识。按我们一般意义上的理解,一个应用肯定得有多个页面呀。例如:一个新闻网站必须有主页,列表页,详情页等等。我们可能想象不到一个只有一个页面的应用是啥?“就一个主页”,“就一个静态的个人说明页面”。

肯定不是。我们多花点时间看看历史。

早先的网站都是多页的,也就是字面意义上的多页:主页可能就是index.html, 列表页就是list.html,详情页就是detail.html等等,这样的好处就是开发清晰,3P(asp, jsp, php)技术就典型的代表。随着移动设备的兴起,越来越多的页面时候通过移动设备的来访问的,那多页面的应用的天然缺陷就显示出来了:

1. 页面跳转时不可避免地会出现白屏;2. 从a页面跳转到b页面时,难免有会有重复的部分(例如页头和页脚一般都是通用的),而这些重复部分显然也会造成不必要的流量浪费。这些问题在pc端都是不问题,但是在移动设备上就是大问题了,为了提升用户的体验,让用户更快的看到页面,节约流量,程序员们发明了单页应用技术。

单页应用的主要特点就是:用一个页面(页面的名字就是index.html)来实现所有(多个页面的)的功能。

其实,SPA、MPA这些名称都是随着技术发展应用而提出来的,就像智能手机和功能手机的这对概念,在诺基亚风靡世界时(2010年左右),它们并没有被创造出来,我们讨论的话题都是 多少和弦 上,但是当出来一批更强大,更聪明的手机时,我们要做区分呀,就给诺基亚们取了名字叫功能机。类似的概念还有服务器端渲染和客户端渲染。

3. 单页应用的特点

单页应用的特点很明显:地址栏的变化导致内容的变化,但是整个页面并不刷新。下面是一张示意图:

前端动态路由配置,<路由router-基本使用>

它的好处是第一次获取到index.html这个页面之后,再也不需要请求其他的页面了,所有的功能操作都在这一个页面中完成。

4. 单页应用的实现方式-路由

现在我们抛开单页应用这名词放一边,把注意力放在如何实现具体功能上:地址栏中的内容变化了,主体内容有对应的更新,但是整体页面不去刷新。

就是我们说的前端路由技术。

路由是啥?可不是路由器哈。

前端动态路由配置,<路由router-基本使用>

路由就是一套规则:根据地址栏中地址来决定页面主体上的内容显示。例如:当地址是/list时,内容就是列表页的内容。当地址是/detail时,内容就是详情页的内容,依次类推。

实现路由功能有两种方式:

  • Hash模式。它主要是监听浏览器的hashchange事件。
  • history模式。它主要是调用history的pushState,replaceState方法,监听popstate事件。

都是利用浏览器的相关api特性来达成目标,严格来讲,都不属于js的内容。下面我们来分别介绍这两种技术。

5. hash模式

相比较history模式,用hash模式来实现这个功能会比较简单。

5.1 原理

当页面中的地址栏从 index.html/#/detail 变成 index.html/#/list 时:

  • 页面并不会刷新。
  • 会触发hashChange事件。这将是我们代码实现的重点。
  • 会向浏览器中追加一条浏览记录。也就是说通过浏览器的前进和后退按钮可以切换内容。

前端动态路由配置,<路由router-基本使用>

5.2 代码

<!DOCTYPE html><html lang="zh"><head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> body { background-color: #eee; } #app { background-color: #fff; margin: 2px auto; padding: 2em; } #content{padding:0.5em}</style></head><body> <div id="app"> <nav> <a href=http://www.029ztxx.com/tg/"#/">主页 列表页 详情页

 生活百科 All Rights Reserved

联系我们

联系我们

186 2726 9593

在线咨询: QQ交谈

邮箱: 120632399@qq.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们