微信小程序开发中的注意点记录

小程序中的下拉刷新的实现

onPullDownRefresh触发的注意点:

  1. 需要在当前页面对应的json文件中设置'enablePullDownRefresh':true
  2. 当使用scroll-view的时候,如果触点在scroll-view中且scroll-view中出现了滚动条则向下拖动并不会触发下拉刷新。如果不出现滚动条则触发下拉刷新。

scroll-view标签的注意点

  1. 当使用scroll-view的时候,其内第一个子节点不能设置上外边距,不然会导致scroll-view出现滚动条,即使内容未超出区域也会出现。
    2.bindscrolltoupper,bindscrolltolower用于监听滚动到什么范围时触发,即当我们滚动页面的scrollTop或scrollLeft小于设置的upper-threshold或lower-threshold时,每一次滚动都会触发监听函数。(所以不建议在scroll-view中使用这两个监听函数来实现下拉刷新和上拉刷新。)

在小程序中使用canvas绘制图片

在微信小程序中的canvas只能绘制本地图片,在服务器上的图片无法绘制(在微信开发者工具中可以正常显示绘制后的图片,但在真机上不会显示)。所以在使用网络图像的时候需要先将网络图片路径转换成本地路径,可以通过wx.getImageInfo(OBJECT)success的回调中通过res.path获取返回的本地路径,再通过canvasContext.drawImage绘制图像到指定的canvas中。
绘制用户头像并保存到本地:

wxml:
<canvas canvas-id='dd'></canvas>

js:
...
createCanvas () {
    let ctx = wx.createCanvasContext('dd', this)
    let url = 'http://img.zcool.cn/community/018d4e554967920000019ae9df1533.jpg@900w_1l_2o_100sh.jpg'
    wx.getImageInfo({
        src: url,
        success: (res) => {
            ctx.drawImage(res.path, 0, 0, 150, 100)
            ctx.draw()
        }
    })
}
...
onLoad () {
    this.createCanvas()
}
...

page设置样式对事件的影响

  1. onReachBottom: 用于监听页面上拉触底的函数
  2. onPageScroll: 用于监听页面滚动的函数

但当设置page样式为

page{
    height: 100%;
    overflow: hidden;
}

js中的onReachBottom和onPageScroll都不能再触发了。

onReachBottom, onPageScroll用于监听整体页面的滚动和滚动触底事件,阻止page滚动的样式会导致这两个事件不会触发。

disableScroll属性兼容性问题

当在页面对应的json中设置disableScroll: true后 ,在开发工具中可以看到page新增了overflow-y: hidden;。真机调试发现在ios中页面整体不能滚动和开发工具中的效果相同,ios最底部的webview层失去弹性滚动效果,但在android中该属性没有起到效果。onReachBottomonPageScroll也不会再触发。整体页面不能再滚动需要我们自己设置样式overflow:auto;-webkit-overflow-scrolling: touch;或者通过scroll-view来实现页面中内容的滚动。

image设置样式的注意点

在小程序中最好不要设置图片的定位方式为absolute,不然在页面滚动时,绝对定位的图片在滚动中会存在滚动加载的效果。

原生小程序中使用async/await的注意点

由于原生小程序的不支持async/await,使用的话会提示regeneratorRuntime is not defined错误,需要在文件中引入regenerator-runtime

import regeneratorRuntime from '../../libs/regenerator-runtime'
...
async aa () {
    let b = await new Promise((resolve) => {
        setTimeout(() => {
            resolve(33333)
        }, 3000)
    })
    console.log(b)
    console.log(111)
}
...

小程序中的生命周期注意点

属性 描述 触发条件
onLoad 页面中加载时触发 页面初次进入,navigateBack返回不会触发上一个页面的onLoad
onReady 页面初次渲染完成 页面初次进入,navigateBack返回不会触发上一个页面的onReady
onShow 页面显示 所有导航方法
onHide 页面隐藏 navigateTo
onUnload 页面卸载 redirectTo,reLaunch,switchTab,navigateBack

