【知识总结】前端高频微信小程序面试题合集

如何避免微信小程序中app.js中onShow事件的n次出发问题

在开发中,遇到一个一个小难题,就是app.js中onShow事件会因调用其他API而触发,比如,wx.chooseImage、wx.makePhoneCall、wx.previewImage。

小程序热启动确实是一个坑,因为通过扫码或者分享进入也会热启动,一般开发者都只在onLaunch处理扫码进入的相关逻辑,热启动时就出bug了。

目前比较好的办法就是onShow中通过首个参数option时下的scene判断进入的场景,根据场景处理相关逻辑。

如果是转发的场景的话,可以把业务代码写在onLoad函数,因为分享后的事件不会执行onLoad,只会执行onShow。

简单描述下微信小程序的相关文件类型

  • WXML:是框架设计的一套标签语言,结合基础组件、事件系统,可以构建出页面的结构。
  • WXSS:是一套样式语言,用于描述WXML组件样式。
  • js:处理逻辑,网络请求。
  • json:小程序设置,如页面注册、页面标题及tarBar。

你是怎么封装微信小程序的数据请求的

  • 将所有的接口放在js文件中并导出
  • 在app.js中创建封装请求数据的方法
  • 在子页面中调用封装的方法请求数据

有哪些参数传值的方法

  • 给html元素添加data属性来传递我们需要的值,然后通过e.currentTarget.dataset或onload的param参数获取。但data名称不能有大写字母,不可以存放对象。
  • 设置id的方法标识来传值通过e.currentTarget.id获取设置的id的值,然后通过设置全局对象的方式来传递数值。
  • 在navigator中添加参数传值。

你使用过哪些方法来提高微信小程序的应用速度

  • 提高页面加载速度
  • 用户行为预测
  • 减少默认data的大小
  • 组件化方案

怎么解决小程序的异步请求问题

在回调函数中调用下一个组件的函数

app.js

success:function(info){
    
    
	that.apitnCallback(info)
}

index.js

onLoad:function(){
    
    
	app.apitnCallback = res=>{
    
    
		console.log(res)
	}
}

小程序的双向绑定和vue哪里不一样

小程序直接this.data的属性是不可以同步到视图的,必须调用:

this.setData({
    
    noBind:true})

如何实现下拉刷新

首先在全局config中window配置enablePullDownRefresh

在Page中定义onPullDownRefresh钩子函数,到达下拉刷新条件后,该钩子函数执行,发起请求方法,请求返回后,调用wx.stopPullDownRefresh停止下拉刷新。

bindtap和catchtap的区别是什么

相同点

扫描二维码关注公众号,回复: 13300001 查看本文章

首先他们都是作为点击事件函数,就是点击时触发。在这个作用上他们是一样的,可以不做区分。

不同点

他们的不同点主要是bindtap是不会阻止冒泡事件的,catchtap是阻止冒泡的。

简述下wx.navigateTo()、wx.redirectTo()、wx.switchTab()、wx.navigateBack()、wx.reLaunch()的区别

  • wx.navigateTo():保留当前页面,跳转到应用内的某个页面。但是不能跳转到tabbar页面。
  • wx.redirectTo():关闭当前页面,跳转到应用内的某个页面。但是不能跳转到tabbar页面。
  • wx.switchTab():跳转到abBar页面,并关闭其他所有非tabBar页面。
  • wx.navigateBack():关闭当前页面,返回上一页或者多级页面。可通过getCurrentPages()获取当前的页面栈,决定需要返回几层。
  • wx.reLaunch():关闭所有页面,打开到应用内的某个页面。

猜你喜欢

转载自blog.csdn.net/weixin_42224055/article/details/120394089