‘壹’ 路由的配置
进去全局配置模式,定义目标网络号,目标网络的子网掩码和下一跳地址或接口
Router(config)#ip route {nexthop-address|exit-interface} [distance]
Router(config)#ip route network [mask] {address | interface} [distance] [permantet]
目标网络掩码到达目标网络的下一个路由器地址或本地接口
默认路由是静态路由的一种,是指当路由表中与包的目标地址之间没有匹配的表项时路由器能够作出的选择
Router(config)#ip route 0.0.0.0 0.0.0.0 下一个路由器的接口地址
Router(config)#ip classless
其中 0.0.0.0 0.0.0.0 代表将发往任何网络的包都转发到下一个路由器接口地址
Ip classless 指路由器接收到不能转发的包的时候会将其匹配给默认路由
并且返回目标地址不可达的 ICMP的消息 常见动态路由分为距离矢量路由协议(DistanceVector Routing Protocol)和链路状态路由协议(Link-State Routing Protocol)。
动态路由是网络中的路由器之间相互通信,传递路由信息,利用收到的路由信息更新路由器表的过程。它能实时地适应网络结构的变化。如果路由更新信息表明发生了网络变化,路由选择软件就会重新计算路由,并发出新的路由更新信息。这些信息通过各个网络,引起各路由器重新启动其路由算法,并更新各自的路由表以动态地反映网络拓扑变化。动态路由适用于网络规模大、网络拓扑复杂的网络。当然,各种动态路由协议会不同程度地占用网络带宽和CPU资源。
距离矢量路由协议包括RIP,EIGRP,IGRP
链路状态路由协议包括OSPF,ISIS
RIP
RIP是Internet中常用的路由协议,路由器根据距离选择路由,路由器收集所有可到达目的地的不同路径,并且保存有关到达每个目的地的最少站点数的路径信息,除到达目的地的最佳路径外,任何其它信息均予以丢弃。同时路由器也把所收集的路由信息用RIP协议通知相邻的其它路由器。这样,正确的路由信息逐渐扩散到了全网。
RIP 有两个不同的版本,RIPv1和RIPv2. RIPv1。
RIPv1和RIPv2. RIPv1 的主要区别:
1.RIPv1是有类路由协议,RIPv2是无类路由协议
2.RIPv1不能支持VLSM,RIPv2可以支持VLSM
3.RIPv1没有认证的功能,RIPv2可以支持认证,并且有明文和MD5两种认证
4.RIPv1没有手工汇总的功能,RIPv2可以在关闭自动汇总的前提下,进行手工汇总
5.RIPv1是广播更新,RIPv2是组播更新,
6.RIPv1对路由没有标记的功能,RIPv2可以对路由打标记(tag),用于过滤和做策略
7.RIPv1发送的updata最多可以携带25条路由条目,RIPv2在有认证的情况下最多只能携带24条路由
8.RIPv1发送的updata包里面没有next-hop属性,RIPv2有next-hop属性,可以用与路由更新的重定
RIPv1的配置;
Router(config)#routerrip
Router(config-router)#network xxxx.xxxx.xxxx.xxxx
RIPv2的配置
Router(config)#router rip
Router(config-router)#version2
Router(config-router)#no auto-summary
RIP使用非常广泛,它简单、可靠,便于配置。但是RIP只适用于小型的同构网络,因为它允许的最大站点数为15,任何超过15个站点的目的地均被标记为不可达。而且RIP每隔30s一次的路由信息广播也是造成网络的广播风暴的重要原因之一。
EIGRP
EIGRP是思科私有的,他是高级距离矢量路由协议,使用DUAL算法。EIGRP是建立邻居关系最快的路由协议
EIGRP的5个Metric值:带宽(Bandwidth),负载(Load),延迟(Delay),可靠性(Reliability),MTU
配置:
Router(config)#router eigrp XX
Router(config-router)#noauto-summary
OSPF
OSPF是一种基于链路状态的路由协议,需要每个路由器向其同一管理域的所有其它路由器发送链路状态广播信息。在OSPF的链路状态广播中包括所有接口信息、所有的量度和其它一些变量。利用OSPF的路由器首先必须收集有关的链路状态信息,并根据一定的算法计算出到每个节点的最短路径。而基于距离向量的路由协议仅向其邻接路由器发送有关路由更新信息。
配置:
Router(config)#router ospf XX
Router(config-router)#router-idX.X.X.X
Router(config-router)#networkXXXX.XXXX.XXXX.XXXXarea X
OSPF将一个自治域再划分为区,相应地即有两种类型的路由选择方式:当源和目的地在同一区时,采用区内路由选择;当源和目的地在不同区时,则采用区间路由选择。这就大大减少了网络开销,并增加了网络的稳定性。当一个区内的路由器出了故障时并不影响自治域内其它区路由器的正常工作,这也给网络的管理、维护带来方便。
静态路由和动态路由有各自的特点和适用范围,因此在网络中动态路由通常作为静态路由的补充。当一个分组在路由器中进行寻径时,路由器首先查找静态路由,如果查到则根据相应的静态路由转发分组;否则再查找动态路由
‘贰’ 能自动生成不需要配置的路由是什么
vue 根据菜单自动生成路由(动态配置前端路由)
3.到main.js中
4.先把菜单组件写好,到menu.vue中
5.注册全局组件
6.到router文件夹写好路由模块
7.容器页和加载页
8.写筛选菜单和路由的方法
9. 登录成功后生成路由
6.1 base-router.js中写好我们需要的固定的路由
6.2 lm-router.js中写动态配置路由的方法
6.3 index.js中写路由入口
7.1 layout.vue
7.2 loading.vue
1.创建项目
2.新建文件
- 在需要权限控制的页面,往往存在根据用户来显示菜单的情况,单独根据用户类型判断显然不是很好,如果后面用户类型发生变化,项目修改维护可能就会比较麻烦,所以比较好的做法是根据后端返回的菜单动态生成页面路由,以达到完全权限控制的目的,并且若权限发生变化,仅需该配置数据即可
- // 公共函数模块,用import引用// 根据日期时间值获取字符串各是日期import Layout from '../views/layout/layout'//获取并筛选菜单export const getAndFilterMenus=(menus)=> {
- // console.log(menus)
- menus=hanldeChildAppRoute(menus)
- for(let i=0;i<menus.length;i++){
- delete menus[i].component //只有leLeftMeu=1的是菜单
- if(!parseInt(menus[i].isLeftMenu)){
- menus.splice(i,1)
- i--
- }
- if(menus[i] && menus[i].children){
- getAndFilterMenus(menus[i].children)
- }
- }
1.创建项目
首先用vue-cli3创建好项目
2.新建文件
创建好项目后,新建我们需要的文件。结构如图
‘叁’ 120由浅入深学网络--静态路由与动态路由
我们在 VLAN 的实验中学习到 VLAN 能够很好的隔离网路,减小广播域,但是隔离了网络的广播域也就意味着它们将处于不同的网络之中,这样仅仅依靠数据链路层的帧是无法相互通信的。所以若是我们需要 VLAN 间能够相互通信就必须得依靠网络的第三层网络层,通过路由的功能来连接两个不同网络使之相互通信。
使两个 VLAN 相互通信我们称之为 VLAN 间的路由,而实现这一功能的方法有两个:
单臂路由
SVI 接口
单臂路由(one-armed router 或者 router-on-a-stick)是指在路由器的一个接口上通过配置子接口(或“逻辑接口”,并不存在真正物理接口)的方式,实现原来相互隔离的不同 VLAN(虚拟局域网)之间的互联互通。
单臂路由就是依靠的路由器的路由功能,因为二层交换机没有办法实现路由。同时一个接口只能接收来自一个 VLAN 的数据(因为一个接口不能隶属于多个 VLAN),传统的 VLAN 间路由方式便是在 Switch 与 Router 之间连接多个端口以保证多个接收多个 VLAN 的数据,但是当 VLAN 很多的情况下,Router 不可能满足这么多端口,所以出现了子端口的实现,这是一种依靠软件实现的逻辑上的端口。这样便只需要通过一根物理连接线来实现多个 VLAN 接口的连接。
我们通过这样的一个实验来实现单臂路由的功能:
实验目的:配置实现单臂路由
实验材料:三台交换机、一台路由器
实验方法:
拖动三台交换机、一台路由器至画布,两台用作模拟PC,一台用所模拟 Switch,一台用作 Router
配置路由器、交换机的名字与连接线路
配置交换机中的 vlan,以及三个接口的模式
配置两台 PC 的 IP 地址与默认网关(下文详解),他们处于不同的 VLAN 中
配置路由器的子接口,以及子接口的 IP 地址
尝试使用 PC 相互 ping 通
1.构建实验环境,在画布中拖出三台交换机与一台路由器,并修改他们的设备名称,同时修改两台用作模拟 PC 的交换机图标,然后相互连接。结构如图所示:
2.配置交换机相关的内容,在 Switch1 中配置两个 VLAN,分别为 vlan 2:test2、vlan 3:test3。同时将与 PC 连接的两个端口分别配置为 access vlan 2 与 access vlan 3,还有与路由器相连接的端口配置为 trunk 模式。若是与路由器相连接的端口不配置成 trunk 模式将无法发送多个 vlan 的数据包。
3.修改 PC 端口的 IP 地址
此时我们可以尝试通过 PC1 去 ping PC2,我们会发现肯定是 ping 不通的,因为他们处于不同的网段同时处于不同的 VLAN 中。
3.为两台 PC 配置默认网关(默认网关用于将数据包发送至路由端口,下文详解)
可用回到特权模式中,通过 show ip route 查看,是否成功配置:
4.在路由器中配置逻辑子接口,分别用于接收 vlan2 与 vlan3 的数据。因为是接收来自交换机发来的信息,所以该子接口的数据封装模式与交换机中的相同,交换机此处 trunk 模式使用的是 dot1q 的封装方法,所以子接口中的也必须是这个方法。(还记得在 VLAN 划分实验中我们将到 trunk 模式主要作用是添加 VLAN 标签)
这样我们就成功的配置好了我们的子端口,我们可以通过 show ip int brief 查看接口信息中是否有这两个子接口的配置,还可以通过 show vlans 查看子接口的状态,以及通过 show ip route 命令来查看当前的路由信息,若是有两个直连路由表项,说明我们配置成功的生效了:
5.完成了所有的配置,准备工作,我们再次尝试通过使用 PC1 去 Ping PC2 发现 5个点都变成了感叹号,表示所有的 ICMP 包(ping 工具使用的是 ICMP 协议)都得到了响应,PC1 可以与 PC2 正常通信了:
由上述的两个原因,为此出现了一种新的功能,便是在三层交换上的 SVI 接口,这样便不需要单独添加一台路由器了。
SVI 是 Switch Virtual Interface 的简称。它是三层交换机上的一个虚拟端口,类似于 Router 上的子端口,由软件实现。每个 SVI 只能关联一个 VLAN,设置一个 IP 地址。
基于上个实验,我们做出这样的修改:
去除 Router 设备
设置 SVI 接口地址
我们将去除 Router 设备,由我们的三层交换机来实现相关的功能,将之前的网关地址设置为 SVI 的 IP 地址即可
1.去除 Router 设备,关闭 Switch 上的 e0/0 接口,同时配置 SVI 的 IP 地址:
如此便完成了 SVI 的配置,我们可以在 Switch 的特权模式中使用 show ip route 可以看到此时我们有两个直连的路由信息。同时我们还可以尝试使用 PC1 去 ping PC2。(若是配置与我完全一致,但是 ping 不通,可以尝试在 Switch 的全局模式中使用 no ip cef 命令)
此处使用 no ip cef 命令关闭转发机制便是该版本的镜像并没有很好的在 Linux 中实现其提供的功能,可能该镜像的设备本是使用硬件辅助实现该功能等等。若是不关闭 cef 的转发机制,将导致你明明配置无误,却无法正常的通信。
由此我们便成功的配置了单臂路由与 SVI 接口来成功的实现 VLAN 之间的相互通信了。
在之前的实验中我们经常提到默认网关之一名词,接下来我们便来了解一下该名词的含义。
默认网关由两个词组成默认与网关。其中什么叫做网关呢?
网关(Gateway)就是一个网络与另一个网络连接的关口。
比如成都市与广州市都只有一个邮局,而每个邮局前都会有一个专职的负责人,此时若是成都市的小明想与广州市的小红联系只能通过这样的一个过程:
首先将写好的信交给邮局的专职负责人,
邮局的专职负责人查看信封上的地址,发现该地址并不是本省中的地址,并且邮编写的是广东省的地址。
成都的邮局专职负责人便将该消息转发送给广州的邮局专职负责人,让他交给收件人
广州的邮局专职负责人收到信封后,发现目的地址便是本省中的地址,便寻找该地址将消息送到收件人的手中。
在这个例子中邮局的专职负责人便是网关。负责将本网段中的消息发送给其他网段的网关的接口。
默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。只要指定了默认网关之后,只要主机在发送数据包之前由目的地址与其子网掩码做 AND 运算得出的网络号与本机的网络号不同,便将数据发送给默认网关,由默认网关处理数据该如何发送。
在全局模式中我们可以通过这样的命令来实现默认网关的配置:
通过 show ip route 我们可以看到这样的结果:
我们了解到数据包发送到其他网段是通过查询路由表,然后决定下一跳发送的路径。而路由表中的表项是如何得来的呢?
首先以路由的角度将协议分为:
可路由协议(Routed Protocol):利用网络层完成通信的协议,例如 IP、IPX 等,该对象是被路由的。
路由协议(Routing Protocol):主要用于创建与维护路由表,本质是实现路由功能,该对象是路由其他对象的,例如 RIP、OSPF、IGRP、IS-IS 等等。
而路由表中的信息分为两大类:
直连路由:也就是该设备中的接口所配置的 IP 地址与其所处的网络
远程路由:也就是发向其他路由设备所处的 IP 地址与其所处的网络
直连路由是在 IP 接口地址配置后便自动添加的,而远程路由的信息来源又会分为两大类:
静态路由:由人工配置的下一跳地址,在网络拓扑发生变化时同样需要人工修改,但是配置完成之后并不会占用过多的系统资源,与网络的带宽。在静态路由中有缺省路由(也就是默认路由)、浮动路由的存在。适用于小型网络与末梢网络
动态路由:通过动态路由协议,设备与设备之间相互通信,相互学习。再由某种路由算法计算出下一跳的路径,当有多条路径的时候还有优先级的排序,并且在网络拓扑发生变化的时候,会自动学习网络中的变化适当改变路径,适用于大型网络。
其中动态路由协议有这样几种分类的标准:
按算法分为:距离矢量(典型的协议有 RIP、IGRP、BGP)、链路状态(典型的协议有 OSPF IS-IS)、混合算法(典型的协议有 EIGRP)
按照是否发送子网掩码分为:有类(典型的有 RIP、IGRP)与无类(支持子网划分与路由汇总,典型的有 OSPF 等)
按照使用的网络规模分为:IGP(Interior gateway protocol),内部网关协议,几乎所有的路由协议都属于内部网关协议)与 EGP(Exterior Gateway Protocol),外部网关协议,BGP 用于自治系统之间的路由计算)
其中按照算法分的距离矢量表示的是根据源到目的的跳数来计算(之前有提过,下一跳表示去往下一个路由);所谓的链路状态便是多方面考虑如链路的开销、链路上的所有的相邻路由器、网络带宽,网络拥塞等等综合考虑;所谓的混合算法便是这两个的结合考虑。
其中的自治系统是表示属于某一个特定的网络机构中路由集合。在自治系统内部使用的路由协议就是内部网关协议,而自治系统之间的是外部网关协议。
反应路由性能的参考对象主要还是收敛时间与管理距离(在上一节实验我们都提到过):
收敛时间(convergence time):从网络拓扑变化到网络中所有的路由器都知道这个变化的时间就叫收敛时间;
管理距离(administrative distance):用于综合评价路由协议性能参数,描述路由协议计算路由条目的准确度与可信度。
所谓的静态路由便是由纯手工的配置在路由表项中,这样的配置路由方式非常的耗时,效率不高,并且在网络拓扑发生改变的时候需要手工的一项一项的修改,十分的麻烦,事情总是利弊双面的,有弊就有利,虽然麻烦但是就因为不会自动学习修改所以不会发送通告占用带宽,也不会占用太多的 CPU 与 RAM 这样的系统资源。并且可以手工控制数据包的转发路径,因此静态路由在小型企业中还是十分常用。
静态路由的配置很简单,只需要通过这样的一条命令即可:
我们可以通过这样的例子来学习静态路由的配置:
还是使用上述 SVI 的实验环境,我们在 Switch 上添加一个路由,并且配置为 202.203.0.0 这个网段下:
此时 PC 肯定是无法 ping 通 202.203.0.2 地址的,因为虽然在 Switch 中有该网段的路由表项(因为是直连网段),但是数据包在 Router 接收到之后,响应时发现路由表中无 192.168.1.0 网段表项,不知道怎么转发回来,便只有丢弃该数据包了。
通过 show ip route 我们可以看到静态路由成功的添加了:
并且此时可以 ping 通对端的 IP 地址:
这只是一条记录,并且只是 192.168.1.0 网段可以 ping 通,若是 PC2 去 ping 还是会不通,因为 PC2 在 192.168.2.0 网段,路由表中没有可以匹配的项。此时我们发现所有的地址都会通过 Switch,基本设备都是围绕它来的,他知道所有的路由路径,我便可以直接设置一个默认路由,也就是只要路由表中没有目的地址所匹配的表项,就都丢给默认路由。
既然如此也就代表着默认路由要匹配所有项,因为表中一旦无匹配就让他路由,换个角度就代表他得匹配所有项,而匹配所有项的地址便是 0.0.0.0,同时子网掩码也是这个值。因为 0 表示的是任意的(wildcard)
默认路由就是一种特殊的静态路由,所以若是要配置默认路由只需要将上述的命令中的目的地址与子网掩码改成 0.0.0.0 0.0.0.0 即可。
我们可以在刚刚的环境中实验一次,先擦除原先的静态路由然后再配置:
这就是便是默认路由只要路由表中没有匹配的项就让它来路由。
当然按照我们之前所说的冗余思想,避免单点故障使得一个数据包到达目的地可能有多条路径,此时我们便可以配置浮动路由,所谓的浮动路由便是当优先级较高的路径出现问题时,还有一条路径能够及时的替补上来。而优先级的体现在于我们上节实验中所提到的 AD,当值越小的时候其优先级便越高。
浮动路由的配置很简单,就是在添加备选路径时,把静态路由命令的网关地址修改以及后面添加 AD 值,该值的取值范围是 0~255。例如:
但是三层交换机并不支持浮动路由,需要路由器才能实现。
在画布中拖动两台路由器,实现这样的拓扑结构,同时配置浮动路由使得在一条线路断掉时,还是可以工作。(需要借助环回接口,在全局模式中 int loopback 0(这个为编号,自取) 便可以像配置端口一般为其配置 IP 地址了)
验证方式:
首先查看路由表中的静态路由是 192.168.1.2,并且能够 Router 设备能够 ping 通 202.204.1.1
然后 shutdown s2/0 端口,再次 ping 202.204.1.1 还是能通,并且此时的路由表的静态路由项发生变化
注意:此处使用的两个都是串口,因为 GNS3 的路由串口实现没有问题,浮动路由只需要一个端口断开,另外一边不通就知道断开了便启用浮动路由。但是若是使用的以太口,GNS3 实现出来与真实设备不同,不同之处在 GNS3 用以太口实现的话检测不出对端断开了,必须同时断开此端口与对端端口才行,所以此处使用串口。
‘肆’ Vue实现动态路由
通常我们在vue项目中都是前端配置好路由的,但在一些项目中我们可能会遇到权限控制,这样我们就涉及到 动态路由 的设置了。
动态路由设置一般有两种 :
(1)、简单的角色路由设置:比如只涉及到管理员和普通用户的权限。通常直接在前端进行简单的角色权限设置
(2)、复杂的路由权限设置:比如OA系统、多种角色的权限配置。通常需要后端返回路由列表,前端渲染使用
到这里,整个动态路由就可以走通了,但是页面跳转、路由守卫处理是异步的,会存在动态路由添加后跳转的是空白页面,这是因为路由在执行next()时,router里面的数据还不存在,此时,你可以通过window.location.reload()来刷新路由
后端返回的路由格式:
注意: vue是单页面应用程序,所以页面一刷新数据部分数据也会跟着丢失,所以我们需要将store中的数据存储到本地,才能保证路由不丢失。关于vue页面刷新保存页面状态,可以查看 vue如何在页面刷新时保留状态信息
‘伍’ 怎么配置路由ip route
Router0:配置
Router0>en
Router0#conft
Router0(config)#intf0/0
Router0(config-if)#ipadd192.168.1.254255.255.255.0
Router0(config-if)#nosh
Router0(config-if)#intf0/1
Router0(config-if)#ipadd172.139.23.1255.255.255.0
Router0(config-if)#nosh
Router0(config)#iproute168.30.0.0255.255.0.0172.30.23.2
Router0(config)#interfaceFastEthernet0/1
Router0(config-if)#ipaddress172.30.23.1255.255.255.0
router1:配置
Router1>en
Router1#conft
Router1(config)#intf0/1
Router1(config-if)#ipadd168.30.23.254255.255.0.0
Router1(config-if)#intf0/0
Router1(config-if)#ipadd172.30.23.2255.255.255.0
Router1(config-if)#nosh
Router1(config)#iproute192.168.1.0255.255.255.0172.30.23.1
Router1(config)#intf0/1
Router1(config-if)#ipadd168.30.23.254255.255.0.0
Router1(config-if)#nosh
‘陆’ vue项目实现动态路由和动态菜单搭建插件式开发框架免费源码
以往我们在开发vue项目的时候,总是通过将路径和路由写在route/index.js文件中,然后直接进行访问即可,一般实现权限匹配都是通过菜单下面的权限参数和路由守卫进行一个验证拦截和权限匹配,然而这样安全性仍然不足。因为我们在route/index.js中已经写满了所有的路由,这样子不仅造成静态路由内容过多、修改困难,同时当静态路由内容过多的时候,我们在路由中的内容就显得极其复杂。
而后端对前端的控制也显得较为无力,无法实现严格性的控制。
由此我们发现通过动态路由控制是必然的,此时我们只需要通过后端获取数据菜单和路由信息json,然后动态添加路由并生成菜单,使菜单与动态路由内容进行一个匹配,这样子我们可以实现由后端控制前端的菜单和路由,我们的项目往往只需要内置几个组件无需权限的公共页面如登陆、注册、忘记密码和404错误这几个常用页面组件。
我们只需要将写好的组件放置到我们的view视图下,然后我们通过动态的路由和菜单实现路由添加和菜单进行匹配,我们便可实现对插件进行访问,我们减少了对route/index.js内容写入,同时也有利于减少内存的占用。
我们通过动态路由的形式,我们生成的菜单权限更加的完善,不仅实现依靠菜单与路由守卫拦截实现鉴权,也可以通过动态路由实现动态加载vue文件,控制更加深度
我们通过动态路由的形式,我们可以将项目分给不同的人进行完成,便于组建一个开发团队,因为他们所开发的组件,我们只需要在具备基本的javascript库的情况下。我们直接进行动态路由的一个挂载和菜单生成便可完成项目合作,减少了对route/index.js文件的操作,保证项目的完整性。
最后我发现在非node环境的开发条件下,我们可以实现远程的vue文件加载,这不仅为我们开发提供了便利,同时也有利于我们及时修改文件,以达到项目的需求,更有利于保障安全,实现服务器vue文件加载。
Vue:2.6.11。
Vue-route:3.2.0。
主页
聊天
第一通过后端返回的一个路由json数据,我们通过前端生成符合路由路由静态内容数组的一个数组,然后再通过addRoute进行一个循环添加,我们以此生成动态路由。在登陆时获取后端返回的菜单信息,我们进行菜单的一个循环生成,由此我们的一个动态项目就已经完成。
第二怎样对动态路由和菜单项目进行一个管理。
我们首先可以通过搭建一个组件通过添加路由信息和管理菜单实现二者的动态匹配。我们只需要对路由信息进行一个添加和修改,并和菜单相互间进行匹配,我们便可实现简单的路由挂载。
组件管理
菜单管理
此时将数据提交的后端由后端进行数据保存,我们此时的组件只需要放在views文件夹下,添加路由进行文件加载,我们便可实现路由管理。
第一登陆页面配置。
我们需要在静态文件夹下创建一个menu.json和route.json。两个json文件模拟服务器登录时返回的数据。
我们在登录页面模拟获取数据之后,我们通过菜单的一个方法进行生成菜单,通过路由的方法生成路由数组并进行循环添加,然后执行路由跳转。
第二配置路由初始化内容。我们将route/index.js的路由信息填为空是非常不理智的,而且会报错,因为路由初始化在加载前已经完成。有些页面完全不需要权限便可访问,比如登录、注册、找回密码和404错误,这种不需要权限的页面,我们还是需要将其直接以静态的形式写在route/index.js文件中。
Index初始数据
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue . use ( VueRouter )
const routes = [{
path: '/' , //访问url
name: 'login' , //路由名称
component : () => import ( '@/unitui/pages/Login.vue' ), //加载模板文件
meta: {
show_site: 0 , //是否全屏显示
web_title: "登录" //网站标题
}
},
{
path: '/register' , //访问url
name: 'register' , //路由名称
component : () => import ( '@/unitui/pages/Register.vue' ), //加载模板文件
meta: {
show_site: 0 , //是否全屏显示
web_title: "注册" //网站标题
}
},
{
path: '/forget' , //访问url
name: 'forget' , //路由名称
component : () => import ( '@/unitui/pages/Forget.vue' ), //加载模板文件
meta: {
show_site: 0 , //是否全屏显示
web_title: "找回密码" //网站标题
}
},
{
path: '/404' , //访问url
name: '404' , //路由名称
component : () => import ( '@/unitui/pages/404.vue' ), //加载模板文件
meta: {
show_site: 0 , //是否全屏显示
web_title: "404错误" //网站标题
}
},
]
const router = new VueRouter ({
routes
})
router . beforeEach (( to , from , next ) => {
document . title = to . meta . web_title
console . log ( to );
next ()
})
export default router
第三,关于防止刷新后丢失的问题。我们需要在app.vue文件中的methods方法中定义一个路由生成方法。
示例:
init_route () { //初始化路由,防止刷新丢失
if ( sessionStorage . getItem ( "route_data" ) != null ) { //只有后端已经返回数据的情况下才允许生成
const route_data = JSON . parse ( sessionStorage . getItem ( "route_data" )); //获取路由信息
const data = []; //默认路由数组
for ( let index = 0 ; index < route_data . length ; index ++) { //生成路由信息
data [ index ] = {
path: route_data [ index ]. path , //访问url
name: route_data [ index ]. name , //路由名称
component : resolve =>
require ([ `@/views/ ${ route_data [ index ]. component } ` ], resolve ), //加载模板文件
meta: {
show_site: route_data [ index ]. meta . show_site , //是否全屏显示
web_title: route_data [ index ]. meta . web_title //网站标题
}
};
}
for ( let index = 0 ; index < data . length ; index ++) { //循环添加路由
this . $router . addRoute ( data [ index ]);
}
}
}
在mounted中进行方法调用,防止刷新的时路由丢失,导致发生错误。该方法内容基本和登陆页面的菜单出路由初始内容基本相同,但我们唯一差别的是,我们需要判断登陆所获取的路由信息是否存在,只有在存在的时候及后端已经返回了路由信息,即证明登录成功的时候,我们才会动态添加路由。
第一在刷新之后,默认跳转到path:’*’的一个路由界面中去,此时我们解决方法只需要将path:’*’路由进行一个删除,将其删除就变可正常访问。
第二动态路由跳转时发生Cannot find mole xxx错误。
意思是无法加载我们指定的一个vue文件,这是由于route3.0版本后import方式不支持传入变量,此时我们只需要将其改为require方式便可。
我们此次动态vue项目开发已经基本完成,我的开发的项目是基于element-ui进行,那么如果你需要源码参考。可以私信回复unit便可获取。
‘柒’ 动态路由配置命令
1、ping命令
2、ipcnfig 命令
3、arp命令
4、Traceroute命令
5、route命令
等等……
‘捌’ 路由器动态ip怎么设置
(一)、通过设置向导设置动态IP上网
1、登录设置界面:在浏览器的地址栏中输入:192.168.1.1然后按下回车键——>在弹出的对话框中,输入默认用户名、密码,登录到设置界面。
设置路由器的无线wifi密码
注意问题
(1)、SSID号就是无线WiFi名称,请不要使用中文汉字,用字母、数字来设置SSID。
(2)、PSK密码,就是无线WiFi密码,建议用大小写字母、数字、符号的组合来设置,长度不得小于8位。