(1)垂直居中的几种方式
text-align和vertical-align;绝对定位和transform;绝对定位和负外边距;绝对定位和margin:auto;flex布局;table-cell布局
(2)列举几个vue生命周期并说明用处
beforeCreate:加loading事件,在加载实例时触发
created:写初始化完成时的事件,如结束loading事件,异步请求也可以在这里调用
mounted:挂载元素,获取DOM节点
updated:写对数据统一处理的函数
beforeDestroy:写确认停止事件的确认框
nextTick:更新数据后立即操作DOM
(3)组件之间的传值是怎么实现的
父--->子,子组件 :[props]='父data'
子--->父(点击子组件按钮,调用父组件方法),
子@click='send',methods:send(){ this.$emit('connect',this.msg)}
父 监听这个$emit事件,@connect = 'say';methods:say(msg){}
同级组件:空的中间实例,实际开发中使用管理状态的vuex
(4)vue路由跳转携带参数query和params有什么不同
query传参:可以传递多个参数,域名/list?name=aaa&pass=bbb;不需要另外配置路由
params传参:只能传一个参数,域名/list/3;需要配置路由
(5)如何刷新vue组件【参考链接https://www.cnblogs.com/yinn/p/9056731.html】
hack方式强制子组件重置到初始状态
<component v-if="hackReset"></component>
this.hackReset = false;
this.$nextTick( () = > {
this.hackReset = true
})
(6)es6中新增了什么,列举几个说明
let;const常量;箭头函数;解构赋值;剩余参数(...arr);promise(异步);Math(.trunc();.sign());Symbol(解决属性命名的问题);模板字符串(反引号 `${}`,减少很多+)
数组遍历(for of)可以break和continue【for(let value of arr){value是数字类型};for(let index of arr.keys()){数字类型的索引}】
findIndex(-1表示不存在)
(7)es6中的Set和Map有什么不同
Set去重,解构的成员值没有重复的,都是唯一的,解构的键名和键值是同一个值,在Set内部两个NaN是相等的,两个对象总是不相等的。可以用length检测
四个操作方法: add(value):添加某个值,返回Set结构本身;delete(value):删除某个值,返回一个布尔值,表示删除是否成功;has(value)返回一个布尔值,表示该值是否为Set的成员;clear():清除所有成员,没有返回值;
set内部元素可以遍历for...of...
Map提供了“值-值”的对应,它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当做键。注意,只有对同一个对象的引用,Map结构才将其视为同一个键。这一点要非常小心。
如果Map的键是一个简单类型的值(数字、字符串、布尔值),则只要两个值严格相等,Map将其视为一个键,包括0和-0。另外,虽然NaN不严格相等于自身,但Map将其视为同一个键。
实例属性和方法:size、set、get、has、delete、clear
遍历方法:keys()、values()、entries()、forEach()
(8)js继承的方式都有哪些【https://www.cnblogs.com/humin/p/4556820.html】
(9)vuex是什么,怎么使用,哪种功能场景使用它
vue框架中的状态管理。在main.js中引用store,注入。新建一个目录store,内容包括state,mutation,action。
使用场景:单页应用中,组件之间的状态。音乐播放,登录状态,加入购物车
(10)以下js的打印结果是什么
setTimeout(function(){
console.log(1)
},0);
new Promise(function(a,b){
console.log(2);
for(var i=0;i<10;i++){
i=9 && a ()
}
console.log(3)
}).then(function(){
console.log(4)
});
console.log(5);
答案:23541;因为setTimeout是异步,不管设置多长时间,都是等其他运行结束,它再运行