微信小程序主要目录和文件的作用?
1.wxml:页面结构
2.wxss:页面样式表
3.js:页面逻辑,请求和数据处理
4.json:配置当前页面标题和引入组件等
5.pages:所有的页面内容
6.app.js:监听并处理小程序的声明周期函数、声明全局变量等
7.app.json:整个小程序的全局配置,例如底部tab栏等
8.app.wxss:公共样式
wxml和html的异同?
相同:
1.都是用来描述页面结构
2.都是由标签、属性构成
不同:
1.标签名字不一样,小程序标签更少,单一标签更多
2.多了一些wx:if这样的属性以及{{}}这样的表达式
3.wxml仅能在微信小程序开发者工具中预览,但是html可以在浏览器内预览
4.组件封装不同,wxml对组件进行了重新封装
5.小程序运行在js core中,没有dom树和window对象,小程序中无法使用window对象和document对象
小程序的双向绑定和vue的异同?
大体相同,但是小程序之间this.data属性不可以同步到试图,需要调用this.setData()方法
Vue和小程序一些不同?
1.双向绑定:vue默认支持,小程序需要借助data
2.取值:vue中this.userInfo,小程序this.data.userInfo
3.定义方法:vue在methods中定义(vue3可以直接在js中写),小程序直接在js文件中定义即可
小程序的生命周期?
1.onLoad() 页面加载时触发,只触发一次,可获取当前页面路径中的参数
2.onShow() 页面显示/切入前台时触发,一般用来发送数据请求
3.onReady() 页面初次渲染完成时触发,只调用一次,代表页面可与视图层交互
4.onHide() 页面隐藏/切入后台时触发,如底部tab切换到其他页面或者小程序切入后台
5.onUnload() 页面卸载时触发,如redirectTo或navigateBack页面时
6.onPullDownRefresh() 下拉刷新的钩子函数
7.onReachBottom() 上拉加载下一页的钩子函数
简述微信小程序原理?
小程序分为两部分webview和appservice,webview用来展示UI,appservice用来处理业务逻辑、数据和接口调用,它们在两个进程中进行,通过系统层JSBridge实现通信,完成UI渲染,事件处理;
小程序的优势和劣势?
优势:
1.容易上手,基础组件库比较完善,基本不需要考虑兼容问题;
2开发文档比较完善,开发社区比较活跃,支持插件式开发;
3.良好的用户体验,无需下载,搜索和扫一扫即可打开,速度很快,安卓可以添加到桌面,和原声app差不多
4.开发成本比app低
5.为用户提供良好的安全保障
劣势:
1.限制较多,单文件包不能超过2M,不能打开超过十个层级的页面;
2.样式单一,有的组件不能再被修改,例如导航、幻灯片等
3.推广面窄,不能分享朋友圈,只能通过分享给朋友,附近小程序推广
4.依托于微信,无法开发后台管理功能
5.后台调试麻烦,因为api接口必须https且公网地址
6.真机测试,个别功能安卓和苹果表现迥异,例如安卓的定位功能加载很慢
如何实现下拉刷新?
1.先在app.json或page.json中配置enablePullDownRefresh为true
2.page里使用onPullDownRefresh函数,在下拉刷新时执行
3.在下拉函数执行时发起数据请求,请求返回后,调用wx.stopPullDownRefresh停止下拉刷新状态
bindtap和catchtap的区别是什么?
Bindtap不会阻止冒泡事件,catchtap阻止冒泡事件
小程序关联微信公众号如何确定用户的唯一性?
使用wx.getUserInfo方法withCredentials为true时,可获取encryptedData,里面有uniion_id需要对称解密
wx.navigateTo(),
wx.redirectTo(),
wx.switchTab(),
wx.navigateBack(),
wx.reLaunch()的区别?