各位朋友,很久没见了,#xff00c;突然想起微信小程序没有给大家整个面经,废话不多说开干!
1.wxml和html有什么区别?
①使用不同的标签。
②提供wxml和vuee.类似于js模板语法的模板语法,而html没有。
③html浏览浏览器,微信或开发工具中的wxml。
④wxml标签必须是结束符>
2.wxs和css有什么区别?
①不同的单位:css:px,wxss:rpx。
②wxss不能使用本地图片需要使用 @import 引入 外联风格文件地址为相对路径。
③WXSS 和 CSS 大多数情况下,语法是相似的,但 WXSS 有一些特定的扩展和限制。例如,WXSS 支持一些特定的选择器,如 .class、#id、element、element,element、:pseudo-class、::pseudo-element 等,但它不支持 CSS 一些高级选择器,如属性选择器 [attribute]。
3.小程序的双向绑定与Vue不同。
3.小程序的双向绑定与Vue不同。
小程序 直接使用this.data.key = value 是 不能在视图中更新。
必须使用 this.setData({ key : value }) 来更新值。
例如栗子:
首先,用bindinput触发input输入框中的值。
2,使用data-name获取更改数据的内容。
3, bindinput触发后,通过e方法.currentTarget.dataset.name获取变更后的内容。
4, 通过this.setData()改变data-name绑定的参数。
4.小程序的生命周期是什么?
当你在脑海中问到这个问题时,你需要想到三种这是面试官想要得到的答案。
①应用的生命周期。
②页面的生命周期。
③组件的生命周期。
应用生命周期。
app的生命周期函数是app.js中调用的,通过App(Object)函数用于注册一个小程序,指定其小程序的生命周期回调。 | 生命周期。 |
---|
说明。 | onLaunch。 |
小程序初始化完成时触发#xff0c;全局只触发一次。 | onShow。 |
小程序启动或从后台进入前台显示时触发。 | onHide。 |
当小程序从前台进入后台时触发。 | onError。 |
小程序脚本错误或小程序脚本错误 API 调用报错时触发。 | onPageNotFound。 |
当不存在时,触发小程序要打开的页面。 | onUnhandledRejection()。 |
未处理的小程序 Promise 拒绝时触发。 | onThemeChange。 |
触发系统切换主题。
页面生命周期。
页面生命周期函数是当你进入/切换到一个新页面时,将调用的生命周期函数,也通过App(Object)函数用于注册一个页面。 | 生命周期。 | 说明。 |
---|
作用。 | onLoad。 | 生命周期回调-监控页面加载。 |
发送请求以获取数据。 | onShow。 | 生命周期回调-监控页面显示。 |
请求数据。 | onReady。 | 生命周期回调-监控页面首次渲染完成。 |
获取页面元素(少用) | onHide。 | 回调生命周期-隐藏监控页面。 |
终止任务如定时器或播放音乐。 | onUnload。 | 生命周期回调-监控页面卸载。 |
终止任务。
组件的生命周期。
组件的生命周期,指组件本身的一些函数,这些函数在特殊时间点或遇到一些特殊框架事件时自动触发,Component通过Componentnt(Object)注册组件。 | 生命周期。 |
---|
说明。 | created。 |
生命周期回调-监控页面加载。 | attached。 |
生命周期回调-监控页面显示。 | ready。 |
生命周期回调-监控页面首次渲染完成。 | moved。 |
回调生命周期-隐藏监控页面。 | detached。 |
生命周期回调-监控页面卸载。 | error。 |
当组件方法抛出错误时执行。
当组件实例刚刚创建时,#xff0c; created 触发生命周期,此时,组件数据 this.data 就是在 Component 定义在构造器中的数据 data , 此时无法调用 setData。
组件完全初始化,进入页面节点树后, attached 触发生命周期。此时, this.data 已初始化为组件的当前值。这个生命周期非常有用这个时候可以做绝大多数的初始化工作。
组件离开页面节点树后 detached 触发生命周期。退出页面时,如果组件仍在页面节点树中,则 detached 会被触发。
特殊的生命周期。
它们与组件没有很强的相关性,但有时组件需要知道,便于组件内部处理,这种生命周期被称为“组件所在页面的生命周期”,在 pageLifetimes 定义段中的定义。 | 生命周期。 |
---|
说明。 | show。 |
显示组件所在的页面时执行。 | hide。 |
当组件所在的页面被隐藏时执行。Component。(。{ 。// 隐藏页面。}。,}。}。
)。
5.微信小程序中路由跳转的方式有哪些?区别?
wx.navigateTo(Object)。
用于保留当前页面并跳转到应用程序中的页面,使用 wx.navigateBack可以返回到原始页面。

页面不是特别多的小程序,通常推荐使用 wx.navigateto跳转, 回到原页,提高加载速度。当页面特别时,不建议使用。
wx.redirectTo(Object)。
重定向,页面过多时,被保留的页面会挤压微信分配给小程序的内存,或者达到微信的限制 10 在层页堆栈的情况下,我们应该考虑选择 wx.redirectTo。
wx.redirectTo()关闭当前页面,跳转到应用程序中的某个页面。

这种跳转,可以避免跳转前页面占据运行内存,但返回时,页面需要重新加载返回页面的显示时间增加了。
wx.switchTab(Object)。
跳转到 tabBar 页面,并关闭所有其他非 tabBar 页面。
wx.navigateBack(Object)。
用于关闭当前页面,返回上一页或多层页面,开发人员可以通过 getCurrentPages() 获取当前页面栈,设置对象的delta属性可以决定返回多个层次。
wx.reLaunch(Object)。

关闭所有页面在应用程序中打开页面,返回时跳到主页。
- 总结。
- navigateTo 保留当前页面,跳转到应用程序中的页面,使用 wx.navigateBack 可返回原页。
- redirectTo 关闭当前页面跳转到应用程序中的某个页面。
- switchTab 跳转到 tabBar 页面,同时,关闭其他非tabarar 页面。
- navigateBack 返回上一页。
reLanch 关闭所有页面在应用程序中打开一个页面。
- 关于页面的堆叠和堆叠。
- avigateTo 新页面进入栈。
- redirectTo 当前页面出栈新页面进入栈。
- navigateBack 页面不断出栈直到目标返回页新页面进入栈。
- switchTab 页面全部出栈只留下新的 Tab 页面。
reLanch 页面全部出栈只留下新页面。
6.小程序如何实现下拉刷新?
方案 一 :
通过在 app.json 中, 将 “enablePullDownRefresh”: true, 打开全局下拉刷新。
或者通过在 组件 .json , 将 “enablePullDownRefresh”: true, 下拉刷新单组件。
方案二:
scroll-view : 使用滚动组件 自定义刷新通过 bindscrolltoupper 属性, 滚到顶部/左侧,会触发 scroltouper事件c;因此,我们可以使用这个属性,实现下拉刷新功能。
7.bindtap 和 catchtap 区别。
7.bindtap 和 catchtap 区别
相同点: 都是点击事件。
- 不同点: bindtap 不会阻止冒泡 catchtap 可防止冒泡。
8.小程序传输数据的方法有哪些?
使用全局变量。
在 app.js 中的 this.globalData = { } 将要存储的数据放入其中。 - 在 组件.js 中, 头部 引入 const app = getApp(); 获得全局变量。
直接使用 app.globalData.key 赋值和获取值。 - 使用 路由。
wx.navigateTo 和 wx.redirectTo 时,可以通过在 url 后 拼接 + 变量, 然后在 目标页面 通过在 onLoad 在周期中c;传递的值通过参数获得。
使用本地缓存。
9.小程序 wx:if 和 hidden 的区别。
wx:if : 切换消耗较高。
hidden : 初始渲染消耗较高。
使用场景:
经常切换使用 hidden, 使用条件在运行过程中发生变化 wx: if。
10.如何包装小程序请求。
封装 wx.request 要求传递所需的参数( url , data , method , success 成功回调 , fail 失败回调 ) , 常用的封装方法 POST , GET , DELETE , PUT … 最后导出这些方法。
然后新建一个 api.js 文件,导入包装的方法,然后转移相应的方法,传递数据。封装wx.request。 var。app。=getApp。(。)。;//获取小程序全局唯一的app实例。 var。host。='