微信小程序开发
如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以通过 tabBar …
#小程序#微信
快速上手
小程序常用组件
html中有标签
a p div span
小程序没有,小程序自己封装过的叫组件
https://developers.weixin.qq.com/miniprogram/dev/component/
text -> span 不换行放文字
view -> div 独占一行
image 放置图片
icon 小图标tabBar设置
如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面。
| 属性 | 类型 | 必填 | 默认值 | 描述 | 最低版本 |
|---|---|---|---|---|---|
| color | HexColor | 是 | tab 上的文字默认颜色,仅支持十六进制颜色 | ||
| selectedColor | HexColor | 是 | tab 上的文字选中时的颜色,仅支持十六进制颜色 | ||
| backgroundColor | HexColor | 是 | tab 的背景色,仅支持十六进制颜色 | ||
| borderStyle | string | 否 | black | tabbar 上边框的颜色, 仅支持 black / white | |
| list | Array | 是 | tab 的列表,详见 list 属性说明,最少 2 个、最多 5 个 tab | ||
| position | string | 否 | bottom | tabBar 的位置,仅支持 bottom / top | |
| custom | boolean | 否 | false | 自定义 tabBar,见详情 |
其中 list 接受一个数组,只能配置最少 2 个、最多 5 个 tab。tab 按数组的顺序排序,每个项都是一个对象,其属性值如下:
| 属性 | 类型 | 必填 | 说明 |
|---|---|---|---|
| pagePath | string | 是 | 页面路径,必须在 pages 中先定义 |
| text | string | 是 | tab 上按钮文字 |
| iconPath | string | 否 | 图片路径,icon 大小限制为 40kb,建议尺寸为 81px * 81px,不支持网络图片。 当 position 为 top 时,不显示 icon。 |
| selectedIconPath | string | 否 | 选中时的图片路径,icon 大小限制为 40kb,建议尺寸为 81px * 81px,不支持网络图片。 当 position 为 top 时,不显示 icon。 |

在顶部或在底部的tab页(一般在底部)

