vue的原理
vue2是基于订阅发布者模式,用ES5中的object.defiend.protype对所有属性进行劫持转化setter和getter,当数据变动时通知发布者,触发相应的回调。
vue在什么时候一定要使用$set
一是通过数组下标改变数组中的值的时候,二是给data中定义的对象添加新的属性,需要使用到 $set(target,key,value),这里面vue.set是挂载到vue1上,this.set是挂载到vue的原型对象上,源码里数组改变是用splice(index,1,value)实现的响应式。
自定义组件怎么使用v-model
自定义封装的组件,在子组件中配置model对象,prop是穿过来的值,event是值改变触发的函数,在props里接收数据,在子组件身上绑定函数。
都封装过什么组件
封装过轮播图,select下拉框,基于antddesign封装过datepicker组件
埋点怎么做,怎么排布合理
埋点就是记录页面中用户的行为,记录用户添加,删除,修改,查询行为发送给后端
数组去重
双重for循环配合splice,new set去重,for循环配合indexof去重
闭包,防抖,节流,垃圾回收
事实上
浏览器处理过什么兼容性问题
CSS里 *{margin:0;padding:0;}
给超出高度的标签设置overflow:hidden;或者设置行高line-height 小于你设置的高度。
因为img标签是行内属性标签,所以只要不超出容器宽度,img标签都会排在一行里,但是部分浏览器的img标签之间会有个间距。去掉这个间距使用float是正道
第一类:块状元素float后,有添加了横向的margin,在IE6下比设置的值要大(属于双倍浮动的bug)
解决方案:给float标签添加display:inline,将其转换为行内元素
第三类:设置较小高度的容器(小于10px),在IE6下不识别小于10px的高度;
解决方案:给容器添加overflow:hidden;
首页白屏怎么处理,加loading,骨架屏,路由懒加载,图片懒加载,预渲染。
WebScoket
WebScoket 是一种在单个 TCP 连接上进行全双工通信的协议。与 HTTP 不同,它以 ws:// 或 wss:// 开头(分别表示 WebScoket 和安全 WebScoket 连接)。一旦通信连接建立和连接打开后,消息交换将以双向模式进行,不必在浏览器(客户端)发送 request 之后服务器才能发送信息到浏览器,这时候服务器有主动权,可以随时发消息给浏览器(客户端),客户端和服务器之间的连接也会持续存在,直到其中任何一方(客户端或服务器)宕掉或主动关闭连接,双方才关闭连接。
webpack怎么组成
,做plagin和loader的插件,entry,output,model.
Echartss怎么组成,写没写过滚动条,双Y轴怎么实现
title,toolitip,Xaxis,Yaxis,series,datazoom,visualmap不同区域颜色区分,
vue双向绑定改变数组的7个方法,reserve会改变原数组吗
push,unshift,pop,shift,splice,sort,reverse,reserve会改变原数组
用过vuex吗,什么时候在vuex发请求
在action中发请求,请求的数据是多个组件的公用数据时
router和route的区别
router是操作路由的,存放路由的方法,router.push,router.replace,
route是获取路由信息的,是当前正在跳转路由的信息对象,获取name,path,params,query.
vue的常用修饰符
.stop阻止冒泡,.once触发一次,.prevent阻止默认行为,.self自身触发
如何获取子元素的父元素下的所有子元素并遍历
parentNode,childrenNode,for循环遍历