vue学习视频(三)高级

尚硅谷:https://www.bilibili.com/video/BV1Zy4y1K7SH?p=91

动画效果

css3动画


CSS3动画样式

1、先写好动画样式
2、需要动画的地方使用<transition>标签包裹
3、样式是定义好的名称:进场动画:v-enter-active 离场动画:v-leave-active
4、如果transition取名字name=hello 动画样式:hello-enter-active,不再使用默认的v-enter-active
5、默认刚进入的时候就有动画,加属性appear为true。 :appear="true"
6、vue不与动画对话,而是控制样式名称!

过渡效果

过渡效果代码

简写代码


image.png

或者


image.png

多个元素的过渡

transition元素,只能包裹一个元素,如果是组,必须使用transition-group,并且结合key使用


image.png

集成第三方库实现动画

库名:Animate
https://www.npmjs.com/package/animate
https://animate.style/

image.png

总结


动画总结1

动画总结2

为什么vue或者react尽量少的使用jauery?
因为jquery主要是封装了对dom操作的api,而vue和react主要是减少对dom的操作
虽然jquery有ajax请求,但是有很多其他的代替api;如axios
axios优势是:
1、是promise封装;
2、体量小,是jquery的1/4;
3、

jquery、axios都是对xhr(XMLHttpRequest)的封装!
fetch 与 xhr是平级的。
fetch 也是promise风格的。
问题一:fetch返回的数据会包裹2层promise
问题二:fetch的兼容性问题(IE上不能使用fetch)

同源策略(3个):
协议名
主机名
端口号
http://localhost:8080

image.png

浏览器发送请求,服务器收到,并返回数据,浏览器收到信息,但是发现不是同一策略,所以浏览器拦截了。。。

跨域问题的解决:
1、使用cors(后端配置)
2、使用jsonp,主要是借助script标签,在src中引入外部资源的时候,不受同源资源限制的策略(前后端搭配使用)只能解决get请求,不能解决post请求
3、配置代理服务器
服务器之间传数据,不使用ajax,直接使用http请求即可。
ajax是前端技术,必须是有浏览器,有window,有xhr/fetch等
代理服务器配置方法:
1、nginx
2、借助vue-cli(在vue.config.js中配置 devserver.proxy)

示例:
方式一:


image.png

localhost:8080 本地资源访问路径
localhost:5000/students 才是服务器资源访问路径
在项目中axios访问地址是"localhost:8080/students"
只有在当前项目中没有的资源,才会去转到服务器上面。如果访问地址,在前端有资源,就不会再用代理,请求后台服务器了。
存在问题2个:
1、不能同时指定多个代理。
2、不能确定哪些请求可以走代理。(不灵活)
方式二:


image.png

通过参数 pathRewrite:{"^/atguigu":""}
表示把以'/atguigu'开头的字符串替换为空串。
ws表示用于支持websocket

changeOrigin:true/false 用于控制请求头中的host值,true表示与服务器一致,false表示显示前端真实的请求地址,默认为true


总结1

总结2

import引入css文件,会严格检测资源文件!
在src下新建assets文件夹,css文件夹,放入bootstrap.css文件,在App.vue中引入(不推荐)

或者在public文件夹下新建css文件夹,放入bootstrap.css文件,在index.html中引入

请求的模板字符串${aaa}

image.png

后台接口返回的数据,需要查看后台提供的接口文档!

兄弟组件间通信,推荐使用全局事件总线!

组件传值与接收值,不能定义多个参数,直接传true或者false

// 方法一
自定义全局事件总线(接收者)
this.$bus.on("fn",(isFirst,isLoading,users)=>{})
使用全局事件总线(发布者)
this.$bus.$emit("fn",true,false,[1,2,3]) // **语义不明确**,尽量避免使用这个方法
// 方法二
使用对象的方式传值与接收值
this.$bus.$emit("fn",{isFirst:true,isLoading:true,users:[1,2,3]})
this.$bus.on("fn",(obj)=>{this.isFirst=obj.isFirst}) // (方式一:每一个属性去匹配)
this.$bus.on("fn",(obj)=>{this.userInfo=obj.obj}) // (方式二:使用对象,直接对象匹配,但是如果传的值不全,可能出现属性丢失的情况,使用下面的情况可以避免)
this.$bus.on("fn",(obj)=>{this.userInfo={...this.userInfo,...obj.obj}}) // (方式三:把用户对象与传入对象都延展开,以用户的属性为基准,匹配传入的参数,有则替换,没有也不会丢失。)
image.png

企业微信截图_16421426568565.png

使用vue-resource(插件)发送请求

npm i vue-resource

import vueResource from vue-resource
Vue.use(vueResource )
this.$http.get(url).then(fn(){},fe(){})

插槽(slot)

先在组件中打个标识(挖个坑),等待组件的使用者去放入东西。
自闭合标签,开始结束标签
<abc/>
<abc><img src=""></abc> 把img标签放入指定的位置。
<slot>我是默认值,如果使用者不传,就显示我。</slot>

默认插槽

具名插槽

插槽同名,不是覆盖,是累加

<slot name="demo">我是默认值,如果使用者不传,就显示我。</slot> //定义
<abc><img slot="demo" src=""></abc> // 使用
image.png

作用域插槽

插槽本来就是为了占位,让使用者把对象输入放到该位置。
但是如果插槽中有数据,需要渲染到每一个使用者里面,就需要使用值的传递,这个传递值的过程就是定义的作用域插槽。实现代码如下


image.png

image.png

image.png
插槽总结1

插槽总结2

插槽总结3
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、什么是Vue.js 1. vue是一种数据驱动的前端框架 this.msg="我爱你",通过改变数据,然后自动...
    在路上919阅读 1,663评论 0 2
  • Vue 课程学习笔记 基础部分 方法创建在 method 的大括号里面 可以将 v-on:click 简写为 @c...
    ThornFUN阅读 685评论 0 0
  • Vue.js入门教程 参考文献 Vue-Cli webpack打包入门:http://www.cnblogs.co...
    采香行处蹙连钱阅读 1,491评论 2 3
  • Vue一文学会? Vue大家都知道就是一个国内非常流行的框架,最近因为过了许久没用Vue对于Vue的许多早已淡忘,...
    看物看雾阅读 636评论 0 3
  • 一、概念介绍 Vue.js和React.js分别是目前国内和国外最火的前端框架,框架跟类库/插件不同,框架是一套完...
    刘远舟阅读 1,096评论 0 0