2017年2月8日,发布了自己的第一个小程序:“记录基础体温”。需求源于老婆有记录基础体温的习惯,之前给做了个webapp,小程序正式发布后,想着熟悉下小程序的开发过程,于是做了一个小程序的版本。程序很简单,功能很单一,以体验开发为目的。当然现在竟然做完了,也就顺便交了认证费,发布出来。以下是体验小结
开发工具
不明白为什么,明明已经正式发布的小程序,官方的开发工具竟然还没有上到1的版本,前几天做了最新的更新,版本号为0.13.140600。
最初是打算用mac开发,无奈开发工具在mac下一直假死状态,尝试了卸载重装,搞了几次才能够正常进入开发界面。但是后面并不顺利,在对代码进行保存的时候,高频会卡死,还有不出现预览界面等问题,我还尝试了第三方的开发工具,Egret Wing。但是最后,还是找了台windows进行开发。
除此之外,觉得官方开发工具有点简陋。调试界面有很高的概率告诉我重新连接;预览界面字体和真机调试有很大差距;在coding时中文输入体验差;那个“编译”和上面的那个icon,到现在我都不明白是干什么用的;在平台上配置request合法域名之后,还在开发工具上点击“刷新”才能生效;还有我习惯使用暗色的主题...
官方文档
一个正式发布的商业项目,你的官方文档能不能商业点!
wx.drawCanvas()
都不推荐使用了,能不能把canvas实例代码更新一下:
wx.drawCanvas({
canvasId: 'firstCanvas',
actions: context.getActions() // 获取绘图动作数组
})
页面路由获取参数wx.navigateTo({url: 'test?id=1'})
文档说是:
Page({
onLoad: function(option){
console.log(option.query)
}
})
那获取id参数应该是option.query.id
吗?其实是option.id
。
框架
不能使用npm包
不能使用npm包,感觉一夜回到解放前。
为了简单操作时间,copy了一份moment.js来使用,没想到moment().format()
不能正常返回,返回的函数字符串而不是日期字符串。不确定是moment的问题还是小程序的问题。
为了在程序表示体温的变化,打算使用图表形式。首先想到的是之前做web版使用的highcharts,但是想想svg肯定不能用,canvas接口也和H5的不一致,放弃了。有看到其他人给小程序写的图表库,但是想到要download再copy,并且又不完全是我想要的效果,算了。
页面之间的通信
官方似乎没有提供页面之间通信的解决方案。于是简单的写了个EventBus来用用。这种方式很晦涩,没有好的事件命名方式,经常忘记这个事件是哪里发出来的。
自定义组件
没有图表库,打算自己写一个简单的柱状图组件,这是才意识到小程序能够自定义组件么?有模板(template),有样式(wxss),但是却没有能写逻辑的地方。当时看了下这篇文章,就先把封装组件的事情先放一放,做完程序再考虑。
WXML没有filter
一直使用Vue,小程序视图层绑定数据没有filter,有些不方便。一定要把显示数据格式化好,然后作为一个变量放在data中,再进行绑定才行,使代码有些冗余。
canvas总是最顶层
canvas 组件是由客户端创建的原生组件,它的层级是最高的
首页下半部分是两个层级的波浪动画,使用canvas绘制。原本打算在波浪区域的中间添置一个按钮,但是由于canvas最顶层的原因,按钮会被遮盖。遮盖了,但是却任然可以点击。用另外一个canvas绘制一个按钮放那的话,倒是能够置于波浪canvas层的上方。
自带的调试按钮和界面也会被canvas遮盖:
另外关于canvas的是,大面积的canvas动画绘制,耗电量可观。
关于动画
使用习惯了requestAnimationFrame
,重新使用定时器觉得有点不舒服。
兼容性
以为做原生了,就应该不存在ios和安卓的兼容问题了。但是canvas的透明度在安卓貌似不生效。其他兼容问题目前还没有遇到。
最后
虽然整个开发体验并不让人愉悦,但是现阶段关于小程序的前景,我还是看好的。做开发之前,还特意花了一个多小时看了张小龙的演讲,认同他对于小程序的畅想。虽然小程序能做的H5也能办到,但是在微信中的使用体验就提升了不少:没有了讨厌的标题栏,没有了缓慢的授权跳转,各种H5的兼容问题也应该会少不少。
拿小程序做这样的工具类程序,纯属练习用,小程序的应用不在于此。除此之外,我体验到的小程序从目的上,也都不应该去做小程序。小程序商店也是愚蠢的想法。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。