vue基础语法-补充

121 阅读3分钟

基础继续

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属性,则缓存是不会生效的:

可以设置最多可以缓存数目【如果大于缓存数目,最久的缓存则被踢出】,和动态设定缓存组件名。