相关资源
官方文档,一定要读!(API 部分留意底部的 Bug & Tip)
微信公众平台 | 小程序小程序示例
微信小程序搜索 “小程序示例”,查看官方提供的组件及接口示例。-
微信订阅号:知晓程序 (微信号:zxcx0101)
发布各种小程序相关资讯,更新频率高。
-
小程序商店:minapp.com
顾名思义,小程序应用商店。可以多看多用,看看小程序都能实现什么神奇的功能。
-
《微信小程序入门指南》
小程序电子书,已在多看阅读、微信读书、QQ 阅读、亚马逊上架。有空可以过一遍。
以下两个论坛基本可以覆盖大部分问题:
微信公众平台 | 开发者社区
微信小程序联盟
常用代码
1. 关于引入
样式导入
引入 css:
@import "../templates/list-item/list-item.wxss";
WXML 提供两种文件引用方式 import 和 include
引入 wxml template:
<import src="../templates/share/share.wxml" />
拷贝 wxml:
<include src="../templates/share/share.wxml" />
2. 方法如何传参数
没法直接传参数,都要通过 dataset 获取,代码示例如下:
wxml:
<view class="delete" data-id="{{id}}" catchtap="deleteItem">删除</view>
js:
deleteItem: function(e){
var id = e.currentTarget.dataset.id;
......
}
3. 修改数组对象的某个元素的属性
var param = {};
var string = "list[" + index + "].text";
param[string] = 'changed data';
this.setData(param);
(愚蠢的)错误
1. 微信的某个固定方法未生效
问题:
在某个页面的 js 中定义 onShareAppMessage 函数,设置该页面的转发信息,但是设置的属性却没有生效。
原因:
初始化页面时微信开发者工具会自己将部分生命周期及其他方法(包括 onShareAppMessage 函数)定义在页面里,我自己在代码前面又重新定义了 onShareAppMessage 函数,导致该函数被后面的空函数覆盖,因此设置的属性方法等未生效。
解决:
删除空函数。
引以为戒,不要犯类似的愚蠢错误。
2. navigateTo 跳转失败
问题:
报错:navigateTo:fail url "" is not in app.json
解决:
检查下页面是否已经在 app.json
的 pages
属性下注册了。
或者该页面的 js 文件是否已经定义了 page 方法:Page({})
,
或者 json 文件中是否为空(不能为空,至少要有 {}
)。
问题:
点击按钮触发 wx.navigateTo
方法,但没有任何反应。
解决:
wx.navigateTo
方法不能跳转到存在 tabBar 的页面,即那些已经在 app.json
的 tabBar
字段下定义的页面。
要想跳转到 tabBar 页面,可以使用 wx.switchTab
。
真机测试
1. 模仿微信消息的左滑删除功能效果不佳
问题:
小程序:模仿微信左滑动,出现标为未读和删除按钮,好不容易实现的功能,在真机上测试时却发现动画效果很差,滑块同滑块中的文字会以不同的速率移动,很奇怪。
解决:
只能改成点击出现操作菜单的方式了,提供一个按钮,点击就使用 wx.showActionSheet
显示操作菜单。
2. tabBar 图标 81px*81px 显大
问题:
配置 tabBar 的 iconPath 时,官方说明为:图片路径,icon 大小限制为40kb,建议尺寸为 81px * 81px,当 postion 为 top 时,此参数无效。
我理所当然让 UI 制作了该尺寸的 icon,在开发者工具上查看时效果还行,但在真机上调试时却发现图标过大,不好看。
解决:
最后 UI 将实际 icon 大小调为 62px62px,加上空白区域仍旧导出 81px81px 的图片给我。
3. 显示用户默认头像
问题:
一般小程序都会获取用户的基本信息如昵称和头像,但同时也要考虑到用户拒绝授权的情况(wx.getUserInfo 接口需要用户授权,请兼容用户拒绝授权的场景),如果拒绝,原本应该显示头像区域的地方可以显示一个默认的头像,但真机测试时我使用的测试账号连头像都没设置,因此即使同意授权了头像区域还是一片空白。
解决:
做好判断,即使授权成功获取到的用户头像信息仍旧可能为空。
奇怪的坑
1. margin-bottom
在 ios 下无法撑起页面
问题:
某个页面底部有一个 fixed 元素,会遮住页面一部分,而我希望能够完整看到当前页面的内容,因此就对当前页面的内容包裹元素加了个 margin-bottom: 140rpx;
以此撑起一定高度,希望可以通过滚动看到完整的页面内容。
但是在 ios 下该 margin-bottom
未起作用,页面无法向下拉到底,而在安卓下效果正常。
解决:
新增一个隐藏的(background-color:transparent;
)元素,设置高为 140rpx;