前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小程序开发问题笔记

小程序开发问题笔记

作者头像
IMWeb前端团队
发布2019-12-03 16:25:26
1.1K0
发布2019-12-03 16:25:26
举报
文章被收录于专栏:IMWeb前端团队IMWeb前端团队

本文作者:IMWeb jaychen 原文出处:IMWeb社区 未经同意,禁止转载

本文作者:IMWeb 黎清龙 原文出处:IMWeb社区 未经同意,禁止转载

小程序开发问题笔记

最近从0开始,开发了【企鹅速算检查】小程序,在开发过程中遇到一堆的问(巨)题(坑),这里记录下来分享给大家。

背景

【企鹅速算检查】小程序主要功能是拍照,然后把图片通过人工智能识别出算术题,并判断正误,最后展示结果给到用户。

因此,这个小程序主要使用到的核心功能有:拍照,canvas

为什么要用到 canvas 呢?主要是因为结果的图片是通过原图和批改结果信息合成出来的,这个合成需要在小程序处理。

下面是结果页面的一个例子:

项目使用 wepy 开发框架进行开发。

问题记录

wepy 的 page 实例不会被销毁

页面在加载的时候就会创建 wepy 的 page 实例对象,在页面离开,已经调用了 onUnload 的情况下,wepy 的 page 实例对象不会被销毁!它会被保留,然后下一次再进入页面的时候,就会复用这个 page 实例对象。

这应该是 wepy 框架设计成这样的,因为每个页面都是一个单例,那复用实例对象也无可厚非。

但是,这个对于开发并不是透明的!因为 page 实例对象没有被销毁,所以实例对象的属性不会被回收

因此当页面再次加载的时候,上一次留下来的一些状态数据会被保留,因此会造成许多隐形的 bug

这个问题造成了不下于 10 个 bug,感觉需要一套自动回收对象属性的机制,不然都靠手动来重置会很麻烦

把小程序看做 SPA

这里主要关注的点是 require 的模块是单例的,所有的小程序页面依赖的模块是公共的。

某些多媒体元素的置顶情况

某些元素是置顶的,也就是说 z-index 是无效的,其他元素无法覆盖在这些元素上面:

  • canvas
  • video
  • live-player
  • live-pusher
  • webview
  • camera: 可以用 cover-view、cover-image 元素覆盖
  • map

文档会有说明,但是对于刚接触小程序的开发来说,这都是不太会被注意到的,因此这里会造成一些设计上面的问题,比如需求需要覆盖一个元素的时候。。。

ios 8 css 兼容问题,需要添加 -webkit- 前缀

所有和 flex 相关的,还有 media query,transform,反正都要加 -webkit- 前缀。

应该让 wepy 构建来处理这个问题

cover-view 无法使用背景图

cover-view 元素使用 background-iamge 失效,需要使用 cover-iamge 元素。

cover-view、cover-iamge 有些 css 属性不生效

比如 transform

Android 系统调用 wx.reLaunch 报错

这是小程序自身的 bug,目前暂时无法解决

使用webview 加载 H5 页面有时加载不出来,出现白屏,并且没有任何反馈

如果 H5 页面是开发自己控制的,可以看下是否可以通过通信的机制来确认 H5 页面是否加载成功

wx.request 的 referer header 不可设置,固定域名是 servicewechat.com,因此接口的 referer 限制设定需要注意

文档里面有说这点,这里需要注意的是所有访问的接口都需要开放 servicewechat.com 的 referer 限制

canvas 的 draw 方法不会触发 callback

根据文档,draw(reserve, callback),callback 参数是在 drwa 完成之后执行的回调,但是某些机型系统不会触发。

因此只能通过 setTimeout 的方式去执行 callback,但有时还是会有没画完就执行的 bug,无解。

canvas 的 clearRect 方法不能清除 drawImage 的图片

至今无解,只能重新创建一个 ctx,然后再 drawImage 覆盖

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-05-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 小程序开发问题笔记
    • 背景
      • 问题记录
        • wepy 的 page 实例不会被销毁
        • 把小程序看做 SPA
        • 某些多媒体元素的置顶情况
        • ios 8 css 兼容问题,需要添加 -webkit- 前缀
        • cover-view 无法使用背景图
        • cover-view、cover-iamge 有些 css 属性不生效
        • Android 系统调用 wx.reLaunch 报错
        • 使用webview 加载 H5 页面有时加载不出来,出现白屏,并且没有任何反馈
        • wx.request 的 referer header 不可设置,固定域名是 servicewechat.com,因此接口的 referer 限制设定需要注意
        • canvas 的 draw 方法不会触发 callback
        • canvas 的 clearRect 方法不能清除 drawImage 的图片
    相关产品与服务
    云开发 CloudBase
    云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档