容器视图组件
容器视图组件是能容纳其他组件的组件,是构建小程序页面布局的基础组件,主要包括 view.mcroll -view 和 swiper 组件。
view
view 组件是块级组件,没有特殊功能,主要用于布局展示,相当于HTML中的div,是布局中最基本的用户界面(User Interace,UI)组件,通过设置 view的CSS 属性可以实现各种复杂的布局。view组件的特有属性如表所示。
<view style="text-align:center;">默认flex布局</view>
<view style="display: flex;">
<view style="border:1px solid #f00;flex-grow: 1;">1</view>
<view style="border:1px solid #f00;flex-grow: 1;">2</view>
<view style="border:1px solid #f00;flex-grow: 1;">3</view>
</view>
<view style="text-align: center;">上下混合布局</view>
<view style="display: flex;flex-direction: column;">
<view style="border: 1px solid #f00;">1</view>
<view style="display: flex;">
<view style="border: 1px solid #f00;flex-grow: 1;">2</view>
<view style="border: 1px solid #f00;flex-grow: 2;">3</view>
</view>
</view>
<view style="text-align: center;">左右混合布局</view>
<view style="display: flex;">
<view style="border: 1px solid #f00;flex-grow: 1;">1</view>
<view style="display: flex;flex-direction:column;flex-grow: 1;">
<view style="border: 1px solid #f00;flex-grow: 1;">2</view>
<view style="border: 1px solid #f00;flex-grow: 2;">3</view>
</view>
</view>
基础内容组件
基础内容包括icon、text和progress,主要用于在视图页面展示图标。
icon
icon组件即图标组件,通常用于表示一种状态如表所示:
wxml代码
<view>
<block wx:for="{{iconType}}">
<icon type="{{item}}"/>{{item}}
</block>
</view>
<view>
<block wx:for="{{iconSize}}">
<icon type="success"size="{{iitem}}"/>{{item}}
</block>
</view>
<view>
<block wx:for="{{iconColor}}">
<icon type="success"size="30"color="{{iitem}}"/>{{item}}
</block>
</view>
js
Page({
data:{
iconType:["success","success_no_circle","info","warn","waiting","cancel","download","search","clear"],
iconSize:[10,20,30,40],
iconColor:['#f00','#0f0','#00f']
}
})
表单组件
表单组件的主要功能是收集用户信息, 并将这些信息传递给后台服务器,实现小程序与
用户之间的沟通。表单组件不仅可以放置在<form/>标签中使用,还可以作为单独组件和其他组件混合使用。
button
button 组件用来实现用户和应用之间的交互,同时按钮的颜色起引导作用。一般来说,在一个程序中一个按钮至少有3种状态:默认点击(default)、建议点击(primary)、谨慎点击(warn)。在构建项目时,应在合适的场景使用合适的按钮,当<button>被<form/>包裹时,可以通过设置form -type属性来触发表单对应的事件。button组件的属性如表所示。
wxml
<button type="default">type:default</button>
<button type="primary">type:primary</button>
<button type="warn">type:warn</button>
<button type="default" bind:tap="buttonSize" size="{{size}}">改变size</button>
<button type="default" bind:tap="buttonPlain" plain="{{plain}}">改变plain</button>
<button type="default" bind:tap="buttonLoading" loading="{{loading}}">改变loading显示</button>
js
Pace({
data:{
size:'default',
plain:'false',
loading:'false'
},
buttonSize:function(){
if(this.data.size=="default")
this.setData({size:'mini'})
else
this.setData({size:'default'})
},
buttonPlain:function(){
this.setData({plain:!this.data.plain})
},
buttonLoading:function(){
this.setData({loading:!this.data.loading})
}
})
checkbox
复选框用于从一组选项中选取多个选项,小程序中复选框由< checkbox - group/ > (多项选择器) 和< checkbox / > (多选项目) 两个组件组合而成。 一个< checkbox - group/ > 表示一组选项,可以在一组选项中选中多个选项。 它们的属性如表所示
slider
slider 组件为滑动选择器,可以通过滑动来设置相应的值,其属性如表所示。
wxml
<view>默认 min=0 max=100 step=1</view>
<slider />
<view>显示当前值</view>
<slider show-value/>
<view>设置min=20 max=200 step=10</view>
<slider min='0' max='200' step='10' show-value></slider>
<view>背景条红色,已选定颜色绿色</view>
<slider color="#f00" selected-color="#0f0"/>
<view>滑条改变icon的大小</view>
<slider show-value bindchange="sliderchange"/>
<icon type="success" size="{{size}}"/>
js
Page({
data:{
size:'20'
},
sliderchange:function(e){
this.setData({size:e.detail.value})
}
})
picker
picker 组件为滚动选择器,当用户点击picker 组件时,系统从底部弹出选择器供用户选择。 picker 组件目前支持5 种选择器,分别是: selector (普通选择器)、multiSelector (多列选择器)、time (时间选择器)、date (日期选择器)、region (省市选择器)。
普通选择器
普通选择器(mode= selector ) 的属性如表所示。
wxml
<view>----range为数组----</view>
<picker range="{{array}}" value="{{index1}}" bindchange="arrayChange">
当前选择:{{array[index1]}}
</picker>
<view>----range为数组对象----</view>
<picker bindchange="objArrayChange" value="{{index2}}" range-key="name" range="{{objArray}}">
当前选择:{{objArray[index2].name}}
</picker>
js
Page({
data:{
array:['Java','Python','C','C#'],
objArray:[
{id:0,name:'Java'},
{id:1,name:'Python'},
{id:2,name:'C'},
{id:3,name:'#C'}
],
index1:0,
index2:0
},
arrayChange:function(e){
console.log('picker值变为',e.detail.value)
var index=0;
this.setData({
index1:e.detail.value
})
},
objArrayChange:function(e){
console.log('picker值变为',e.detail.value)
this.setData({
index2:e.detail.value
})
}
})
picker-view
picker- view组件为嵌入页面的滚动选择器。 相对于 picker 组件,picker- view组件的列的个数和列的内容由用户通过< picker- view-column/ > 自定义设置。 picker- view组件的属性如表所示。
wxml
<view>当前日期:{{year}}年{{month}}月{{day}}日</view>
<picker-view indicator-style="height: 50px;" style="width: 100%; height: 300px;" value="{{value}}" bindchange="bindChange">
<picker-view-column>
<view wx:for="{{years}}" style="line-height: 50px;">{{item}}年</view>
</picker-view-column>
<picker-view-column>
<view wx:for="{{months}}" style="line-height: 50px;">{{item}}月</view>
</picker-view-column>
<picker-view-column>
<view wx:for="{{days}}" style="line-height: 50px;">{{item}}日</view>
</picker-view-column>
</picker-view>
js
const date = new Date();
const years = [];
const months = [];
const days = [];
for (let i = 1900; i <= 2050; i++) {
years.push(i);
}
for (let i = 1; i <= 12; i++) {
months.push(i);
}
for (let i = 1; i <= 31; i++) {
days.push(i);
}
Page({
data: {
years: years,
months: months,
days: days,
year: date.getFullYear(),
month: date.getMonth() + 1,
day: date.getDate(),
value: [date.getFullYear() - 1900, date.getMonth(), date.getDate() - 1]
},
bindChange: function (e) {
const val = e.detail.value;
this.setData({
year: this.data.years[val[0]],
month: this.data.months[val[1]],
day: this.data.days[val[2]]
});
}
})
audio
audio 组件用来实现音乐播放、暂停等,其属性如表所示。
wxml
<audio src="{{src}}" poster="{{poster}}" name="{{name}}" author="{{author}}" loop controls ></audio>
<button type="primary" bindtap="play">播放</button>
<button type="primary" bindtap="pause">暂停</button>
<button type="primary" bindtap="setPlayRate">设置速率</button>
<button type="primary" bindtap="setCurrentTime">设置当前时间(秒)</button>
js
Page({
data:{
poster:'http://y.gtimg.cn/music/photo_new/T002R300x300M000003rsKF44GyaSk.jpg ? max_age=2592000',
name:'此时此刻',
author:'许巍',
src:'https://ws6.stream.qqmusic.qq.com/RS02060Uf6fc0fILAt.mp3?guid=6031362059&vkey=8AF94726EA2E3AB6365F98368EE4B0838B8EEB168A5DBC14A582392D53095D6FE30ACF0EBA1BEB16BF3ACAB8D637EBB3B99ABE510A0D131E&uin=&fromtag=120052'
},
play:function(){
this.setData({
action:{
method:'pause'
}
})
},
playRate:function(){
this.setData({
action:{
method:'setPlaybackRate',
data:10
}
})
console.log('当前速率:' +this.data.action.data)
},
currentTime:function(e){
this.setData({
action:{
method:'setCurrentTime',
data:120
}
})
}
})
video
video 组件用来实现视频的播放、暂停等。属性如表所示:
实现绘图
需要3步:
(1) 创建一个canvas绘图上下文。
var context=wx:createCanvasContext(‘myCanvas‘)
(2) 使用canvas绘图上下文进行绘图描述。
Context.draw()
(3) 画图。
Context.draw()
wxml
<canvas canvas-id="myCanvas" style="border: 1px solid red;"></canvas>
js
Page({
onLoad:function(options){
var ctx =wx.createCanvasContext('myCanvas')
ctx.setFillStyle('green')
ctx.fillRect(10,10,200,100)
ctx.draw()
}
})
即速应用的优势
即速应用是深圳市咫尺网络科技开发有限公司开发的一款同时兼具微信小程序和支付宝小程序快速开发能力的工具, 用户只需简单拖拽可视化组件, 就可以实现在线小程序开发。
1. 开发流程简单,零门槛制作
(1) 登录即速应用的官方网站(www.jisuapp.cn), 进入制作界面, 从众多行业模板中选择一个合适的模板。
(2) 在模板的基础上进行简单编辑和个性化制作。
(3) 制作完成后, 将代码一键打包并下载。
(4) 将代码上传至微信开发者工具。
(5) 上传成功后, 等待审核通过即可
2. 行业模板多样,种类齐全
即速应用为广大开发者提供了非常齐全的行业解决方案。 目前, 即速应用已经上线60多个小程序行业模板, 涉及餐饮(单店版、多店版)、婚庆、旅游、运动、美容、房地产、家居、医药、母婴、摄影、社区、酒店、KTV、汽车、资讯等多个行业。 这些小程序行业模板可以有效地帮助企业拓宽资源整合渠道, 降低运营成本, 提高管理效率。
3. 丰富的功能组件和强大的管理后台
即速应用的应用范围主要包括以下类型:
(1) 资讯类: 新闻、媒体。
(2) 电商类: 网购(服装、电器、读书、母婴……)。
(3) 外卖类: 餐饮及零售。
(4) 到店类: 餐饮及酒吧。
(5) 预约类: 酒店、KTV、家教、家政, 其他服务行业。
面板栏
1.菜单栏
菜单栏中的“风格” 选项用于设置小程序页面的风格颜色, “管理” 选项用于进入后台管理页面, “帮助” 选项用于提示帮助功能, “客服” 选项用于进入客服界面, “历史”选项用来恢复前项操作, “预览” 选项用在PC端预览制作效果, “保存” 选项用于保存已制作的内容, “生成” 选项用于实现小程序打包上线设置。
2.工具栏
工具栏包括“页面管理” “组件库” 2 个选项卡, “页面管理” 实现添加页面和添加分组以及对某一页面进行改名、收藏、复制、删除操作。 “组件库” 有9 个基础组件、7 个布局组件、18 个高级组件和2 个其他组件。
3.编辑区
编辑区是用来制作小程序页面的主要区域, 通过拖拽组件实现页面制作, 右边的“前进” “后退” 选项可以进行恢复操作, “模板” 选项可以用来选择模板, “元素” 选项可以用来显示页面中的组件及其层次关系, “数据” 选项可以用来进行页面数据管理, “模块” 选项可以用来选择模块。
4.属性面板
属性面板用来设置选定组件的属性及样式, 包括“组件” 和“组件样式” 两个选项卡。“组件” 选项卡用来设置组件内容及点击事件; “组件样式” 选项卡用来设置组件的样式,不同组件有不同的样式需要设置。
基本组件
基本组件是小程序页面常用的组件, 包括文本、图片、按钮、标题、轮播、分类、图片列表、图文集和视频+
1.文本组件
用于展示文字、设置点击事件,是小程序页面中最常用的组件。 文本组件的属性面板
2.图片组件
图片组件用于在页面中展示图片, 其属性面板
3.按钮组件
按钮组件用于在页面中设置按钮, 其属性面板
4.标题组件
标题组件用于在页面中设置标题, 其属性面板
5.轮播组件
轮播组件用于实现图片的轮播展示, 其属性面板单击“添加轮播分组” 按钮进入管理后台, 然后单击“轮播管理” → “新建分组” 选项可以创建轮播分组分别填写“分组名称” 和“分组描述”, 单击“确定” 按钮进入轮播管理界面。
6.分类组件
分类组件可以设置不同内容展示在不同类别中, 还可以添加、删除分类的个数及进行相应的设置。 分类组件的属性面板
7.图片列表组件
图片列表组件可以将图片以列表的形式展示, 还可以设置图片的名称、标题和点击事件。 图片列表组件的属性面板
8.图文集组件
图文集组件用于展示图片、标题和简介
9.视频组件
视频组件用于展示视频
发起网络请求
wx.request(Object)实现向服务器发送请求、获取数据等各种网络交互操作, 其相关参数如表6 - 1 所示。一个微信小程序同时只能有5 个网络请求连接, 并且是HTTPS 请求。
wxml
<button type="primary"bindtap="getbaidutap">获取HTML数据</button>
<textarea value='{{html}}'auto-height maxlength='0'></textarea>
js
Page({
data:{
html:""
},
getbaidutap:function(){
var that = this;
wx.request({
url: 'https://www.baidu.com/',//百度网址
data:{},
header:{'Content-Type':'application/json'},
success:function(res){
console.log(res);
that.setData({
html:res.data
})
}
})
}
})
多媒体 API
多媒体API 主要包括图片API、录音API、音频播放控制API、音乐播放控制API 等, 其目的是丰富小程序的页面功能。
图片 API
图片API 实现对相机拍照图片或本地相册图片进行处理, 主要包括以下4 个API 接口:
■ wx.chooseImage(Object) 接口 用于从本地相册选择图片或使用相机拍照。
■ wx.previewImage(Object)接口 用于预览图片。
■ wx.getInfo(Object)接口 用于获取图片信息。
■ wx.savageToPhotosAlbum(Object) 接口 用于保存图片到系统相册。
选择图片或拍照
wx.chooseImage(Object) 接口用于从本地相册选择图片或使用相机拍照。 拍照时产生的临时路径在小程序本次启动期间可以正常使用, 若要持久保存, 则需要调用wx.saveFile 保存图片到本地。 其相关参数如表
.预览图片
wx.previewImage(Object)接口主要用于预览图片,其属性参数如表
获取图片信息
wx,getImageInfo(Object)接口用于获取图片信息,其相关参数如表
保存图片到系统相册
wx.saveImageToPhotosAlbum(Object)接口用于保存图片到系统相册,需要得到用户授权scope.writePhotosAlbum。其相关参数如表
本地数据及缓存API
小程序提供了以键值对的形式进行本地数据缓存功能,并且是永久存储的,但最大不超过10MB,其目的是提高加载速度。数据缓存的接口主要有4个:
■ wx.setStorage(Object) 或 wx.setStorageSync(key,data) 接口 用于设置缓存数据。
■ wx.getStorage(Object) 或 wx.getStorageSync(key) 接口 用于获取缓存数据。
■ wx.removeStorage(Object) 或 wx.removeStorageSync(key) 接口 用于删除指定缓存数据。
■ wx.clearStorage() 或 wx.clearStorageSync() 接口 用于清除缓存数据。
其中, 带Sync后缀的为同步接口, 不带Sync后缀的为异步接口。
保存数据
1.wx.setStorage(Object)
wx.setStorage(Object) 接口将数据存储到本地缓存接口指定的key中, 接口执行后会覆盖原来key对应的内容。 其参数如表所示。
wx.setStorageSync(key,data)
wx.setStorageSync(key,data) 是同步接口, 其参数只有key和data。
wx.setStorageSync('age','25')
位置信息API
小程序可以通过位置信息API来获取或显示本地位置信息, 小程序支持WGS84和GCj02标准, WGS84标准为地球坐标系, 是国际上通用的坐标系;GCj02标准是中国国家测绘局制定的地理信息系统的坐标系统, 是由WGS84坐标系经加密后的坐标系, 又称为火星坐标系。 默认为WGS84标准, 若要查看位置需要使用GCj02标准。 主要包括以下3 个API接口:
■ wx.getLocation(Object) 接口 用于获取位置信息。
■ wx.chooseLocation(Object) 接口 用于选择位置信息。
■ wx.openLocation(Object) 接口 用于通过地图显示位置。
获取位置信息
wx.getLocation(Object) 接口用于获取当前用户的地理位置、速度, 需要用户开启定位功能, 当用户离开小程序后, 无法获取当前的地理位置及速度, 当用户点击“显示在聊天顶部” 时, 可以获取到定位信息, 其相关参数如表所示。
wx.getLocation(Object) 调用成功后, 返回的参数如表所示.
设备相关API
设备相关的接口用于获取设备相关信息, 主要包括系统信息、网络状态、拨打电话及扫码等。 主要包括以下5 个接口API:
■ wx.getSystemInfo(Object) 接口、wx.getSystemInfoSync() 接口 用于获取系统信息。
■ wx.getNetworkType(Object) 接口 用于获取网络类型。
■ wx.onNetworkStatusChange(CallBack) 接口 用于监测网络状态改变。
■ wx.makePhoneCall(Object) 接口 用于拨打电话。
■ wx.scanCode(Object) 接口 用于扫描二维码。
获取系统信息
wx.getSystemInfo(Object) 接口、wx.getSystemInfoSync() 接口分别用于异步和同步获取系统信息。 其相关参数如表所示。
wx.getSystemInfo() 接口或 wx.getSystemInfoSync() 接口调用成功后, 返回系统相关信息, 如表所示。
拨打电话
wx.makePhoneCall(Object) 接口用于实现调用手机拨打电话, 其相关参数如表所示
wx.makePhoneCall({
phoneNumber: '6666666666',
})
扫描二维码
wx.scanCode(Object) 接口用于调起客户端扫码界面, 扫码成功后返回相应的内容, 其相关参数如表所示。
扫码成功后, 返回的数据如表所示。