
无需加好友免费技术支持
在 data 中定义数据在 WXML 中使用数据在页面对应的 .js 文件中,把数据定义到 data 对象中即可:
注意:js文件初始化数据时无需数据格式
把data中的数据绑定到页面中渲染,使用 Mustache 语法(双大括号)将变量包起来即可。语法格式为:
绑定内容绑定属性运算(三元运算、算术运算等)
事件是渲染层到逻辑层的通讯方式。通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业务的处理
类型
绑定方式
事件描述
tap
bindtap 或 bind:tap
手指触摸后马上离开,类似于 HTML 中的click 事件
input
bindinput或bind:input
文本库框的输入事件
change
bindchange 或 bind:change
状态改变时触发
当事件回调触发的时候,会收到一个事件对象 event ,其详细属性如下:
属性
类型
说明
type
String
事件类型
timeStamp
Integer
页面打开到触发时间所经过的毫秒数
target
Object
触发事件的组件的一些属性值集合
currentTarget
Object
当前组件的一些属性值集合
detail
Object
额外的信息
touches
Array
触摸事件,当前停留在屏幕中的触摸点信息的数组
changedTouches
Array
触摸事件,当前变化的触摸点信息的数组
target 是触发该事件的源头组件,而 currentTarget 则是当前事件所绑定的组件
点击内部的按钮时,点击事件以冒泡的方式向外扩散,也会触发外层 view 的 tap 事件处理函数。
此时,对于外层的 view 来说:
e.target 指向的是触发事件的源头组件,因此,e.target 是内部的按钮组件e.currentTarget 指向的是当前正在触发事件的那个组件,因此,e.currentTarget 是当前的 view 组件在小程序中,不存在 HTML 中的 onclick 鼠标点击事件,而是通过 tap 事件来响应用户的触摸行为
通过 bindtap ,可以为组件绑定 tap 触摸事件在页面的 .js 文件中定义对应的事件处理函数,事件参数通过形参 event(一般简写成 e) 来接收Page({
// 按钮的 tap 事件处理函数
btnTapHandler(e){
// 事件参数对象 e
console.log(e)
}
})通过调用 this.setData(dataObject) 方法,可以给页面 data 中的数据重新赋值,实例如下:
点击 按钮 之后,触发事件,在控制台打印 count 数据,每点击一次,累加一次
小程序中的事件传参比较特殊,不能在绑定事件的同时为事件处理函数传递参数,如下面的代码将不能正常工作:
这是因为小程序会把 bindtap 的属性值,统一当做事件名称来处理,相当于调用了一个名称为: btnHandler(123) 的事件处理函数
事件传参的方式可以为:
为组件提供 data-* 自定义属性传参,其中 * 代表的是参数名字
示例如下:
而在事件处理函数中,通过 event.target.dataset.参数名 即可获取到 具体参数的值
示例代码如下:
示例结果如下:
点击按钮后,控制台会打印出 info 的值
在小程序中,通过 input 事件来响应文本框的输入事件,语法格式如下:
测试结果如下:
实现步骤:
定义结构渲染结构美化样式绑定 input 事件处理函数测试结果如下:
使用 wx:if="{{condition}}" 来判断是否需要渲染该代码块:
也可以用 wx:elif 和 wx:else 来添加 else 判断:
若要一次性控制多个组件的展示与隐藏,可以使用一个
注意:
直接使用 hidden="{{ condition }}" 也能控制元素的显示与隐藏
运行方式不同wx:if 以 动态创建和移除元素的方式 ,控制元素的展示与隐藏hidden 以 切换样式 的方式 (display:none/block) ,控制元素的显示与隐藏使用建议频繁切换时,建议使用 hidden控制条件复杂时,建议使用 wx:if 搭配 wx:elif、wx:else 进行展示与隐藏的切换通过 wx:for 可以根据指定的数组,循环渲染重复的组件结构。
示例如下:
默认情况下,当前循环项的索引用 index 表示,当前循环项用 item 表示
示例结果如下:
使用 wx:for-index 可以指定当前循环项的索引的变量名使用 wx:for-item 可以指定当前项的变量名示例代码如下:
示例结果同上
类似于 Vue 列表渲染中的 :key,小程序在实现列表渲染时,也建议为渲染出来的列表项指定唯一的 key 值,从而提高渲染的效率
示例代码如下:
示例结果如下:
WXSS (WeiXin Style Sheets)是一套样式语言,用于美化 WXML 的组件样式,类似于网页开发中的 CSS
WXSS 具有 CSS 大部分特性,同时,WXSS 还对 CSS 进行了扩充以及修改,以适应微信小程序的开发
与 CSS 相比,WXSS 扩展的特性有:
rpx 尺寸单位@import 样式导入
rpx(responsive pixel)是微信小程序独有的,用来解决屏适配的尺寸单位
rpx 的实现原理非常简单:鉴于不同设备屏幕的大小不同,为了实现屏幕的自动适配,rpx 把所有设备的屏幕,在宽度上等分为 750 份(即:当前屏幕的总宽度为 750rpx)
在较小的设备上,1rpx 所代表的宽度较小在较大的设备上,1rpx 所代表的宽度较大小程序在不同设备上运行的时候,会自动把 rpx 的样式单位换算成对应的像素单位来渲染,从而实现屏幕适配
在 iPhone6 上,屏幕宽度为375px,共有 750 个物理像素,等分为 750rpx。则:
750rpx = 375px = 750 物理像素1rpx = 0.5px = 1物理像素设备
rpx换算px(屏幕宽度/750)
px换算rpx(750/屏幕宽度)
iPhone5
1rpx = 0.42px
1px = 2.34rpx
iPhone6
1rpx = 0.5px
1px = 2rpx
iPhone6 Plus
1rpx = 0.552px
1px = 1.81rpx
官方建议:开发微信小程序时,设计师可以用 iPhone6 作为视觉稿的标准。
开发举例:在 iPhone6 上如果要绘制宽100px,高20px的盒子,换算成rpx单位,宽高分别为 200rpx 和 40rpx
使用 WXSS 提供的 @import 语法,可以导入外联的样式表
@import 后跟需要导入的外联样式表的相对路径,用 ; 表示语句结束
定义在 app.wxss 中的样式为 全局样式 ,作用于每一个页面
在页面的 .wxss 文件中定义的样式为局部样式,只作用于当前页面
注意:
当局部样式和全局样式冲突时,根据就近原则,局部样式会覆盖全局样式当局部样式的权重大于或等于全局样式的权重时,才会覆盖全局的样式小程序根目录下的 app.json 文件是小程序的全局配置文件
常用的配置项如下:
pages:记录当前小程序所有页面的存放路径window:全局设置小程序窗口的外观tabBar:设置小程序底部的 tabBar 效果style:是否启用新版的组件样式
属性名
类型
默认值
说明
navigationBarTitleText
String
字符串
导航栏标题文字内容
navigationBarBackgroundColor
HexColor
#
导航栏背景颜色
navigationBarTextStyle
String
white
导航栏标题颜色,仅支持 black/white
backgroundColor
HexColor
#ffffff
窗口的背景颜色
backgroundTextStyle
String
dark
下拉 loading 的样式,仅支持 dark/light
enablePullDownRefresh
Boolean
fasle
是否全局开启下拉刷新
onReachBottomDistance
Number
50
页面上拉触底事件触发时距页面底部的距离,单位为px
设置步骤:app.json -> window -> navigationBarTitleText
需求:把导航栏上的标题,从默认的 “WeChat”修改为“微信小程序”,效果如图所示:
设置步骤:app.json -> window -> navigationBarBackgroundColor
需求:把导航栏标题的背景色,从默认的 #fff 修改为 #2b4b6b ,效果如图所示:
设置步骤:app.json -> window -> navigationBarTextStyle
需求:把导航栏上的标题颜色,从默认的 black 修改为 white ,效果如图所示:
下拉刷新:是移动端的专有名词,指的是通过手指在屏幕上的下拉滑动操作,从而重新加载页面数据的行为。
设置步骤:app.json -> window -> 把 enablePullDownRefresh 的值设置为 true
注意:在 app.json 中启用下拉刷新功能,会作用于每个小程序页面!
当全局开启下拉刷新功能之后,默认的窗口背景为白色。如果自定义下拉刷新窗口背景色,设置步骤为:
app.json -> window -> 为 backgroundColor 指定16进制的颜色值 #efefef。
效果如下:
当全局开启下拉刷新功能之后,默认窗口的 loading 样式为白色,如果要更改 loading 样式的效果设置步骤为:
app.json -> window -> 为 backgroundTextStyle 指定 dark 值
效果如下:
上拉触底:移动端的专有名词,通过手指在屏幕上的上拉滑动操作,从而加载更多数据的行为
设置步骤: app.json -> window -> 为 onReachBottomDistance 设置新的数值
注意:默认距离为50px,如果没有特殊需求,建议使用默认值即可
tabBar 是移动端应用常见的页面效果,用于实现多页面的快速切换。小程序中通常将其分为:
底部 tabBar顶部 tabBar
注意:
tabBar中只能配置最少 2 个、最多 5 个 tab 页签当渲染顶部 tabBar 时,不显示 icon,只显示文本
backgroundColor:tabBar 的背景色selectedIconPath:选中时的图片路径borderStyle:tabBar 上边框的颜色iconPath:未选中时的图片路径selectedColor:tab 上的文字选中时的颜色color:tab 上文字的默认(未选中)颜色属性
类型
必填
默认值
描述
position
String
否
bottom
tabBar 的位置,仅支持 bottom/top
borderStyle
String
否
black
tabBar 上边框的颜色,仅支持 black/white
color
HexColor
否
tab 上文字的默认(未选中)颜色
selectedColor
HexColor
否
tab 上的文字选中时的颜色
backgroundColor
HexColor
否
tabBar 的背景色
list
Array
是
tab 页签的列表,最少2个,最多5个 tab
属性
类型
必填
描述
pagePath
String
是
页面路径,页面必须在 pages 中预先定义
text
String
是
tab 上显示的文字
iconPath
String
否
未选中时的图标路径,当 postion 为 top 时,不显示 icon
selectedIconPath
String
否
选中时的图标路径;当 postion 为 top 时,不显示 icon
每个页面都有自己的 .json 配置文件,用来对当前页面的窗口外观、页面效果等进行配置
小程序中,app.json 中的 window 节点,可以全局配置小程序中每个页面的窗口表现
如果某些小程序页面想要拥有特殊的窗口表现,此时,“页面级别的 .json 配置文件”就可以实现这种需求。
注意:当页面配置与全局配置冲突时,根据就近原则,最终的效果以页面配置为准
属性名
类型
默认值
说明
navigationBarTitleText
String
当前页面导航栏标题文字内容
navigationBarBackgroundColor
HexColor
#
当前页面导航栏背景颜色
navigationBarTextStyle
String
white
当前页面导航栏标题颜色,仅支持 black/white
backgroundColor
HexColor
#ffffff
当前页面窗口的背景颜色
backgroundTextStyle
String
dark
当前页面下拉 loading 的样式,仅支持 dark/light
enablePullDownRefresh
Boolean
fasle
是否为当前页面开启下拉刷新
onReachBottomDistance
Number
50
页面上拉触底事件触发时距页面底部的距离,单位为px
与全局配置中window的配置项一样
出于安全性方面的考虑,小程序官方对数据接口的请求做出了如下两个限制:
只能请求 HTTPS 类型的接口必须将接口的域名添加到信任列表中需求描述:假设在自己的微信小程序中,希望请求 域名下的接口
配置步骤:登录微信小程序管理后台 -> 开发 -> 开发设置 -> 服务器域名 -> 修改 request 合法域名
注意事项:
域名只支持 https 协议-
域名不能使用 IP 地址或 localhost
域名必须经过 ICP 备案
调用微信小程序提供的 wx.request() 方法,可以发起 GET 数据请求
使用 wx.request() 需要在函数方法内使用
在很多情况下,我们需要在页面刚加载的时候,自动请求一些初始化的数据。此时需要在页面的 onLoad 事件中调用获取数据的函数
示例代码如下:
新建项目并梳理项目结构配置导航栏效果配置 tabBar 效果
实现轮播图效果实现九宫格效果实现图片布局
获取轮播图数据列表的接口:【GET】
获取九宫格数据列表的接口:【GET】
需要依据具体的键名进行编写 wxml 的代码