小李SEO博客

网站优化服务

微信朋友圈广告或将实现一键跳转小程序直播

导语: 近期在开发小程序中,接触最多的就是 canvas 了,期间又因为兼容性的问题,又经历了底层 API 的新旧版的替换,踩的坑可谓令人印象深刻。小程序(微信)的 canvas 与 HTML

近期在开发小程序中,接触最多的就是 canvas 了,期间又因为兼容性的问题,又经历了底层 API 的新旧版的替换,踩的坑可谓令人印象深刻。小程序(微信)的 canvas 与 HTML 标准的 canvas 有较大区别,就连小程序本身的 canvas 底层 API 都有两个大版本的区别(其实远古时期还有一个版本,但年代过于久远就不做考究了)。目前现存的两个版本的区别在于是否支持「同层渲染」。

同层渲染

小程序的内容大多是渲染在 WebView 上的,如果把 WebView 看成单独的一层,那么由系统自带的这些原生组件则位于另一个更高的层级(如 canvas、video)。两个层级是完全独立的,因此无法简单地通过使用 z-index 控制原生组件和非原生组件之间的相对层级。想要在原生组件之上只能用 cover-view 和 cover-image 来实现。但 cover-view 和 cover-image 支持的 css 样式是在很有限,而且经过实践来看,cover-view 在安卓部分机器上性能真的很差。

01.jpg

「同层渲染」则是将原生组件直接渲染到 WebView 层级上,就可以通过简单的 z-index 来控制层级,而且支持的 css 非常丰富,麻麻再也不用担心我碰到的层级问题了!是不是看起来很美好?然而现实非常残酷。

02.jpg

「同层渲染」存在的问题

首先,根据小程序官方的文章来看,几乎是重构了整个「原生组件」,使用方式和支持的特性与之前的区别都非常大,非常类似标准的 canvas API,甚至官方声称「支持标准 canvas 的大部分属性方法」。但是根据我的实际项目经验来看,新版 canvas API 仅仅只是在 iOS 上表现良好,在部分安卓机器上会出现许多怪异行为。一个简单的例子是绘制多个相同的形状时,画笔似乎会出现在「飘忽不定」的位置上,导致绘制最终结果无法预测。另外很让人头疼的一个地方在于drawImage方法上。旧版 APIdrawImage第一个参数是图片路径,本地路径或网络路径皆可,但新版 APIdrawImage第一个参数必须是图片实例,由于小程序无法获取 DOM 元素,只能用官方提供的createImage方法创建图片实例,在其onLoad回调中再次调用drawImage,才能实现原先简单的方法。诸如此类。但这些都是可以克服的,最终导致我们放弃的原因是其在部分安卓机器上的「不确定性」,如果在「新特性」和「兼容性」上做选择,我想我还是坚持选择「兼容性」吧。就好像「优雅降级」和「渐进增强」,我更倾向于后者。

「兼容性」下的「同层渲染」

我相信大多数做过小程序 canvas 相关都有层级的烦恼。既然无法使用新版 API 来实现,那问题总要解决,最终我们想出了一套在旧版 API 也可以实现类似「同层渲染」的效果。目前需要「同层渲染」的场景基本上都是需要在 canvas 上弹层,所以在覆盖 canvas 的时候不会同时操作 canvas,因为可以利用canvasToTempFilePath可以临时将 canvas 转成图片,然后隐藏 canvas,显示 tempImage 即可。

黎明的曙光

新版 canvas API 并不是一无是处,有一个很大的变化在于它不再使用物理尺寸来绘制,使用的是实际尺寸。这就会使得使用新版 API 绘制的结果比原来高清许多,这算是为数不多的优点吧。另外新版 canvas API 在 iOS 上表现还是很不错的。希望未来官方可以让新版 canvas API 兼容性更优秀,让开发者早日摆脱这些临时方案。

温馨提示:这篇文章没有解决您的问题?欢迎添加微信:13712967640,有微信小程序专业人员,保证有问必答。

