支付宝小程序:(2020.12.4 - 2022-3期间修改)
1.自定义组件内声明的事件,事件处理函数只能写在自定义组件js中进行管理。
2.template模板中不能引用自定义组件。并且如果要动态渲染某一个字段,必须在page的data对象里声明一个配置对象。
例如:data:{indexBannerConfig:{indexBannerList:''}} this.setData({{indexBannerList:[...,...,]}} 然后用template的 data属性就行传递
3.axml的style处理形式:
4.axml的属性要绑定动态数据不需要加双引号,wxml,swan需加双引号。
5.tab组件的tab-content不能用a:for循环
6.image,依赖引入资源时可以使用绝对路径。引入自定义组件不行
7.自定义组件声明的事件如何放在page里统一管理?
首先子组件声明的事件,只能在子组件中设置监听函数。子组件内部的数据只能由子组件使用this.setData来更改,父组件触发无用。
子组件
转成字符串。
父组件
8.多目运算法
this.maskRight=(speed<18 || speed>95) ? 0 :((speed>18 && speed<=85)? 1080 : 1080 - 1080/10(speed-85)) /遮罩层距离右边*/
9.async和await处理异步
async doOne(){
let res = await this.doTwo() //await接受一个promise对象
console.log(res)
},
async doTwo(){
return new Promise(res=>{
res('1233')
})
}
10.绝对不要这样赋值
App({ isAuthorized:false},onLaunch,onShow) //在onLaunch,onShow中进行”this.isAuthorized=true"改变
然后page里的data({isAuthorized:app.isAuthorized})//只会获取默认的false,必须通过setData进行更新
this.setData({isAuthorized:app.isAuthorized})
11.防抖:n秒内,传参函数延迟执行,也就是说用户在主handler函数里点击多次,触发多次响应函数会延迟执行,但不会只执行一次;
节流:n秒内,传参函数延迟执行,也就是说用户在主handler函数里点击多次,触发多次响应函数会只执行一次
12.
组件展示固定在小程序页面顶部,加载显示时会有向下推出动画;
组件一共2套显示风格,深色和浅色,会根据 title bar 的背景颜色自动选择,如果title bar是深色,那组件就是深色风格,反之如果是浅色,那组件就是浅色风格;
组件是为有关联财富号的小程序打造的一键关注财富号,并收藏小程序的功能;
如果小程序没有收藏,并且没有关注关联的财富号,组件按钮显示“立即添加”,logo是对应的财富号,title是对应的财富号名称,点击logo或文字跳转到对应的财富号页面,点击“立即添加”,成功变成“查看”,之后“查看”也是对应跳到财富号页面;
如果小程序已收藏,但没有关注财富号,组件按钮显示“关注”,其余的操作&显示和第4条一致;
如果小程序已关注,但未收藏,组件按钮显示“收藏”,logo是对应小程序logo,logo和文字不可点击,“收藏”成功之后,按钮消失;
如果小程序已关注&已收藏,组件不显示;
组件点击关闭按钮,组件消失,并有向上推的动画;
组件有4种事件可添加捕获,关闭,关注&收藏,关注,收藏;
问题1:测试的时候,为什么组件不出现了?
回答:
- 组件的出现有统一的疲劳度控制,若用户点击关闭组件后,3天内不再出现组件;
- 用户最多有3次关闭组件行为,即用户有一次关闭组件,后续组件显示中,如果再被关闭第二次、第三次时,永远不再对该用户显示组件;若要处理该情况,可以重新安装客户端包;
- 组件对应支付宝最低版本是10.1.55,低于这个版本组件不显示;
- 对于网络异常,网络错误等原因,组件也是降级不显示;
- 如果使用组件的小程序,没有关联的财富号,组件也不显示;
- 如果小程序已经实现了收藏,并且对应的财富号已经关注,也不显示;
13.
①小程序模板消息退订,步骤如下:
1、在“服务提醒”页面,左滑单条消息;
2、点击“退订此类消息”;
14.消息订阅插件会存在点击'拒绝,下次不再访问'或者’同意接受消息‘都会走success回调,如果要监听’拒绝下次不再访问‘可以通过
res.refuse字段来操作,为true代表用户点击了 下次不再展示.
15.关于scroll-view组件设置scroll-left(横向滚动条位置)属性不生效?
一般在页面加载时我们会请求数据,并渲染列表, 但是我们在标签或者data中设置的scroll-left值会在数据渲染前赋值.
此时的scroll-view中还是空的,所以scroll-left不会生效. 我们应该在数据渲染到scroll-view中以后,再同步scroll-left的值
https://blog.csdn.net/qq_4220...
16.my.ap.navigateToFinance()会在IOS跳转过程中闪一下,进入onShow生命周期函数,安卓不会。
17.点击小程序的返回按钮,返回上一个页面,并不会重置app和上一个page页面的数据。相当于执行了 my.navigateBack().
18.alipays://platformapi/startapp?appId=2021002112625176&page=pages/index/index?fromCard=1;外部小程序跳转链接地址
19.使用my.ap.navigateToFinance()时在ios手机上会默认执行进入一次page的onshow函数。
20.页面onLoad函数和app的onLaunch函数如果都存在异步行为,小程序是没法阻止onLoad函数后执行。如果有异步操作,只能在页面onLoad函数里调用app的一个具有promise的方法进行同步操作,
如在app.js声明userLogin方法,该方法返回一个promise对象,在onLoad里进行执行,通过.then()或者async await形式进行同步操作。
21 swiper组件 不能通过在swiper-item里面的元素来撑开高度。改变swiper-item高度不行;circular无限滚动属性必须要大于三条数据才能生效
22 可以使用touchStart和touchEnd来模拟创建一个上拉事件,只有touchStart的clientY或者pageY 减去 touchEnd的clientY或者pageY 的数值大于某一个阈值(本人设的是200)才请求
接口,相当于一个上拉操作效果。原生的onPullRrefishDown拉了以后 会有一个动画 会有2-5秒延迟,导致无法操作,比如请求数据。实际效果就是上拉不丝滑。
23.支付宝scheme链接最多256位,超出的话 会没法解析。
24.my.getLaunchOptionsSync用于灵活获取APP参数,主要解决page的onLoad异步行为先于APP的onLaunch函数先执行。目前不能使用。
25.自定义组件内的样式 会污染外部样式。支付宝这边后续版本都改不了,建议使用不同的class名,以及 加 !important解决
26.小程序元素设置绝对定位 左右可以滑动 后来确定是padding-left和right过长 导致页面超过屏幕宽度 出现滚动条
27 onLaunch和onShow的参数query 只能是从带有query参数的scheme链接当中才有;referrerInfo常用于别的小程序跳转方法,或者
navigateToMiniprogram方法中获取。
28.小程序页面存在缓存问题。在页面1带参数跳转到页面2,在页面2返回页面1,第二次跳转的时候,页面2的结果是在第一次的基础上增加的,相应的 my.navigateToMiniprogram()存在这个问题。my.navigateTo不会缓存上一个页面数据。
29.border-top-left-radius:2em;
border-top-right-radius:2em;
border-bottom-right-radius:2em;
border-bottom-left-radius:2em; border-radius:左上 右上 右下 左下;
30.my.navigateTominiProgram跳转小程序同一个页面时,会有一个缓存效果。即你如果跳转页面A,
31.目前小程序不支持本地模拟场景值,要做判断可以通过给跳转链接加查询字符串参数(2021-08-26)
32.由于平台限制,定时器 setTimeout 作用的代码在当前小程序切换到手机后台后不能正常执行,所以不能依赖定时器的确切时间,必须自己在回调函数中再次计算时间差;如需保证确切时间后做某些操作,请在服务器端计时。
33.ios系统不支持 new Date('2020-05-04 14:25:26')格式,支持new Date('2020/05/04 14:25:26');安卓两者都支持
34.button组件使用open-type为lifestyle,可以绑定onFollowLifestyle事件,其回调函数e
let statue = e.detail.followStatus //1 关注成功 2取消关注
35.ios存在点透现象,如果输入框上面有按钮点击事件,会触发点透现象,此时输入框为聚焦状态。解决办法:点击函数触发时使得输入框不能聚焦,再设置一个延迟函数使得输入框可以聚焦。
36.我发现小程序有一个问题 就是我从A页面,请求分页,一共渲染20条,在第20条数据这里点击跳转到B页面,点返回 重新请求接口 此时入参是{pageSize:25,pageNum:1}形式传参请求到25条数据刷新页面,这个时候会触发onReachBottom触底函数。
37.本地图片无法显示,通过require函数进行封装
38.canvas-api有点坑,只适合做一些简单的文字图形结合,复杂的图推荐用第三方库,如f2。
39.transform-origin指定变换元素以那个原点进行转换,值”left top"常用于指针旋转。
40.函数节流函数只对多次跳转有效,对于执行方法无效。
41.如何解决 input 输入框在 iOS 客户端的光标漂移问题?
步骤一:若已在 input 中设置了 enableNative 属性,删除 enableNative 属性的全部设置。
步骤二:在 app.json 文件 window 对象内,设置 "enableInPageRenderInput":"YES"。
微信小程序:(2022-5-2022-6编辑)
1.使用antmove工具将支付宝小程序代码转换为微信端,如果a:if={{num === 1}}语句中大括号之前没有加引号,编译出来的微信小程序代码会乱码,建议统一规范标准。xx:if=”{{num === 1}}“
2.wxs文件不支持es6语法。wxs标签属性也和sjs不一致。
3.小程序wxss不支持通配符 组件内不能使用 .a tag形式,id形式,属性选择器形式,要用类形式选择器替代。
4.如果源代码组件存在引用wxss,需要手动把axss改为wxss。
5.微信小程序组件不能应用全局样式时,需要在component的option属性下添加"addGlobalClass": true
6.rpx单位是微信小程序中css的尺寸单位,rpx可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx。如在iPhone6上,屏幕宽度为375px,共有750个物理像素,则750rpx=375px=750物理像素,1rpx=0.5px=1物理像素。设备rpx换算px(屏幕宽度/750)px换算rpx(750/屏幕宽度)iPhone51rpx=0.42px1px=2.34rpxiPhone61rpx=0.5px1px=2rpxiPhone6s1rpx=0.552px1px=1.81rpx微信小程序也支持rem尺寸单位,rem和rpx的换算关系:rem:规定屏幕宽度为20rem;1rem=(750/20)rpx注:开发微信小程序时设计师可以用iPhone6作为视觉稿的标准。建议:设计稿使用设备宽度750px比较容易计算750px的话1rpx=1px,这样的话,设计图上量出来的尺寸是多少px就是多少rpx,至于在不同的设备上实际上要换算成多少个rem就交给小程序自己换算。
7.微信小程序子组件调用父组件方法,通过this.triggerEvent("XXXX",e); 这里e代表传参,然后父组件wxml:
详情。e.detail可以获取到子组件传过来的参数}
8.wxs中尽量不要用ES6语法,小程序不会报错!比如我用了let,小程序不报错,就是无法过滤你要过滤的字符。
9.自定义组件不支持模板嵌套。
10.小程序webview访问公众号文章提示非业务域名
11.小程序page页面也能引用behaviors