基础继续
css
scoped:否则不起作用。父对子。这个是组件。
如果子组件需要父组件来控制样式,那么子组件和父组件的作用域是一样的才可以。
这个父组件不设置作用域。子组件设置scoped
子组件的优先级大于父组件的优先级。
如果父组件设置成scoped,那么将无法对子组件的样式产生影响。
属性的方式进行样式的继承的。
在.vue中,所写的样式是通过属性来实现的,如下图:
每一个标签中都会有一个样式属性,这个样式属性就是当前标签的样式,则子标签是会继承的。
这个是标签。
组件是不会深度继承的。父组件对子组件同作用域生效。但是对子组件的内部元素是不生效的。
父组件设置样式.hello 子组件也设置 .hello 则如下图分析:
注意:
不能穿插。父对孙不其效果。
深度穿插 >>>
如果父组件想要设置子组件中的某个标签元素,那么直接设置是不生效的。在scss里边 >>> 需要用 /deep/ or ::v-deep
理论是上边。
实际上可以直接使用。
module与scoped的关系
module定义的class类。是通过$style.类名 进行调用的。
是这样获取的。
数据模拟和请求代理(反向代理):
数据的模拟操作在vue.config.js中:
设置之后可以在前端的中进行访问:
反向代理:
就是访问这个服务器时,会跳转到别的服务器上:
域名会保护反向代理,被访问的服务器或者域名还是显示在网址上,这样就保护了反向服务器。
有时可以把反向服务器当做是一个防火墙。也同时可以有多个进行来减少访问的压力。
在vue.config.js中挂上代理之后:
访问我的另外一个服务器:
访问的流程是:
如图:
虽然我们看到的是8080的端口。但是其实访问的是3000的端口。3000的是反向代理服务器,起到了一个保护作用。但是客户端只能够看到8080的。
路由
路由的基础
路由的出口
App.vue 管理所有的路由页面。这个是在默认的vuecli中是可以看到的。
路由基础第二个要注意的点是:
动态路由参数
在配置路由的路径的时候可以进行路由的动态参数配置。
配置的方式如下:
跳转的方式:
在跳转到的页面中获取参数:
结果:
通配符
路由嵌套
有路由嵌套,那么就需要在嵌套内容的当前组件,选择一个出口。<router-view></router-view>
子路由的配置:
子路由的使用:
编程式导航
router.push();参数是有好几种方式的。
其中以最常用的方式为例。
编程式导航是不会改变页面地址的。
编程式导航的操作:
name是路由设置的name。
只要是跳转到name所对应的路由,那么你有没有param参数都是无所谓的。因为页面不是通过路由地址进行匹配,而是通过name进行匹配的。
所以:
编程方式导航和路由导航的匹配方式是不一样的。
组件复用
组件复用的问题
我们的组件被加载之后就复用的。
不同的跳转,虽然路由的地址会改变。但是不会再一次更新。
如果要想组件再一次加载,需要监听路由的$route属性才可以。
例如页面有created声明周期,只有在第一次加载的时候才会被访问到。上边两个按钮不管怎么点,都不会触发created钩子函数。
如果要触发组件刷新就要监听 $route这个属性:
路由守卫
全局路由(大)
这个路由是在创建路由对象,在对象上进行挂载的守卫。
是所有路由访问都要守卫的。
路由守卫中 to实例的输出如下:
登录是否成功为例:
全局路由守卫的设置:
meta是在路由配置里边固定的一个写法:
登陆成功后的跳转:
独享路由守卫(中)
独享路由守卫是写在路由配置里边的。写法也会有些不一样。
组件路由(小)
写在组件里边的路由守卫。
动态添加路由
路由是配置的。同时是可以添加的。也就是说路由即使没有,通过添加后会变成有的。
例如我要去我的页面,但是路由配置里边并没有我的页面,这个时候我可以添加我的路由页面。
技术分析:
1,通过登陆页跳转到我的页面。在跳转到我的页面之前添加这个我的页面的路由。
2,全局路由守卫改成所有页面都需登陆。
3,全局守卫死循环的解决
全局守卫死循环的解决:
设置其中一个页面是可以直接跳过的,如下图:
to.path只是路由
to.fullPath 路由和参数等
路由缓存
路由的缓存也就是路由不再创建了。不再加载了,有旧的缓存。
路由缓存会触发两个生命周期的钩子函数,在缓存状态只有这两个钩子函数在进行切换:
这个需要写在被缓存的组件中。
如果只是缓存某些组件则是需要设置属性的:
多个之间用 逗号 隔开。
切记:这里的About 和 Detail是组件中的name属性。
组件中的name属性,如果不设置name属性,则缓存是不会生效的:
可以设置最多可以缓存数目【如果大于缓存数目,最久的缓存则被踢出】,和动态设定缓存组件名。