如何解决小程序的兼容性问题?

文 | kamidox

微信小程序发布有一段时间了,但目前小程序的兼容性问题,特别是 Android 平台兼容性问题,特别严重。据我观察,好多小程序都曾踩过兼容性的坑。

掉坑里不要紧,更让人捉急的是,微信审核人员打回了紧急修复兼容性的版本。这就好比从坑里爬上来的时候,手刚抓到坑沿,又被微信官方踩到,再次跌落坑底。

这下,就只能眼睁睁地看着后台用户在破口大骂:「什么东西都没有啊,什么破小程序」。

微信小程序的兼容性问题除了微信本身的 Bug 外,大部分是目标平台对 JavaScript 标准库支持程度不同造成的。

微信本身引起的 Bug

微信本身的 Bug 引发的兼容性问题有个现成的例子,就是 wx.request() 返回的状态码 res.statusCode 的值在 iOS 下是 int 型数据,而在 Android 6.0.1 上却是 String 型数据。

如果你判断服务器的返回状态码方法不当,可能就踩到坑里了。

上述代码就踩坑了。在判断状态码时,正确的做法是使用 == 而不是使用 === 来判断。另外一个更规范的方法是使用 parseInt(res.statusCode) === 200 来实现。

JavaScript 标准库兼容性问题

比如 Array.find() 方法在 iOS 10.2 / Android 7.0 上完美支持,但在 Android 6.0.1 上却不支持。如果代码里用到了这个接口,就会导致在 Android 6.0.1 上无法正常工作。

通过对比发现,这类接口不支持的个数还是比较多的。特别是 Android 平台版本众多,兼容性问题就更严重,可能一不小小心就掉到坑里。

如何避开这些坑?

微信本身 Bug 只能绕过去,但对 JavaScript 引擎的兼容性,我们有更优雅的解决方法。比如,我们可以打补丁,使用 Polyfill 来实现这些不支持的标准库方法。

比如,修复 Android 6.0.1 平台不支持 String.startsWith() 的问题,可以使用下面的 Polyfill 代码:

推而广之,我们可以把平台不支持的标准库方法,使用 Polyfill 实现。因此,我开发了 minapp-polyfill 这个项目。

使用方法很简单,把 minapp-polyfill 项目里的 polyfill.js 拷贝到小程序源码目录下,然后在需要打补丁的 JavaScript 源文件头部引入如下代码即可:

import 'path/to/polyfill.js'

目前这个项目只是搭了个骨架,还有很多方法需要实现。PRs is welcome。

原文地址: http://www.jianshu.com/p/90220a55f542

minapp-polyfill 项目地址: https://github.com/kamidox/minapp-polyfill

本文由知晓程序授权转载,关注微信号 zxcx0101,回复「1228」获得全网第一本《小程序入门指南》电子书。

原文发布于微信公众号 - 知晓程序(zxcx0101)

原文发表时间:2017-02-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏TSW

这个框架的官网居然放了这种照片......

1212
来自专栏web前端教室

Redux基本用法,为周日的先行者课程准备着。

众所周知,React只是一个View层而已,它不是一个完整的前端解决方案。只是给出了页面组件化的解决思路,但组件之间如何沟通?代码之间的结构?它并没有给出更多的...

1917
来自专栏林冠宏的技术文章

android 视频录制 混淆打包 之native层 异常的解决

原文地址:https://cloud.tencent.com/developer/user/1148436/activities  (滑至文章末,直接看解决方法...

1715
来自专栏知晓程序

开发 | 这 4 个绝招,让你的小程序告别卡顿,流畅如飞

1112
来自专栏杨建荣的学习笔记

excel查询数据的技术实现选择 (r7笔记第73天)

最近有一个高中同学问我一件事情,就是他们目前使用excel需要经常查很多数据,但现在使用excel的筛选功能感觉比较费劲。想问问我有没有什么改进 的方法,对于我...

3335
来自专栏iOS开发笔记

iOS开发照片框架详解(二)-- PhotoKit

1 概要 在 iOS 8 出现之前,开发者只能使用 AssetsLibrary 框架来访问设备的照片库,这是一个有点跟不上 iOS 应用发展步伐以及代码设计原则...

3558
来自专栏跬步

微信公众号迁移Serverless详解

3月腾讯云函数计算开放测试, 看到的第一反应是这种Serverless太适合做微信公众号的后端来实现自动应答了。

1493
来自专栏Crossin的编程教室

如何直观地理解程序的运行过程?

了解代码的执行过程是编程的基本要求。一个熟练的编程老手只需要用肉眼看着代码,就能对其运行的过程有所了解。然而对于刚接触编程不久的新手来说,这种事情就没那么显而易...

2464
来自专栏腾讯NEXT学位

VScode编辑器神插件!让你入门前端轻松打怪升级!

4184
来自专栏Hans362 's Lab

UTF8-BOM编码导致Html顶部白条问题

自从给博客加上了Google Adsense的广告,就出现了一个很困扰我的问题:网页顶部莫名空出了一个白条。虽然对于网页的访问没有什么影响,但是...强迫症不能...

761

扫码关注云+社区