上一篇:小程序搜索,风暴之眼 下一篇:BAT发力小程序,站在十字路口的开发者又当如何抉择?
微信营销相关文章阅读
  • 微信营销的五大本领

    微信的甜头和火爆不消多说了吧,想必列位都在用。这个社群的合流APP,微信曾经从以前的一个“ APP运用”开展成为逐一个领域、一种征象,乃至成为一种生存体例。 要是仅仅用微信在身边的...

  • 微信互动营销运营的具体方法和策略

    本人认为做好微信互动营销就是做好一个顶级客服与线上顶级业务员。为什么会这么说呢? 因为当做好微信互动营销我们的目的是留住客户、增加客户粘度以及信任感、促进客户成交实现客户...

  • 网红应该如何利用微信小程序变现卖货?

    导语: 微信小程序相对于其他系统来说更为轻便,也是现下很多商家的首选,不只是娱乐方面,小程序现在涉及到各行各业,尤其在卖货方面,有相当的潜力值得挖掘,尤其对于网红来说,...

  • 图文教你如何在公众号上制作微信调查问卷

    微信调查问卷怎么做是很多运营者的需求,在微信中发布的调查问卷不是通过微信本身的平台制作而成,需要借助第三方平台完成,下面我们一起来了解下微信公众号调查问卷的制作方法 微信...

  • 小程序都能用来占座、充饭卡和选课了,你还敢说微信上都是中老年人?

    导语: 2017 年称得上是微信小程序元年,在这一年,微信官方几乎每个月都至少会有一次大的动作,开放小程序的应用场景,增强应用能力。 从 2017 年 1 月 9 日小程序正式上线 2017 年称得上是...

  • 教你如何在公众号里制作微信报名表

    现在微信应用的功能越来越多,很多线下的活动都搬到了微信上,我们常见的微信报名功能也可以在公众号里创建,创建之后可以让公众号的粉丝通过微信直接提交报名的信息,然后我们在后...

  • 「我的小程序」发布,微信吞噬移动互联网进入深水区

    导语: 最近2个月,微信小程序正密集突破那些「人们以为的」它的边界,或者说自我桎梏。比如全面开放包括游戏类目在内的小程序广告组件,新增支持从App挑战小程序,开放品牌搜索 最近...

  • 微信公众平台被封号绝对不能犯的错误操作

    随着微信公众平台的飞速发展,越来越多的企业和个人都开始申请和使用公众平台,来为自己创造多一条营销出路。但是,许多人在运营微信公众平台的过程中,不小心触犯了条规,从而被封...

  • 林芝seo推广之微信营销方式介绍

    成都微信营销,成都微信营销我们的微信营销平台是基于微信公众平台企业应用的托管式服务模式。为企业提供基于微信平台的客户服务、产品推介、互动营销、市场调查、产品订单等运营与系...

  • 微信营销中怎样才能做好个人定位问题?

    一、起好微信名称 微信名称建议简单明了一点,比如与产品相关的,最好是加上自己的名字,这样显得更加真实。如果有微信公众号我们也可以使用这种方法来命名,最好是产品与公司名称相...

  • 最牛逼的推广思路 利用微信红包推广注册获得收益

    今天我在一个微信群中看到一个发红包的活动,点开之后才发觉是一个利用发微信红包来推广注册获得收益的一个手段,我仔细看了下,个人感觉这个思路非常牛B,如果是有新手朋友真的看不...

  • 微信公众号支持"个人"迁移到"组织"(附帐号迁移详细流程图)

    个人号终于能迁移粉丝了,这可能是最全的知识点了! 今年2月份微信公众号上线了粉丝迁移功能,之前只支持组织类的公众号之间迁移粉丝。今天微信派公布了:微信公众号支持个人迁移到组...

SEO公司排名
 
QQ在线咨询
SEM竞价推广
137-1296-7640
SEO优化外包
137-1296-7640