[toc]
微信小程序
wx:key 代表在 for 循环的 array 中 item 的某个 property
project.config.json 项目配置 详见 工具 -> 项目配置文件
{
"miniprogramRoot": "miniprogram/", 小程序源代码文件夹
"cloudfunctionRoot": "cloudfunctions/", 云开发的目录
"miniprogram": { // 添加的编译模式
"list": []
}
}
background-image: url(base64 | http-url)
不支持使用本地图片地址.wxss 文件中
page{ background: #fff }
默认有个 page 标签 可设置当前页的页面背景色等单位最好用 rpx 1px = 2rpx
页面跳转
wx.reLaunch({ url: 'test?id=1' })
关闭所有页面,打开到应用内的某个页面wx.navigateTo({ url: 'path?a=1&b=2' })
保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面, 参数也是跟在url后面
image 标签 要设置高度 否则图片不会显示 图片地址可以动态加载
遇到的问题
自定义弹窗防止底层内容滑动添加事件 catchtouchmove="catchMove" catchMove 是空函数即可
touch 相关事件返回的
touches
和changedTouches
前者表示停留在屏幕上时的点信息,后者表示在屏幕上移动变化时的点信息;touchmove 和 touchend 优选后者,否者某些情况无法获取点位信息
app.js
App({
onLaunch() {
/*
onLaunch和onLoad是异步的,当小程序启动时触发onLaunch,但是同时也在触发所进入页面的onLoad,所以会造成进去页面时在onLoad里不会拿到由onLaunch获取的值
*/
// 异步请求方法
fn().then((res) => {
if(this.pageCallback) {
// 表明页面提前执行了,没有拿到值
// 该方法是在页面中没拿到值时添加
this.pageCallback(res)
}
})
}
})
/* 页面中 */
onLoad() {
// 判断是否有onLaunch获取到的值,有就继续执行 没有就添加如下回调
app.pageCallback = (res) => {
// 业务处理
}
}
事件
https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/event.html
- 传递参数只能用 data-xx="" 形式的自定义参数 不能直接在绑定的内联函数上传递(和vue不同); 参考 /mini-programe 小程序的 content 模块
<view bindtap="onGetData" data-status="data1">
<view data-status="data2"></view>
</view>
onGetData(event) {
event.currentTarget.dataset, // 事件绑定的那个元素上的数据 data1
event.target.dataset // 触发事件的那个元素 data2
},
- detail 自定义事件所携带的数据;dialog组件的取消和确认操作的表示放在detail中
wxml
wx:key="index"
获取元素
wx.createSelectorQuery()
注意在自定义组件或包含自定义组件的页面中,应使用this.createSelectorQuery()
来代替
页面配置
https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/page.html#%E9%85%8D%E7%BD%AE%E9%A1%B9
单个页面的 .json 文件
{
"navigationBarTitleText": "页面顶部标题" 如果没有正常显示,检查app.json中是否有这个页面
}
每个页面顶部标题也可以动态修改
wx.setNavigationBarTitle({ title: '' })
每个页面顶部的 Bar 样式修改 setNavigationBarColor
页面周期函数
https://developers.weixin.qq.com/miniprogram/dev/reference/api/Page.html
onHide wx.navigateTo 或底部 tab 切换到其他页面
onUnload wx.redirectTo或wx.navigateBack到其他页面时
app.json 全局配置
创建页面:可以直接在app.json 中先配置好页面路径及名称,保存时,编辑器自动创建文件
pages 数组的第一个值为小程序的首页
配置底部菜单 tabBar
{
"style": "v2" // 使用最新版样式
"useExtendedLib": {
"kbone": true, // 引入 kbone
"weui": true // 引入 weUI
}
// 使用位置等相关信息 要先授权
"permission": {
"scope.userLocation": {
"desc": "你的位置信息将用于小程序展示"
}
}
}
- page.json 页面配置
WXS
.wxs 文件
var a = 'hello';
var fn = function(p) { return (a + ' ' + p); }
module.exports = { a: a, fn: fn }
<!-- module的值为,调用时的名称 -->
<wxs src="./test.wxs" module="ts" />
<view>调用 wxs 方法结果:</view>
<view>{{ ts.fn('world') }}</view>
npm 相关
- 注意是在 miniprogramRoot 规定的文件夹下安装
- 安装了包之后,点击开发者工具中的菜单栏:工具 --> 构建 npm ;目的是将 node_modules 中的包移植到 miniprogram_npm 中
- 更多看: npm 支持
第三方包
- 组件 vant-weapp
生命周期函数
执行顺序: onLoad -> onShow -> onReady
组件内引用全局样式
组件js文件,设置以下项
Component({
options: {
styleIsolation: 'apply-shared'
}
})
computed
- 先安装 miniprogram-computed 安装后 computed 和 watch 都可用
behaviors
用于组件间代码共享的特性,类似于一些编程语言中的“mixins”
canvas 相关
ctx.draw(true); 参数为true则保留当前画布上的内容,进行绘制
touches[0].x 在canvas中返回的是相对于canvas的x值
收录提示
根据 sitemap 的规则[0],当前页面 [pages/menu/menu] 将被索引
- 这个并不是报错,他只是一个提示,提示开发者哪些页面被微信收录了。代表这个页面可以在微信的搜索中被搜到
- 可以在项目配置中设置
checkSiteMap:false
将其关闭 sitemap.json
{
"rules":[{
"action": "allow",
"page": "path/xx/xx"
}, {
"action": "disallow",
"page": "*"
}]
}