微信小程序面试总结
简略形容下微信小程序的相干文件类型?
微信小程序我的项目构造次要有四个文件类型
- WXML(WeiXin Markup Language)是框架设计的一套标签语言,联合根底组件、事件零碎,能够构建出页面的构造。外部次要是微信本人定义的一套组件
- WXSS (WeiXin Style Sheets)是一套款式语言,用于形容 WXML 的组件款式
- js 逻辑解决,网络申请
- json 小程序设置,如页面注册,页面题目及 tabBar
次要文件
- app.json 必须要有这个文件,如果没有这个文件,我的项目无奈运行,因为微信框架把这个作为配置文件入口,整个小程序的全局配置。包含页面注册,网络设置,以及小程序的 window 背景色,配置导航条款式,配置默认题目
- app.js 必须要有这个文件,没有也是会报错!然而这个文件创建一下就行 什么都不须要写当前咱们能够在这个文件中监听并解决小程序的生命周期函数、申明全局变量
- app.wxss 可选
小程序的双向绑定和 vue 哪里不一样?
小程序间接 this.data 的属性是不能够同步到视图的,必须调用:
this.setData({// 这里设置})
小程序页面间有哪些传递数据的办法?
应用全局变量实现数据传递
在 app.js 文件中定义全局变量 globalData,将须要存储的信息寄存在外面
// app.js
App({
// 全局变量
globalData: {userInfo: null}
})
应用的时候,间接应用 getApp() 拿到存储的信息
应用 wx.navigateTo 与 wx.redirectTo 的时候,能够将局部数据放在 url 外面,并在新页面 onLoad 的时候初始化
// Navigate
wx.navigateTo({url: '../pageD/pageD?name=raymond&gender=male',})
// Redirect
wx.redirectTo({url: '../pageD/pageD?name=raymond&gender=male',})
// pageB.js
...
Page({onLoad: function(option){console.log(option.name + 'is' + option.gender)
this.setData({option: option})
}
})
须要留神的问题:
wx.navigateTo 和 wx.redirectTo 不容许跳转到 tab 所蕴含的页面
onLoad 只执行一次
应用本地缓存 Storage 相干
小程序的生命周期函数
- onLoad 页面加载时触发。一个页面只会调用一次,能够在 onLoad 的参数中获取关上以后页面门路中的参数
- onShow() 页面显示 / 切入前台时触发
- onReady() 页面首次渲染实现时触发。一个页面只会调用一次,代表页面曾经筹备得当,能够和视图层进行交互
- onHide() 页面暗藏 / 切入后盾时触发。如 navigateTo 或底部 tab 切换到其余页面,小程序切入后盾等
- onUnload() 页面卸载时触发。如 redirectTo 或 navigateBack 到其余页面时
微信小程序的优劣势
劣势
- 即用即走,不必装置,省流量,省安装时间,不占用桌面
- 依靠微信流量,天生推广流传劣势
- 开发成本比 App 低
毛病
- 用户留存,即用即走是劣势,也存在一些问题
- 入口绝对传统 App 要深很多
- 限度较多, 页面大小不能超过 2M。不能关上超过 10 个层级的页面
如何实现下拉刷新
首先在全局 config 中的 window 配置 enablePullDownRefresh
在 Page 中定义 onPullDownRefresh 钩子函数, 达到下拉刷新条件后,该钩子函数执行,发动申请办法
申请返回后,调用 wx.stopPullDownRefresh 进行下拉刷新
bindtap 和 catchtap 的区别是什么
相同点 :首先他们都是作为点击事件函数,就是点击时触发。在这个作用上他们是一样的,能够不做辨别
不同点:他们的不同点次要是 bindtap 是不会阻止冒泡事件的,catchtap 是阻值冒泡的
简述下 wx.navigateTo(), wx.redirectTo(), wx.switchTab(), wx.navigateBack(), wx.reLaunch()的区别
wx.navigateTo():保留以后页面,跳转到利用内的某个页面。然而不能跳到 tabbar 页面
wx.redirectTo():敞开以后页面,跳转到新的页面(相似重定向)。然而不容许跳转到 tabbar 页面
wx.switchTab():跳转到 tabBar 页面,并敞开其余所有非 tabBar 页面
wx.navigateBack() 敞开以后页面,返回上一页面或多级页面。可通过 getCurrentPages() 获取以后的页面栈,决定须要返回几层
wx.reLaunch():敞开所有页面,关上到利用内的某个页面
登录流程?
登录流程是调 wx.login 获取 code 传给后盾服务器获取微信用户惟一标识 openid 及本次登录的会话密钥(session_key)等)。拿到开发者服务器传回来的会话密钥(session_key)之后,前端要保留 wx.setStorageSync(‘sessionKey’, ‘value’)
长久登录状态:session 信息寄存在 cookie 中以申请头的形式带回给服务端,放到 request.js 里的 wx.request 的 header 里
罕用指令
wx:for、wx:if