【小程序】开发需要注意的地方(一)

1. 小程序页面路径

页面路径以文件名来创建,“pages/home/home”这样的页面路径是推荐的,而“pages/common/home”这样的页面路径是不推荐的,因为不便于微信小程序创建文件夹和文件,也不方便维护。

2. 小程序单位rpx

rpx:可以根据屏幕宽度进行自适应。规定屏幕宽度为750rpx,在iPhone6上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。

设备 rpx转换px (屏幕宽度 / 750) px转换rpx(750/ 屏幕宽度)
iPhone5 1rpx = 0.42px 1px = 2.34rpx
iPhone6 1rpx = 0.5px 1px = 2rpx
iPhone6s 1rpx = 0.552px 1px = 1.81rpx

rem(root em): 规定屏幕宽度为20rem;1rem = (750 / 20)rpx。

因此建议:小程序开发设计师UI可以用iPhone6或者750px作为视觉稿的标准。

3. 小程序页面返回更新数据问题

现象:页面一旦加载,但在返回到上一个页面的时候数据不能及时更新。

解决方法:将页面请求放入到onShow中,这样的话可以返回上一个页面时,上一个页面能获取最新的数据。你需要区分一下新的业务逻辑适合放在onLoad方法中还是onShow方法中。

4. wx.navigateTo跳转到tabbar页面的问题

现象:使用wx.navigateTo无法跳转到带tabbar的页面
解决方法:只能使用wx.switchTab进行跳转带有tabbar的页面

5. 小程序开发图标模糊问题

现象:在微信开发者工具下图标显示清晰,但是一旦代码上传,在手机上体验,图标模糊不清。

解决方法:有可能是你上传的是一倍大小的图片,你可以尝试着上传三倍大小图片,就可以完美的解决问题。

6. 小程序转发分享图片设置

现象:小程序转发分享onShareAppMessage方法设置imageUrl自定义图片路径,但图片总是显示一部分。

解决方法:设置imageUrl自定义图片的大小尺寸为5:4,这样的话就可以把整体图片显示出来

7. 获取手机系统信息

现象:常常因手机型号的不同产生页面UI不兼容的问题,例如fixed底部一个容器,在iPhoneX底部横条的原因,会把容器遮盖一部分,需要针对该型号单独做一个兼容。

解决方法:获取手机系统信息,使用getSystemInfo,可得到手机系统语言、屏幕宽高、微信版本号、操作系统、设备像素比、客户端甚础库版本等信息。

wx.getSystemInfo({
     success: function (res){
        console.log(res)
     }
})

8. 小程序getUserInfo返回的地区信息格式问题

现象:最近在开发微信小程序的时候,调用微信的getUserInfo接口,其返回的用户数据是这样的:


小问题

解决方法:在调用getUserInfo接口时,设置一下lang参数,其参数可以设置为en(英文),zh_CN(简体中文),zh_TW(繁体中文),代码如下:

wx.getUserInfo({
    lang: "zh_CN",
    success: function (e) {
        console.log(e)
    },
    fail: function(err){
        console.log(err)
    }
 })

9. 小程序setStorageSync或setStorage()问题

现象:在小程序中用户登录后使用wx.setStorageSync("nickName","...")储存用户信息,方便其他接口调用其数据,在页面data中获取用户信息,却有可能拿不到其数据。wx.setStorageSync()、 wx.setStorage()

Page({
  /**
   * 页面的初始数据
   */
  data: {
    // 如此调用,有可能拿不到数据
    nickName: wx.getStorageSync("nickName")
  }
})

解决方法:在onLoad方法中调用。

Page({

  /**
   * 页面的初始数据
   */
  data: {

  },
  onLoad: function (options) {
    this.setData({
      nickName: wx.getStorageSync("nickName")
    })
  }
})

注意点:

  1. getStorage和getStorageSync必须定义key值,不能获取所有的存储数据,只能是一对一的。想获取所有的存储数据,看第二点。
  2. getStorageInfo同步和getStorageInfoSync异步获取本地keys(当前storage中所有的key)、currentSize(当前占用的空间大小,单位kb)、limitSize(限制的空间 大小,单位为kb)

10. 用户昵称头像问题

如果只是展示用户头像昵称,可以使用 <open-data /> 组件

<open-data type="userAvatarUrl"></open-data>
<open-data type="userNickName"></open-data>

11. js方法封装

有些方法会在小程序的多个页面使用,为了减少代码的冗余、方便修改,我们应该尽量在一个单独的js文件中做好封装,然后在其使用页面的js文件直接引用即可。

12. 小程序按钮多次点击问题

现象:小程序的页面跳转速度相对于H5页面的跳转还是比较慢的,当用户多次点击之后,会重复打开相同的页面,所以要针对按钮的点击要进行限制。

解决方法很多种,列举几例作为参考:

  • 限制按钮在一秒或者几秒之内点击一次有效
  • 点击按钮之后,setData设置按钮disabled属性为true
  • 设置遮罩层Loading
  • 按钮点击后,其点击事件设置为空

13. 小程序跳转到网页传送cookie参数的安全问题

在微信小程序开发中时常会使用webview加载一些H5网页,使用过程中肯定需要参数传递形成连接。针对一些携带用户信息的参数进行加密也变得至关重要的。详细解释

14. dom问题

在web开发中,如果你想查找页面上某个dom,会使用getElementById()访问document的某一个dom,但是在小程序的开发中,尝试打印console.log(document),系统会打印出undefined,小程序既没有document对象,也没有window对象。小程序框架的逻辑层并非运行在浏览器中,因此 JavaScript 在 web 中一些能力都无法使用,如 window,document 等。

15. css中设置本地image问题

现象:当你在css中设置某个容器的background的url为本地图片的路径的时候,显示没效果。

解决方法:把该本地图片上传到网络上,然后在url中引用该图片链接,或者 使用base64,或者是在wxml中使用image标签。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 给提问的开发者的建议:提问之前先查询 文档、通过社区右上角搜索搜索已经存在的问题。 写一个简明扼要的标题,并且...
    极乐叔阅读 14,062评论 0 3
  • 因新工作主要负责微信小程序这一块,最近的重心就移到这一块,该博客是对微信小程序整体的整理归纳以及标明一些细节点,初...
    majun00阅读 7,463评论 0 9
  • “女生只有放下心里孩子的一面才能成为真正意义上的一个女人” 这句话是高中时期在冬吴相对论中听到的。想来至今已经有四...
    想名字想半天阅读 269评论 0 0
  • 人称广州卧虎藏龙的小宝库——艺苑南路,相继开了<鹿角巷>、<一芳>、<玖六年>等网红店,最近又喜增一家网红烤鱼店—...
    一勺吃广州阅读 413评论 0 0
  • 这世上没有完全相同的两片叶子,同样也没有心意完全相通的两个人,没人与我心灵相通,纵使孤独,但也潇洒,孑然...
    陆星河阅读 328评论 0 0