当在路径中附加参数时(/index?a=1&b=2),在app.js和页面中的index.js中获取参数的方式存在不同。在app.js的onLaunch中通过options.query.+'参数名'获取路径中对应的参数值,在index.js的onload中通过options.+'参数名'获取路径中对应的参数值。

当在app.json中设置tabBar后通过tab切换页面的话只有在第一次才能触发onLoad、onReady。onLoad和onReady在页面卸载后才能重新触发,onHide和onUnload不能同时触发,当页面卸载的时候onHide不会触发。所以redirectTo,reLaunch,switchTab,navigateBack都不会触发onHide事件。

逻辑层和视图层的注意点

在微信小程序中,相应视图对应的js不会在视图层挂载后而清除js中的操作,比如setTimeout,websocket等异步操作并不会在页面挂载后失去作用,会依然存在于逻辑层中,在指定时间和数据接收后依然会进行相应的操作。所以最好在页面挂载的时候清除监听函数。

websocket的使用注意点

  1. 当使用wx.onSocketMessage时,可以理解为在wx上注册了一个监听函数,这个函数在后期不管注册页面是否已经卸载,该函数依然会对wx.sendSocketMessage进行监听。但在多个页面都注册wx.onSocketMessage时,当前页面中的wx.onSocketMessage会覆盖上一个页面中的监听。
  2. SocketTask即WebSocket 任务。如果对同一个地址创建多个WebSocket 任务的话,上一个SocketTask未关闭的情况下,后期页面中发送的信息都会在初次创建的SocketTask中被监听,而后期创建的都不会受到消息。
  3. 当同时使用SocketTask.onMessagewx.onSocketMessage监听数据返回时,两者都会同时生效。

小程序中1像素的实现

直接使用1rpx无法实现移动端1px的效果,现阶段不管是ios还是android最小接受的逻辑像素依旧是1px。而根据不同手机的dpr,物理像素会显示不同。
在文档中提到小程序规定屏幕宽为750rpx,不管手机屏的实际逻辑像素是多少,都以750rpx的来进行换算。

设备 rpx换算px (屏幕宽度/750) px换算rpx (750/屏幕宽度)
iphone5(320*568) 1rpx = 0.42px 1px = 2.34rpx
iphone5(375*667) 1rpx = 0.5px 1px = 2rpx

不管手机的逻辑像素是多少,手机的整屏宽度都为20rem或者750rpx。

// 对不同的dpr进行监听,dpr为2的缩放0.5,dpr为3的缩放0.33
@media (-webkit-max-device-pixel-ratio: 2) {
    .lb-1{
        position: relative;
    }
    .lb-1::after{
        content: '';
        position: absolute;
        height: 1px;
        bottom: 0;
        left: 0;
        right: 0;
        background: #d8d8d8;
        transform: scaleY(0.5);
        transform-origin: 0 0;
    }
}
@media (-webkit-min-device-pixel-ratio: 2.01) and (-webkit-max-device-pixel-ratio: 3) {
    .lb-1{
        position: relative;
    }
    .lb-1::after{
        content: '';
        position: absolute;
        height: 1px;
        bottom: 0;
        left: 0;
        right: 0;
        background: #d8d8d8;
        transform: scaleY(0.33);
        transform-origin: 0 0;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • 给提问的开发者的建议:提问之前先查询 文档、通过社区右上角搜索搜索已经存在的问题。 写一个简明扼要的标题,并且...
    极乐叔阅读 13,381评论 0 3
  • 微信小程序在无论在功能、文档及相关支持方面,都是优于前面几种微信账号类型,它提供了很多原生程序才有的接口,使得我们...
    未央大佬阅读 2,289评论 0 12
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明先生_x阅读 15,967评论 3 119
  • 时 间:20180504(累计4篇) 学经内容:佳栩:1.易经上经16;2.笠翁对韵下九; 锦泰:1.大学1遍;易...
    佳栩妈妈阅读 519评论 0 1
  • 经常听到有人冷嘲热讽一类人:真幼稚,怎么和小孩子一样?通常我的回答就是呵呵,现在之所以要专门拿出来说一下这个事...
    QueenaHao阅读 641评论 0 0