05 Vue组件
05 Vue组件
一、组件
1、fetch和axios
axios与fetch实现数据请求
(1)fetch(不是所有浏览器都支持,谷歌浏览器支持)
XMLHttpRequest 是一个设计粗糙的 API,配置和调用方式非常混乱,而且基于事件的异步模型写起来不友好。 兼容性不好
polyfill: https://github.com/camsong/fetch-ie8
1.1 fetche使用
fetch
-
{{data.name}}
1.2 axios的使用:跟后端交互
需要解决跨域问题
后端给响应头添加res.headers['Access-Control-Allow-Origin']='*'
Title
电影名为:{{data.name}}
导演:{{data.director}}
2、计算属性
把原来的函数,做成属性,只要原来函数中相关的值变化,属性才重新运算
2.1、通过计算属性实现名字首字母大写
Title
请输入名字:
使用函数:{{upperName()}}
使用计算属性:{{}}
2.2、通过计算属性重写过滤案例
Title
- {{data}}
二、组件化开发基础
1、组件是什么?有什么用
扩展 HTML 元素,封装可重用的代码,目的是复用
-例如:有一个轮播,可以在很多页面中使用,一个轮播有js,css,html
-组件把js,css,html放到一起,有逻辑,有样式,有html
2、组件注册方式
1 全局组件
Vue.component
2 局部组件
# 总结
1 自定义组件需要有一个root element,一般包裹在一个div中
2 父子组件的data是无法共享
3 组件可以有data,methods,computed....,但是data 必须是一个函数
2.1、定义局部组件
Title
2.2、定义全局组件
Title
全局组件
3、组件通信
1 父子组件传值 (props down, events up)
2 父传子之属性验证props:{name:Number}Number,String,Boolean,Array,Object,Function,null(不限制类型)
3 事件机制a.使用 $on(eventName) 监听事件b.使用 $emit(eventName) 触发事件
4 Ref this.$refs.mytext
5 事件总线var bus = new Vue();* mounted生命周期中进行监听
3.1、父子通信之父传子
通过自定义属性实现
Title
---->{{myText}}
3.2、父子通信之子传父(通过事件)
通过自定义事件传递
Title
{{myText}}
3.3、通过子传父控制字组件显示隐藏
Title
普通方式
字传父方式
3.4、ref属性
ref放在标签上,拿到的是原生节点
ref放在组件上,拿到的是组件对象,
通过这种方式实现子传父(this.$refs.mychild.text)
通过这种方式实现父传子(调用子组件方法传参数)
Title
放在普通标签上
--->{{myText}}
放在组件上
4、动态组件
1 元素,动态地绑定多个组件到它的 is 属性
2 保留状态,避免重新渲染
4.1、基本使用
Title
- 首页
- 购物
- 我的