如何设置?
1、在app.json中配置
json
"tabBar":{
"color": "#00b26a",
"selectedColor":"#ffca28",
"list":[
{
"pagePath":"pages/index/index",
"text":"主页"
},
{
"pagePath": "pages/abouts/abouts",
"text": "关于"
}
]
}小程序核心
尺寸单位和样式
之前写的是px
<view style="height: 300px;"></view>
在小程序中使用rpx来表示
<view style="height: 300rpx;"></view>
小程序中,手机屏幕大小可能不一样,使用px像素会有问题,小程序使用的宽度就是750px
无论在什么手机上都会等比例缩放样式(全局样式与局部样式)
在xx.wxss里面写css样式
app.wxss里面写的样式会在整个项目中生效首页案例
buttom组件使用
swiper+swiper-item
首页提示板块
flex布局
通知布局
底部布局
小程序引入矢量图
事件绑定
index.wxml
html
<button type="primary" plain size="mini" bind:tap="handleClick" data-name="zhangsan" mark:age="18">你好</button>index.js
js
Page({
handleClick(event){
console.log(event.mark.age)
console.log(event.target.dataset.name)
},
})页面跳转
声明式导航
html
最基本的
<navigator url="/pages/abouts/abouts">
<button plain type="primary">跳转路由</button>
</navigator>
更多跳转(opentype属性)
<navigator url="/pages/abouts/abouts" open-type="switchTab">
<button plain type="primary">跳转路由</button>
</navigator>
跳转携带参数
<navigator url="/pages/abouts/abouts?name=zhangsan&age=18" open-type="switchTab">
<button plain type="primary">跳转路由</button>
</navigator>
Page({
// 生命周期函数,检测页面变化
onLoad(optins){
console.log(this.options.name);
}
}open-type
| 合法值 | 说明 | 最低版本 | 说明 |
|---|---|---|---|
| navigate(默认) | 对应 wx.navigateTo 或 wx.navigateToMiniProgram 的功能 | 保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 wx.navigateBack 可以返回到原页面。小程序中页面栈最多十层。 | |
| redirect | 对应 wx.redirectTo 的功能 | 关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。 | |
| switchTab | 对应 wx.switchTab 的功能 | 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面 | |
| reLaunch | 对应 wx.reLaunch 的功能 | 1.1.0 | 关闭所有页面,打开到应用内的某个页面 |
| navigateBack | 对应 wx.navigateBack 或 wx.navigateBackMiniProgram (基础库 2.24.4 版本支持)的功能 | 1.1.0 | 关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages 获取当前的页面栈,决定需要返回几层。 |
| exit | 退出小程序,target="miniProgram"时生效 | 2.1.0 |
编程式跳转
js
Page({
handleClick(event){
wx.navigateTo({
url: 'url',
})
},
})wxml语法
模板语法
在xx.js中定义变量
json
data: {
motto: 'Hello World',
userInfo: {
avatarUrl: defaultAvatarUrl,
nickName: '',
},
hasUserInfo: false,
canIUseGetUserProfile: wx.canIUse('getUserProfile'),
canIUseNicknameComp: wx.canIUse('input.type.nickname'),
},使用{{变量名}}使用模板
{{motto}}
里面不能写语句,方法调用
可以使用:变量 三元运算 数学表达式 逻辑判断html
<button type="primary" plain size="mini" bind:tap="handleClick">你好</button>
{{age}}js
handleClick(event){
this.data.age+=1
console.log(this.data.age);
},默认的数据不是响应式的,使用下面
js
handleClick(event){
// 要让页面改变,使用微信提供的
this.setData({
age:++this.data.age
})
console.log(this.data.age);
},
//修改对象类型:
this.setData({
"userInfo.age":90
})循环语法:
html
<view wx:for="names" wx:key="index">{{item}}</view>修改数组
js
//1、先追加,在setData
this.setData({
"names":newNames
})
//2、修改
this.setData({
"names[0]":"张三"
})
//3、删除
//先把数组修改好,再使用set设置列表渲染
html
<view wx:for="names" wx:key="index">{{item}}</view>如果希望改变index和item变量名
html
<view wx:for="names" wx:key="index" wx:for-index="myIndex" wx:for-item="myItem">{{item}}</view>条件渲染
wx:if
wx-elif
ex-else条件渲染
在框架中,使用 wx:if="" 来判断是否需要渲染该代码块:
html
<view wx:if="{{condition}}"> True </view>也可以用 wx:elif 和 wx:else 来添加一个 else 块:
html
<view wx:if="{{length > 5}}"> 1 </view>
<view wx:elif="{{length > 2}}"双向绑定
html
使用module:value="{{value}}"
name:<input type="text" model:value="{{name}}"/>
{{name}}WXML
WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件、事件系统,可以构建出页面的结构。
用以下一些简单的例子来看看 WXML 具有什么能力:
数据绑定
html
<!--wxml-->
<view> {{message}} </view>
// page.js
Page({
data: {
message: 'Hello MINA!'
}
})内容
html
<view> {{ message }} </view>
Page({
data: {
message: 'Hello MINA!'
}
})组件属性(需要在双引号之内)
html
<view id="item-{{id}}"> </view>
Page({
data: {
id: 0
}
})控制属性(需要在双引号之内)
html
<view wx:if="{{condition}}"> </view>
Page({
data: {
condition: true
}
})关键字(需要在双引号之内)
true:boolean 类型的 true,代表真值。
false: boolean 类型的 false,代表假值。
html
<checkbox checked="{{false}}"> </checkbox>特别注意:不要直接写 checked="false",其计算结果是一个字符串,转成 boolean 类型后代表真值。
列表渲染
html
<!--wxml-->
<view wx:for="{{array}}"> {{item}} </view>
// page.js
Page({
data: {
array: [1, 2, 3, 4, 5]
}
})条件渲染
html
<!--wxml-->
<view wx:if="{{view == 'WEBVIEW'}}"> WEBVIEW </view>
<view wx:elif="{{view == 'APP'}}"> APP </view>
<view wx:else="{{view == 'MINA'}}"> MINA </view>
// page.js
Page({
data: {
view: 'MINA'
}
})
可以使用hidden
<view hidden="{{view == 'MINA'}}"> MINA </view>模板
html
<!--wxml-->
<template name="staffName">
<view>
FirstName: {{firstName}}, LastName: {{lastName}}
</view>
</template>
<template is="staffName" data="{{...staffA}}"></template>
<template is="staffName" data="{{...staffB}}"></template>
<template is="staffName" data="{{...staffC}}"></template>
// page.js
Page({
data: {
staffA: {firstName: 'Hulk', lastName: 'Hu'},
staffB: {firstName: 'Shang', lastName: 'You'},
staffC: {firstName: 'Gideon', lastName: 'Lin'}
}
})具体的能力以及使用方式在以下章节查看:
发送网络请求
评论
评论加载中……