vue
vue面试
1.computed计算属性
计算属性会对结果进行一个缓存,不同于methonds,如果data不发生变化的话,是不会重新计算结果的,而methonds则是每次运行就会计算一次,并没有缓存
2.v-model绑定计算属性
需要写入get()set()两个方法
3.watch监听(深度浅度)
watch默认是浅监听的,对于值类型可以拿到正常的旧值,但是如果是引用类型的话,浅监听是拿不到的,必须对其进行设置deep:true;

4.动态绑定class(style要用驼峰标识

动态添加样式就是:style

5.v-if,v-show选择
如果需要在两者之间来回切换的话,那么就可以用v-show
因为v-show是将结点给渲染出来了,只是挑一个去显示,其他的都会给设置样式为display:none,而v-if,如果条件不满足就会被销毁,条件满足的就会重新渲染,所以,如果是多次切换的话,用v-show效率会更高
6.event
event获取的是原生的event对象,不加任何装饰,而且事件是挂载到当前元素上的
envent.target就表示事件的目标是谁,就比如输入框中输入字符串,event.target就是输入框,此时event的目标就是输入框,然后event.target.value就是输入框中的内容
7.事件修饰符
vue可以在标签事件中直接跟上事件修饰符,就不需要在函数中定义了

按键修饰符

8.v-model常用于表单
v-model常用于表单绑定,当data数据中发生变化时,表单也随之发生变化
9.自定义事件$emit $on
其中$emit可以用于父子组件通讯
子组件通常通过插槽写在父组件中,然后父组件可以在子组件插槽上写入自定义得事件名,然后子组件通过$emit向该事件传递数据或者其他信息,然后父组件就会调用该事件绑定的函数进行处理。
$emit也可以跟兄弟组件进行通讯,通过$on的方式
通过在一个组件中用$on去绑定一个事件形如event.$on('add',this.addlist)
之后通过在其他组件中用$emit去触发,发射一个事件形如event.$emit('add',this.data)实现两个组件中的数据交互
另外自定义组件需要及时销毁,否则会导致内存泄漏
event.$off('add',this.addlist)
10.在自定义组件中使用v-model
在实际开发过程中,很可能会将表单写到子组件中,然后你需要对其进行动态绑定,所以就用到了在父组件中为自定义组件绑定v-model
要想使用这个v-model,需要在子组件中设置一个
1 | model:{ |
其中父组件中v-model的值==默认==会传入到子组件中model的名为prop属性中,也就是text,同时在props中对应了一个text表示这个是父组件传过来的,会将这个值与父组件进行绑定
同时也需要自己在model中设置一个event事件,就随便写个名字,没啥大用,但是少了不行,这玩意相当于父子组件传参,没这玩意父组件接不到数据(因为看到了$emit)
父组件:
子组件:

11.使用ref来获取DOM元素
通过在标签中定义<ul ref= 'ul1'>
后续在methonds或者其他函数里面可以调用this.$refs.ul1来获取到DOM元素
12.获取最新DOM元素
背景:vue是异步渲染DOM元素的
$nextTick()函数会等待DOM渲染完成后进行一次回调,此时在$nextTick()中传入回调函数,就可以查询到最新的DOM元素
13.slot插槽
基本使用是在子组件模板中写入<slot>标签
我感觉比较常用的应该是具名插槽,可以对插槽进行命名
比如
1 | <template v-slot:header> |
1 | <slot name="header"></slot> |
作用域插槽

不太常用直接放图了,看官方描述的应该是不能和name混用(?)
14.:is动态组件
格式:
1 | <component :is="itemName"/> |
1 | import item from "./item" |
上方通过:is绑定了data中的数据itemName是什么,那么就会渲染什么组件,前提是名字得一样
15.axios封装
想先提一下axios.get中的.get是如何实现的
因为js中的数组的原型是对象,所以,对象对属性的访问方式同样适用于数组,在控制台中数组是这样的

他是以key:value的形式,所以可以通过arr.0来获取第一个字符串
所以axios.get实现也是类似,这个get就可以是索引值,然后返回一个函数
下面是二次封装axios,对配置信息进行加工
1 | function request(options){ |
接着就是对axios函数请求方式的函数外封装
1 | ['get','post','put','delete','patch'].forEach(item=>{ |






