Vue 基础(总结复习)
vue是什么
- 单页面应用框架,数据驱动视图,特性,数据的双向绑定,
vue核心的底层封装:数据双向绑定
2.x用object.defineProperty封装,3.x用es6里的proxy封装
vue的数据流是什么(reach---单项数据流)
- 单向数据流
- vue常用指令
v-model:数据双向绑定v-once:只绑定一次v-if,v-else-if,v-else: 控制元素的加载与销毁v-show:控制元素的显示和隐藏,控制display:nonev-html:解析DOM元素标签v-text:解析文本,v-for:使用v-for必须加key,v-bind:绑定属性,传入变量,简写:v-on:绑定事件,简写@v-slot:插槽 ,配合template使用
- v-for循环一个对象/数组
- 对象
(value,key,index)in obj,in的前面是三个变量,分别是属性值,属性名,下标 - 数组
(value,index) in arr,in的前面是两个变量,分别是值和下标
v-for里除了in还有哪种写法
- of
事件修饰符
@click.stop:【阻止冒泡】,@click.prevent:【阻止默认事件】@click.once:【只执行一次】,@click.left:【点击鼠标左键时触发】@click.right:【点击鼠标右键时触发】按键修饰符
@keyUp.13===@keyUp.enter【回车键弹起】,动态加载组件
- 使用
vue内置组件components,用is属性来动态加载组件 实例代码:
<component :is='ishome' />&<home/>import home from './home'components:{ home}- 组件缓存
使用 <keep-alive></keep-alive>,
在keep-alive上使用 include,来缓存匹配到的组件
在keep-alive上使用 exclude,来不缓存匹配到的组件
生命周期
beforeCreateCreatedbeforeMountmountedbeforeupdateupdatedbeforeDestroydestroyed发起请求在mounted里 清除定时器 ??懒加载
const Home = ()=>import('./home.vue')- 组件通信
父传子 用
props【属性】传递子传父 用自定义事件,在父组件给子组件绑定一个自定义事件
@【v-on】,子组件用@emit去调用自定义事件,并把参数传给父组件$bus是一个第三方插件,中央事件广播,不受层级的限制第一种方法 props父组件向子组件传递 主要传值,可以传方法,但不常用 父组件使用
v-bind动态绑定数据 :自定义属性名="值" 子组件使用props接收数据props:["自定义属性名"] 或者 props:{ "自定义属性名":{ type:Array, default:默认值, required:是否必填 } }第二种方法 @emit子组件向父组件传递 可以传方法或值 子组件调用@emit()方法,这个方法接收两个参数 $emit("自定义事件名称"(必写),传递的值(可选)) 父组件使用v-on 简写 @自定义事件名=""
第三种方法 $attrs 可以批量向下传递数据 attributes属性的缩写,只传属性 attributes属性,只传属性 attrs"
第四种方法 $listeners 批量向下传递方法 只传方法 listeners"
第五种方法 Provide 和 Inject 只传属性 ? 依赖注入,强制注入,可以扩展更深层的数据传递,在任何组件中都可以使用数据 优点:可以跨组件获取数据(只能从上到下),任何后代组件都能使用 缺点:只能从上到下 使用Provide 和 Inje ct实例选项,注入过来的数据,成为接收组件的属性,
第六种方法 ref的使用 属性和方法 ref:是string类型,主要用来给dom元素或子组件注册引用信息,引用信息会注册在父组件的$refs对象上 $refs :类型是object对象,持有已注册过的ref的所有子组件,(保存了所有注册过的子组件) ①如果在普通的DOM元素上使用,那么引用的注册信息指向DOM元素, ②如果在组件上使用,引用指向的是组件实例对象,那么可以获取到组件上的属性或者方法
第七种方法 EventBus ? 原理:创建一个vue实例,调用实例上的方法, 1、发送:on("自定义事件名称",function(接收的值){ 函数的参数是发送时的值}),接收/监听事件 能实现各个组件之间的通信,(父子,兄弟,跨组件) 在main.js中创建一个全新的vue实例, Vue.prototype.$bus = new Vue()
第八种方法 $parents $children 属性和方法 $parents:当前组件的直接父组件, $children:组件的直接子组件(如果有子组件),子组件会被展示成数组,没有子组件是空数组
第九种方法 vuex
- vue的递归组件
- 一个组件接收父组件传递过来的数据,进行自我调用,需要一个结束的判断,另外该组件还必须要有name属性
作用域 在style标签上加scoped,使css只对当前组件生效
vue组件的实例组成部分
name:组件名字data:数据components:局部组件computed:计算watch:监听methods:方法的集合filter:自定义过滤函数directives:自定义指令minxins:混入 将公共的一些实例上的配置做成一个单独的mixins文件,引进来之后,和我们实例上的配置做一个合并,说白了,就是给组件功能的扩展- 自定义指令
- 生命周期
computed【计算】watch【监听】的区别computed计算属性有缓存,watch没有缓存, 因为computed有缓存,当computed监听的数据发生改变时,会对比缓存值,如果新值和旧值一样,则不会触发更新watch执行是只要被监听的数据发生了改变,就会执行computed监听一个数据还要返回一个数据,watch只是监听
watch的深度监听 加deep:true