一、手写swiper左右切换原理
二、promise执行顺序
三、vue组件之间传值有几种
l 父子通信 (1)(2)(5)(6)
l 兄弟通信 (3)(4)
l 跨级通信 (3)(4)(6)(7)
(1)父->子 props
(2)子->父 $emit
(3)兄弟 bugs事件总线
(4)vuex 状态管理
(5)children 或 $refs访问组件实例
(6)多层父子组件通信provide / inject
(7)listeners
四、数组去重(至少2种)
1)循环+indexOf
let arr = [1,3,6,6,9,3,3,5,5,5,7];
let temp = [];
for(var i=0; i<arr.length;i++){
if(temp.indexOf(arr[i])== -1){
temp.push(arr[i])
}
}
console.log(temp)
2)Set去重
// Set数据结构,它类似于数组,其成员的值都是唯一的
// 利用Array.from将Set结构转换成数组
function format(array){
return Array.from(new Set(array))
}
let arr = format([1,3,6,6,9,3,3,5,5,5,7])
console.log(arr)
五、css优先级
用权重值计算
!import>内联(1000)>id选择器(100)>(属性选择器=class选择器=伪类选择器)(10)> 元素选择器(1) > 通配符*
六、css垂直水平居中(至少2种)
<div class="center">垂直水平居中</div>
1)宽高已知
.center {
background: #ccc;
width: 100px;
height: 100px;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
}
或者
.center {
background: red;
width: 100px;
height: 100px;
position: absolute;
top: 50%;
left: 50%;
margin: -50px 0 0 -50px;
}
2)宽高未知
.center {
color: red;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
}
3)使用flex布局
<div class="wrap">
<div class="item">test</div>
</div>
.wrap {
width: 100%;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
}
.item {
color: red;
}
七、微信小程序授权失败如何处理
八、实现一个三列布局,第一列是150px,第三列是第二列的一半
九、微信小程序生命周期
App 应用生命周期
1)onLaunch:初始化小程序时触发,全局只触发一次
2)onShow:小程序初始化完成或用户从后台切换到前台显示时触发
3)onHide: 用户从前台切换到后台隐藏时触发
4)onError: 小程序发生脚本错误,或者 api 调用失败时,会触发 onError 并带上错误信息
Page 页面生命周期
1)onLoad:首次进入页面加载时触发,可以在 onLoad 的参数中获取打开当前页面路径中的参数
2)onShow:加载完成后、后台切到前台或重新进入页面时触发
3)onReady:页面首次渲染完成时触发
4)onHide:从前台切到后台或进入其他页面触发
5)onUnload:页面卸载时触发
⻚⾯⽣命周期的执行过程:
⼩程序注册完成后,加载⻚⾯,触发onLoad⽅法
⻚⾯载⼊后触发onShow⽅法,显示⻚⾯
⾸次显示⻚⾯,会触发onReady⽅法,渲染⻚⾯元素和样式,⼀个⻚⾯只会调⽤⼀次
当⼩程序后台运⾏或跳转到其他⻚⾯时,触发onHide⽅法
当⼩程序有后台进⼊到前台运⾏或重新进⼊⻚⾯时,触发onShow⽅法
当使⽤重定向⽅法 wx.redirectTo() 或关闭当前⻚返回上⼀⻚wx.navigateBack(),触发onUnload
当存在也应用生命周期和页面周期的时候,相关的执行顺序如下:
打开小程序:(App)onLaunch --> (App)onShow --> (Pages)onLoad --> (Pages)onShow --> (pages)onRead
进入下一个页面:(Pages)onHide --> (Next)onLoad --> (Next)onShow --> (Next)onReady
返回上一个页面:(curr)onUnload --> (pre)onShow
离开小程序:(App)onHide
再次进入:小程序未销毁 --> (App)onShow(执行上面的顺序),小程序被销毁,(App)onLaunch重新开始执行.
十、微信小程序跳转传值
<view bindtap="onPostClick"></view>
wx.navigateTo({
url: '../groupWriteTalk/groupWriteTalk?project_id=' + this.data.id
})
onLoad: function (options) {
var that = this;
that.setData({
project_id: options.id
})
},
十一、vue2与vue3的区别
十二、路由全局守卫的作用
十三、call bind apply区别
作用:重新定义this指向,改变作用域
区别:就是 call/apply 绑定后是立即执行,而 bind 绑定后是返回引用待调用