第一章
微信小程序的特征:
1.无须安装
小程序内嵌于微信程序之中,用户在使用过程中无须在应用商店下载安装外部应用。2.触手可及
用户通过扫描维码等形式直接进入小程序,实现线下场景与线上应用的即时联通。
3.用完即走
用户在线下场景中,当有相关需求时,可以直接接入小程序,使用服务功能后便可以对其不理会,实现用完即走。
4.无须卸载
用户在访问小程序后可以直接关闭小程序,无须卸载。
微信小程序应用场景特点:
1.简单的业务逻辑
简单是指应用本身的业务逻辑并不复杂。
2.低频度的使用场景
低频度是小程序使用场景的另一个特点。
第二章
主体文件
微信小程序的主体部分由3个文件组成,这3个文件必须放在项目的主目录中,负责小程序的整体配置,它们的名称是固定的。
app . js 小程序逻辑件,主要用来注册小程序全局实例。在编译时, app . js 文件会和其他页面的逻辑文件打包成一个 JavaScript 文件。该文件在项目中不可缺少。
app . json 小程序公共设置文件,配置小程序全局设置。该文件在项目中不可缺少。
app . wxss 小程序主样式表文件,类似 HTML 的.css 文件。在主样式表文件中设置的样式在其他页面文件中同样有效。该文件在项目中不是必需的。
页面文件
小程序通常是由多个页面组成的,每个页面包含4个文件,同一页面的这4个文件必须具有相同的路径与文件名。当小程序被启动或小程序内的页面进行跳转时,小程序会根据 app . json 设置的路径找到相对应的资源进行数据绑定。
. js 文件页面逻辑文件,在该文件中编写 JavaScript 代码控制页面的逻辑。该文件在每个小程序的页面中不可缺少。
.wxml 文件页面结构文件,用于设计页面的布局、数据绑定等,类似 HTML 页面中的. html 文件。该文件在页面中不可缺少。
. wxss 文件页面样式表文件,用于定义本页面中用到的各类样式表。当页面中有样式表文件时,文件中的样式规则会层叠覆盖 app . wxss 中的样式规则;否则,直接使用 app . wxss 中指定的样式规则。该文件在页面中不可缺少。
. json 文件页面配置文件。该文件在页面中不可缺少。
视图层
MINA 框架的视图层由 WXML 与 WXSS 编写,由组件来进行展示。对于微信小程序而言,视图层就是所有. wxml 文件与. wxss 文件的集合:. wxml 文件用于描述页面的结构. wxss 文件用于描述页面的样式。
微信小程序在逻辑层将数据进行处理后发送给视图层展现出来,同时接收视图层的事件反馈。视图层以给定的样式展现数据并反馈时间给逻辑层,而数据展现是以组件来进行的。组件是视图的基本组成单元。
逻辑层
逻辑层用于处理事务逻辑。对于微信小程序而言,逻辑层就是所有. js 脚本文件的集合。微信小程序在逻辑层将数据进行处理后发送给视图层,同时接受视图层的事件反馈。
微信小程序开发框架的逻辑层是采用 JavaScript 编写的。在 JavaScript 的基础上,微信团队做了适当修改,以便提高开发小程序的效率。主要修改包括:
(1)增加 app ()和 Page ()方法,进行程序和页面的注册。
(2)提供丰富的 API ,如扫一扫、支付等微信特有的能力。
(3)每个页面有独立的作用域,并提供模块化能力。
逻辑层就是通过各个页面的. js 脚本文件来实现的。由于小程序并非运行在浏览器中,所以 JavaScript 在 Web 中的一些功能在小程序中无法使用,如 document 、 window 等。
开发者开发编写的所有代码最终会被打包成独立的 JavaScript 文件,并在小程序启动的时候运行,直到小程序被销毁。
数据层
数据层在逻辑上包括页面临时数据或缓存、文件存储(本地存储)和网络存储与调用。
页面临时数据或缓存
在 Page ()中,使用 setData 函数将数据从逻辑层发送到视图层,同时改变对应的 this . data 的值。
setData ()函数的参数接收一个对象,以( key , value )的形式表示将 key 在 this . data 中对应的值改变成 value 。
文件存储(本地存储)
使用数据 API 接口,如下:
wx . getStorage 获取本地数据缓存。
wx . setStorage 设置本地数据缓存。
wx . clearStorage 清理本地数据缓存。
网络存储与调用
上传或下载文件 API 接口,如下:
wx . request 发起网络请求。
wx . uploadFile 上传文件。
wx . downloadFile 下载文件。
调用 URL 的 API 接口,如下:
wx . navigateTo 新窗口打开页面。
wx . redirectTo 原窗口打开页面。
配置文件
小程序的配置文件按其作用范围可以分为全局配置文件( app . json )和页面配置文件(*. json )。全局配置文件作用于整个小程序,页面配置文件只作用于当前页面。由于页面配置文件的优先级高于全局配置文件的优先级,因此,当全局配置文件与页面配置文件有相同配置项时,页面配置文件会覆盖全局配置文件中的相同配置项内容。
全局配置文件
小程序的全局配置保存在全局配置文件( app . json )中,使用全局配置文件来配置页面文件( pages )的路径、设置窗口( window )表现、设定网络请求 API 的超时时间值( networkTimeout )以及配置多个切换页( tabBar )等。
全局配置项
全局配置文件内容的整体结构如下:
pages配置项
pages 配置项接受一个数组,用来指定小程序由哪些页面组成,数组的每一项都是字符串,代表对应页面的"路径"+"文件名"。 pages 配置项是必填项。
设置 pages 配置项时,应注意以下3点:
(1)数组的第一项用于设定小程序的初始页面。
(2)在小程序中新增或减少页面时,都需要对数组进行修改。
(3)文件名不需要写文件扩展名。小程序框架会自动寻找路径及对. js 、. json 、 wxml 和. wxss 文件进行整合数据绑定。
window配置项
window 配置项负责设置小程序状态栏、导航条、标题、窗口背景色等系统样式。
tabBar配置项
当需要在程序顶部或底部设置菜单栏时,可以通过配置 tabBar 配置项来实现。
networkTimeout配置项
小程序中各种网络请求 API 的超时时间值只能通过 networkTimeout 配置项进行统一设置,不能在 API 中单独设置。
debug配置项
debug 配置项用于开启开发者工具的调试模式,默认为 false 。开启后,页面的注册、路由、数据更新、事件触发等调试信息将以 info 的形式输出到 Console (控制台)面板上。
页面配置文件
页面配置文件(*. json )只能设置本页面的窗口表现,而且只能设置 window 配置项的内容。在配置页面配置文件后,页面中的 window 配置值将覆盖全局配置文件( app . json )中的配置值。
逻辑层文件
小程序的逻辑层文件分为项目逻辑文件和页面逻辑文件。
项目逻辑文件
项目逻辑文件 app . js 中可以通过 App ()函数注册小程序生命周期函数、全局属性和全局方法,已注册的小程序实例可以在其他页面逻辑文件中通过 getApp ()获取。
App ()函数用于注册一个小程序,参数为 Object ,用于指定小程序的生命周期函数、用户自定义属性和方法。
当启动小程序时,首先会依次触发生命周期函数 onLanuch 和 onShow 方法,然后通过 app . json 的 pages 属性注册相应的页面,最后根据默认路径加载首页;当用户单击左上角的"关闭"按钮或单击设备的 Home 键离开微信时,小程序没有被直接销毁,而是进入后台,这两种情况都会发onHide 方法;当用户再次进入微信或再次打开小程序时,小程序会从后台进入前台,这时会触发 onShow 方法。只有当小程序进入后台一段时间(或者系统资源占用过高)时,小程序才会被销毁。
页面逻辑文件
页面逻辑文件的主要功能有:设置初始数据;定义当前页面的生命周期函数;定义事件处理函数等。每个页面文件都有一个相应的逻辑文件,逻辑文件是运行在纯 JavaScript 引擎中。因此,在逻辑文件中不能使用浏览器提供的特有对象( document 、 window )及通过操作 DOM 改变页面,只能采用数据绑定和事件响应来实现。
在逻辑层, Page ()方法用来注册一个页面,并且每个页面有且仅有一个。
设置初始数据
设置初始数据是对页面的第一次数据绑定。对象 data 将会以 JSON ( Javascript Object No - tation , JS 对象简谱)的形式由逻辑层传至视图层。因此,数据必须是可以转成 JSON 的格式(字符串、数字、布尔值、对象、数组)。
视图层可以通过 WXML 对数据进行绑定。
定义当前页面的生命周期函数
在 Page ()函数的参数中,可以定义当前页面的生命周期函数。页面的生命周期函数主要有 onLoad 、 onShow 、 onReady 、 onHide 、 onUnload 。
onLoad 页面加载函数。当页面加载完成后调用该函数。一个页面只会调用一次。该函数的参数可以获取 wx . navigateTo 和 wx . redirectTo 及< navigator />中的 query 。
onShow 页面显示函数。当页面显示时调用该函数。每次打开页面都会调用一次。onReady 页面数据绑定函数。当页面初次数据绑定完成时调用该函数。一个页面只会调用一次,代表页面已经准备就绪,可以和视图层进行交互。
onHide 页面隐藏函数。当页面隐藏时及当 navigateTo 或小程序底部进行 tab 切换时,调用该函数。onUnload 页面卸载函数。当页面卸载、进行 navigateBack 或 redirectTo 操作时,调用该函数。
页面结构文件
页面结构文件( WXML )是框架设计的一套类似 HTML 的标签语言,结合基础组件、事件系统,可以构建出页面的结构,即. wxml 文件。在小程序中,类似 HTML 的标签被称为组件,是页面结构文件的基本组成单元。这些组件有开始(如< view >)和结束(如</ view >)标志,每个组件可以设置不同的属性(如 id 、 class 等),组件还可以嵌套。WXML 还具有数据绑定、条件数据绑定、列表数据绑定、模板、引用页面文件、页面事件等能力。
数据绑定
小程序在进行页面数据绑定时,框架会将 WXML 文件与逻辑文件中的 data 进行动态绑定,在页面中显示 data 中的数据。小程序的数据绑定使用 Mustache 语法({{}} )将变量或运算规则包起来。
简单绑定
简单绑定可以作用于内容、组件属性、控制属性等的输出。单绑定是指使用双大括号( { { } } )将变量包起来,在页面中直接作为字符串输出使用。
简单绑定作用于组件属性、控制属性时,双大括号外应添加双引号。
运算
在{{}}内可以做一些简单的运算(主要有算术运算、逻辑运算、三元运算、字符串运算等),这些运算均应符合 JavaScript 运算规则。
条件数据绑定
条件数据绑定就是根据绑定表达式的逻辑值来判断是否数据绑定当前组件。
wx: if 条件数据绑定
wxjif 条件数据绑定是指使用 wx : if 这个属性来判断是否数据绑定前组件。
当需要添加多个分支块时,可以使用 wx : elif , wx : else 属性。当控制表达式为 true 时,数据绑定一个分支;当控制表达式为 false 时,数据绑定另一个分支。
block wx : if 条件数据绑定
当需要通过一个表达式去控制多个组件时,可以通过< block >将多个组件包起来,然后在<block>中添加wx:if属性即可。
列表数据绑定
列表数据绑定用于将列表中的各项数据进行重复数据绑定。
wx : for
在组件上,可以使用 wx : for 控制属性绑定一个数组,将数据中的各项数据循环进行数据绑定到该组件。微信开发工具中提供了使用 wx : for - index 来重新指定数据当前项下标的变量名,使用 wx : for - item 来重新指定当前项的变量名
block wx : for
与block wx : if 类似,在wxml中也可以使用<block>包装多个组件进行列表数据绑定。
模板
在小程序中,如果要经常使用几个组件的组合(如"登录"选项),通常把这几个组件结合定义为一个模板,以后在需要的文件中直接使用这个模板。
定义模板
模板代码由 wxml 组成,因此其定义也是在 wxml 文件中。
调用模板
将模板定义后,就可以对其进行调用了。
其中,< template >为模板标签; is 属性用于指定要调用的模板名称; data 属性定义要传
入的数据,如果模板中不需要传入数据, data 属性可以省略。
引用页面文件
在WXML文件中,不仅可以引用模板文件,还可以引用普通的页面文件。
一是用import引入,二是用include方式。
页面事件
简单来说,小程序中的事件是用户的一种行为或通信方式。在页面文件中,通过定义事件来完成页面与用户之间的交互,同时通过事件来实现视图层与逻辑层的通信。我们可以将事件绑定到组件上,当达到触发条件时,事件就会执行逻辑层中对应的事件处理函数。
要实现这种机制,需要定义事件函数和调用事件。
定义事件函数在. js 文件中定义事件函数来实现相关功能,当事件响应后就会执行事件处理代码。
调用事件调用事件也称为注册事件。调用事件就是告诉小程序要监听哪个组件的什么事件,通常在页面文件中的组件上注册事件。事件的注册(同组件属性),以" key = value "形式出现, key (属性名)以 bind 或 catch 开头,再加上事件类型,如 bindtap 、 catchlongtap 。其中, bind 开头的事件绑定不会阻止冒泡事件向上冒泡, catch 开头的事件绑定可以阻止冒泡事件向上冒泡。 value (属性值)是在 js 中定义的处理该事件的函数名称,如 click 。
在小程序中,事件分为冒泡事件和非冒泡事件两大类型。
冒泡事件冒泡事件是指某个组件上的事件被触发后,事件会向父级元素传递,父级元素再向其父级元素传递,一直到页面的顶级元素。
非冒泡事件非冒泡事件是指某个组件上的事件被触发后,该事件不会向父节点传递。
页面文件样式
页面样式文件( WXSS )是基于 CSS 拓展的样式语言,用于描述 WXML 的组成样式,决定 WXML 的组件如何显示。 WXSS 具有 CSS 的大部分特性,小程序对 WXSS 做了一些扩充和修改。
尺寸单位
由于 CSS 原有的尺寸单位在不同尺寸的屏幕中得不到很好的呈现, WXSS 在此基础上增加了尺寸单位 rpx ( respnesive pixel )。 WXSS 规定屏幕宽度为750 rpx ,在系统数据绑定过程中 rpx 会按比例转化为 px 。例如, iPhone 6的屏幕宽度为375 px ,即750 rpx 需按比例转化为375 px ,所以,在 iPhone 6中,1 rpx =0.5 px 。
样式导入
为了便于管理 WXSS 文件,我们可以将样式存放于不同的文件中。如果需要在某个文件中引用另一个样式文件,使用@ import 语句导入即可。
选择器
目前, WXSS 仅支持 CSS 中常用的选择器,如. class 、# id 、 element 、:: before 、:: aftert 等。
WXSS常用属性
WXSS 文件与 CSS 文件有大部分属性名及属性值相同 。
第三章
盒子模型
微信小程序的视图由WXML和WXSS组成。
在页面设计中,只有掌握了盒子模型以及盒子模型的各个属性和应用方法,才能轻松控制页面中的各个元素。
在CSS中,一个独立的盒子模型由内容(content),内边距(padding),边框(border)和外边距(margin)4个部分组成,如图为盒子模型结构。
此外,对padding,border,和margin可以进一步细化为上,下,左,右四个部分,在CSS中可以分别进行设置,如图
图中各元素的含义如下:
width和height 内容的宽度和高度。
padding-top,padding-right,padding-bottom和padding-left 上内边距,右内边距,底内边距和左内边距。
border-top,border-right,border-bottom和border-left 上边框,右边框,底边框和左边框。
margin-top,margin-right,margin-bottom和margin-left 上外边距,右内边距,底内边距和左内边距。
CSS中的布局都基于盒子模型,不同类型的元素对盒子模型的处理不同。
块级元素与行内元素
元素按显示方式分为块级元素,行内元素和行内块元素,它们的显示方式由display属性控制。
块级元素
块级元素默认占一行高度,一行内通常只有一个块级元素(浮动后除外),添加新的块级元素时,会自动换行,块级元素一般作为盒子出现。块级元素的特点如下:
(1)一个块级元素占一行。
(2)块级元素的默认高度由内容决定,除非自定义高度。
(3)块级元素的默认宽度是父级元素的内容区宽度,除非自定义宽度。
(4)块级元素的宽度、高度、外边距及内边距都可以自定义设置。
(5)块级元素可以容纳块级元素和行内元素。
行内元素
行内元素,不必从新一行开始,通常会与前后的其他行内元素显示在同一行中,它们不占有独立的区域,仅靠自身内容支撑结构,一般不可以设置大小,常用于控制页面中文本的样式。将一个元素的 display 属性设置为 inline 后,该元素即被设置为行内元素。行内元素的特点如下:
(1)行内元素不能被设置高度和宽度,其高度和宽度由内容决定。
(2)行内元素内不能放置块级元素,只级容纳文本或其他行内元素。
(3)同一块内,行内元素和其他行内元素显示在同一行。
元素浮动与清除
元素浮动就是指设置了浮动属性的元素会脱离标准文档流的控制,移到其父元素中指定位置的过程。
none -﹣默认值,表示元素不浮动;
left ﹣元素向左浮动;
right -﹣元素向右浮动。
由于浮动元素不再占用原文档流的位置,因此它会对页面中其他元素的排列产生影响。在 CSS 中, clear 属性用于清除浮动元素对其他元素的影响,其基本格式如下:
{clear:left|right|both|none}
其中, left -﹣清除左边浮动的影响,也就是不允许左侧有浮动元素;
right -﹣清除右边浮动的影响,也就是不允许右侧有浮动元素;
both -﹣同时清除左右两侧浮动的影响;
none -﹣不清除浮动。
元素定位
浮动布局虽然灵活,但无法对元素的位置进行精确的控制。在 CSS 中,通过 position 属性可以实现对页面元素的精确定位。基本格式如下:
{position:static|relative|absolute|fixed}
其中, static -﹣默认值,该元素按照标准流进行布局;
relative -﹣相对定位,相对于它在原文档流的位置进行定位,它后面的盒子仍以标准流方式对待它;
absolute -﹣绝对定位,相对于其上一个已经定位的父元素进行定位,绝对定位的盒子从标准流中脱离,它对其后的兄弟盒子的定位没有影响;
fixed -﹣固定定位,相对于浏览器窗口进行定位。
flex布局
flex 布局主要由容器和项目组成,采用 flex 布局的元素称为 flex 容器( flex container ), flex 布局的所有直接子元素自动成为容器的成员,称为 flex 项目( flex item )。
容器默认存在两根轴:水平的主轴( main axis )和垂直的交叉轴( cross axis )。主轴的开始位置(与边框的交叉点)叫做 main start ,结束位置叫做 main end ;交叉轴的开始位置叫做 cross start ,结束位置叫做 cross end 。
项目默认沿主轴排列。单个项目占据的主轴空间叫做 main size ,占据的交叉轴空间叫做 cross size 。 flex 布局模型如图 所示。
设置 display 属性可以将一个元素指定为 flex 布局,设置 flex - direction 属性可以指定主轴方向。主轴既可以是水平方向,也可以是垂直方向。
容器属性
flex容器支持的属性有7种,如图
display
display用来指定元素是否为flex布局,语法格式为:
.box{display:flex|inline-flex;}
其中,flex——块级flex布局,该元素变为弹性盒子:
inline-flex——行内flex布局,行内容器符合行内元素的特征,同时在容器内又符合flex布局规范。
设置了flex布局之后,子元素的float,clear和vertical-align属性将失效。
flex-direction
flex-direction用于设置主轴的方向,即项目排列的方向,语法格式为:
.box{flex-direction:row|row-reverse|column|column-reverse;}
其中, row -﹣主轴为水平方向,起点在左端,当元素设置为 flex 布局时,王轴默认为 row
row - reverse -﹣主轴为水平方向,起点在右端;
column -﹣主轴为垂直方向,起点在顶端; column - reverse -﹣主轴为垂直方向,起点在底端。图所示为元素在不同主轴方向下的显示效果。
(a) row; (b) row - reverse; (c) column; (d) column - reverse
flex-wrap
flex - wra 用来指定当项目在一根轴线的排列位置不够时,项目是否换行,其语法格式如下:
.box{flex-wrap:nowrap|wrap|wrap-reverse;}
其中, nowrap -﹣不换行,默认值;
wrap -﹣换行,第一行在上方;
wrap - reverse -﹣换行,第一行在下方。
当设置换行时,还需要设置 align - item 属性来配合自动换行,但 align - item 的值不能为" stretch "。
flex - wrap 不同值的显示效果如图 所示。
(a) nowrap; (b) wrap; (c) wrap - reverse
flex-flow
flex-flow是flex-direction和flex-wrap的简写形式,默认值为row nowrap。语法格式如下:
.box{flex-flow: <flex-direction>||<flex-wrap;}
justify-content
justify-content用于定义项目在主轴上的对齐方式。语法格式如下:
.box{justify-content: flex-start|flex-end|center|space-between|space-around;}
其中, justify - content -﹣与主轴方向有关,默认主轴水平对齐,方向从左到右; flex - start -﹣左对齐,默认值;
flex - end -﹣右对齐;
center -﹣居中;
space - between -﹣两端对齐,项目之间的间隔都相等;
space - around -﹣每个项目两侧的间隔相等。
图 示为 justify - content 不同值的显示效果。
(a) flex - start; (b) center; (c) flex - end; (d) space - between; (e) space - around
align-items
align-items用于指定项目在交叉轴上的对齐方式,语法格式如下:
.box{align-items:flex-start|flex-end|center|baseline|stretch;}
其中, align - items -﹣与交叉轴方向有关,默认交叉由上到下;
flex - start -﹣交叉轴起点对齐;
flex - end -﹣交叉轴终点对齐;
center -﹣交叉轴中线对齐;
baseline ﹣项目根据它们第一行文字的基线对齐;
stretch -﹣如果项目未设置高度或设置为 auto ,项目将在交叉轴方向拉伸填充容器,为默认值。
align-content
align-content用来定义项目有多根轴线(出现换行后)在交叉轴上的对齐方式,如果只有一根轴线,该属性不起作用。语法格式如下:
.box{align-content:flex-start|flex-end|center|space-between|space-around|stretch}
其中, space - between -﹣与交叉轴两端对齐,轴线之间的间隔平均分布;
space - around ﹣每根轴线两侧的间隔都相等,轴线间的间隔比轴线与边框间隔大一倍。
其余各属性值的含义与 align - items 属性的含义相同。
图所示为 align - content 不同值的显示效果。
(a) flex - start; (b) center; (c) flex - end
项目属性
容器内的项目支持6个属性,其名称和功能如表。
order
order属性定义项目的排列顺序,数值越小,排列越靠前,默认值为0。语法格式如下:
flex-grow
flex-grow定义项目的放大比例,默认值为0,即不放大。语法格式如下:
.item{flex-grow:<number>;}
flex-shrink
flex-shrink用来定义的缩小比例,默认值为1,如果空间不足,该项目将被缩小。语法格式如下:
.item{flex-shrink:<number>;}
flex-basis
flex-basis是用来定义伸缩项目的基准值,剩余的空间将按比例进行缩放,它的默认值为auto(即项目的本来大小)。语法格式如下:
.item{flex-basis:<number>|auto;}
flex
flex属性是flex-grow,flex-shrink和flex-basis的简写,其默认值分别为0,1,auto。语法格式如下:
.item{flex:<flex-grow>|<flex-shrink>|<flex-basis>;}
align-self
align-self属性用来指定单独的伸缩项目在交叉轴上的对齐方式。该属性会重写默认的对齐方式。语法格式如下:
.item{align-self;auto|flex-start|flex-end|center|baseline|stretch;}
在该属性值中,除了auto以外,其余属性值和容器align-items的属性值完全一致。
auto表示继承容器align-items的属性,如果没有父元素,则等于stretch(默认值) 。
第四章
组件的定义及属性
组件是页面视图的基本组成单元,组件组合可以构建功能强大的页面结构。
每一个组件都由一对标签组成,有开始标签和结束标签,内容放置在开始标签和结束标签之间,内容也可以是组件,组件的语法格式如下:
< 标签名 属性名 = “ 属性值 ” > 内容······</标签名>
组件通过属性进一步细化。
容器视图组件
容器视图组件是能容纳其他组件的组件,是构建小程序页面布局的基础组件,主要包括view,scroll-view和swiper组件。
view
view组件是块级组件,没有特殊功能,主要用于布局展示,相当于HTML中的div,是布局中最基本的用户界面组件,通过设置view的CSS属性可以实现各种复杂的布局。
view组件的特有属性如图:
scroll-view
通过设置scroll-view组件的相关属性可以实现滚动视图的功能,其属性如图所示:
【注意】
(1)在使用竖向滚动时,如果需要给scroll-view组件设置一个固定高度,可以通过WXSS设置height来完成。
(2)请勿在scroll-view组件中使用textarea,map,canvas,video组件。
(3)scroll-into-view属性的优先级高于scroll-top。
(4)由于在使用scroll-view组件时会阻止页面回弹,所以在scroll-view组件滚动时无法触发onPullDownRefresh。
(5)如果要实现页面下拉刷新,请使用页面的滚动,而不是设置scroll-view组件。这样做,能通过单击顶部状态栏回到页面顶部。
swiper
swiper组件可以实现轮播图,图片预览,滑动页面等效果。一个完整的swiper组件由<swiper/><swiper-item/>两个标签完成,它们不能单独使用。<swiper/>中只能放置一个或多个<swiper-item/>,若放置其他组件则会被删除;<swiper-item/>内部可以放置任何组件,默认宽高自动设置为100%。swiper组件的属性如图:
<swiper-item/>组件为滑块组件,仅可以被放置在<swiper/>组件中,宽高尺寸默认按 100%显示。
基础内容组件
基础内容组件包括icon,text和progress,主要用于在视图页面中展示图标,文本和进度条等信息。
icon
icon组件即图标组件,通常用于表示一种状态,如success,info,warn,waiting,cancel等。其属性如图:
text
text组件用于展示内容,类似HTML中的<span>,text组件中的内容支持长按选中,支持转义字符"\",属于行内元素。text组件的属性如图:
progress
progress组件用于显示进度条,如资源加载,用户资料完成度,媒体播放进度等。progress组件属于块级元素,其属性如图:
表单组件
表单组件的主要功能是收集用户信息,并将这些信息传递给后台服务器,实现小程序与用户之间的沟通。表单组件不仅可以放置在<form/>标签中使用,还可以作为单独组件和其他组件混合使用。
button
button组件用来实现用户和应用之间的交互,同时按钮的颜色起引导作用。一般来说,在一个程序中一个按钮至少有3中状态:默认点击,建议点击,谨慎点击。在构建项目时,应在合适的场景使用合适的按钮,当<button>被<form/>包裹时,可以通过设置form-type属性来触发表单对应的事件。button组件的属性如图:
radio
单选框用来从一组选项中选取一个选项.在小程序中,单选框由<radio-group/>和<radio/>两个组件组合而成,一个包含多个<radio/> 的<radio-group/>表示一组单选项,在同一组单选项中<radio/>是互斥的,当一个按钮被选中后,之前选中的按钮就变成非选.它们的属性如图:
checkbox
复选框用于从一组选项中选取多个选项,小程序中复选框由<checkbox-group/> 和<checkbox/>两个组件组合而成.一个<checkbox-group/>表示一组选项,可以在一组选项中选中多个选项.它们的属性如图:
switch
switch组件的作用类似开关选择器,其属性如图:
slider
slider组件为滑动选择器,可以通过滑动来设置相应的值,其属性如下图:
picker
picker组件为滚动选择器,当用户点击picker组件时,系统从底部弹出选择器供用户选择。picker组件目前支持5种选择器,分别是:selector(普通选择器)、multiSelector(多列选择器)、time(时间选择器)、date(日期选择器)、region(省市选择器)。
普通选择器
普通选择器(mode=selector)的属性如下图:
多列选择器
多列选择器(mode=multiSelector)允许用户从不同列中选择不同的选择项,其选项是二维数组或数组对象。多列选择器的属性如下图:
时间选择器 日期选择器
时间选择器(mode=time)可以用于从提供的时间选项中选择相应的时间,其属性如下图:
省市选择器
省市选择器(mode=region)是小程序的新版本提供的选择快速地区的组件,其属性如下图:
picker-view
picker-view组件为嵌入页面的滚动选择器。相对于picker组件,picker-view组件的列的个数和列的内容由用户通过<picker-view-column/ >自定义设置。picker -view组件的属性如下图:
input
input组件为输入框,用户可以输入相应的信息,其属性如下图:
textarea
textarea组件为多行输入框文件,可以实现多行内容的输入。textarea组件的属性如下图:
label
label组件为标签组件,用于提升表单组件的可用性。label组件支持使用for属性找到对应的id,或者将控件放在该标签下,当点击label组件时,就会触发对应的控件。for属性的优先级高于内部控件,内部有多个控件的时候默认触发第一个控件。目前,label组件可以绑定的控件有<button/ >、<checkbox/ >、<radio/>、<switch/ >。
form
form组件为表单组件,用来实现将组件内的用户输入信息进行提交。当<form/ >表单中formType为submit的<button/ >组件时,会将表单组件中的value值进行提交。form组件的属性如下图:
多媒体组件
多媒体组件包括image(图像)、audio(音频)、video(视频)、camera(相机)组件,使用这些组件,可以让页面更具有吸引力。
image
image组件为图像组件,与HTML中的 <img/ >类似,系统默认image组件的宽度为300 px、高度为2250 px, image组件的属性如下图:
image组件中的mode属性有13种模式,其中缩放模式有4种,裁剪模式有9种。
缩放模式
1. scaleToFill不保持纵横比缩放图片,使图片的宽高完全拉伸至填满image元素。
2. aspectFit保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以将图片完整地显示出来。
3. aspectFill保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,在另一个方向将会发生截取。
4. widthFix宽度不变,高度自动变化,保持原图宽高比不变。
裁剪模式
1. top 不缩放图片,只显示图片的顶部区域。
2. bottom 不缩放图片,只显示图片的底部区域。
3. center 不缩放图片,只显示图片的中间区域。
4. left 不缩放图片,只显示图片的左边区域。
5. right 不缩放图片,只显示图片的右边区域。
6. top_left 不缩放图片,只显示图片的左上边区域。
7. top_right 不缩放图片,只显示图片的右上边区域。
8. bottom_left 不缩放图片,只显示图片的左下边区域。
9. bottom_right 不缩放图片,只显示图片的右下边区域。
audio
audio组件用来实现音乐播放、暂停等,其属性如下图:
video
video组件用来实现视频的播放、暂停等。视频的默认宽度为300飘向,高度为225px,video组件的属性如下图:
camera
camera组件为系统相机组件,可以实现拍照或录像功能。在一个页面中,只能有一个camera 组件。在开发工具中运行时,使用电脑摄像头实现拍照或录像;在手机中运行时,使用手机前后摄像头实现拍照或录像。camera组件的属性如下图:
其他组件
在小程序中,除了前面介绍的组件以来,map组件和canvas组件比较常用.
map
map组件用于在页面中显示地图或路径,常用于LBS(基于位置服务)或路径指引,功能相对百度地图、高德地图较简单,目前具备绘制图标、路线、半径等能力,不能在croll-view、swiper、picker-view、movable-view组件中使用。
map组件的属性如下图:
map组件的markers属性用于在地图上显示标记的位置,其相关属性如下图:
map组件的 polyline属性用来指定一系列坐标点,从数组第一项连线到最后一项,形成一条路线,可以指定线的颜色、宽度、线型以及是否带箭头等,其相关属性如下图:
canvas
canvas组件用来绘制图形,相当于一块无色透明的普通图布。canvas组件本身并没有绘图能力,仅仅是图形容器,通过绘图API实现绘图功能。在默认情况下,canvas组件的默认宽度为300px,高度为225px,同一页面中的canvas-id不能重复,否则会出错。canvas组件的属性如下图:
第五章
即速应用的优势
即速应用是深圳市咫尺网络科技开发有限公司开发的一款同时兼具微信小程序和支付宝小程序快速开发能力的工具,用户只需简单拖拽可视化组件,就可以实现在线小程序开发。
1 开发流程简单,零门槛制作
使用即速应用来开发微信小程序的过程非常简单,无须储备相关代码知识,没有开发经验的人也可以轻松上手。
2 行业模板多样,种类齐全
即速应用为广大开发者提供了非常齐全的行业解决方案。
3 丰富的功能组件和强大的管理后台
即速应用的功能组件和管理后台非常实用,可以根据实际情况解决商家的不同需求。
即速应用界面介绍
即速应用的主界面主要分为4个区域,分别为菜单栏、工具栏、编辑区和属性面板。
1 菜单栏
菜单栏中的"风格"选项用于设置小程序页面的风格颜色,"管理"选项用于进入后台管理页面,"帮助"选项用于提示帮助功能,"客服"选项用于进入客服界面,"历史"选项用来恢复前项操作,"预览"选项用在 PC 端预览制作效果,"保存"选项用于保存已制作的内容,"生成"选项用于实现小程序打包上线设置。
2 工具栏
工具栏包括"页面管理""组件库"2个选项卡,"页面管理"实现添加页面和添加分组以及对某一页面进行改名、收藏、复除操作。"组件库"有9个基础组件、7个布局组件、18个高级组件和2个其他组件.
3 编辑区
编辑区是用来制作小程序页面的主要区域,通过拖拽组件实现页面制作,右边的"前进""后退"选项可以进行恢复操作,"模板"选项可以用来选择模板,"元素"选项可以用来显示页面中的组件及其层次关系,"数据"选项可以用来进行页面数据管理,"模块"选项可以用来选择模块。
4 属性面板
属性面板用来设置选定组件的属性及样式,包括"组件"和"组件样式"两个选项卡。"组件"选项卡用来设置组件内容及点击事件;"组件样式"选项卡用来设置组件的样式,不同组件有不同的样式需要设置。
即速应用组件
即速应用提供了大量的组件供用户快速布局页面,包括7个布局组件、9个基本组件18个高级组件和2个其他组件。
布局组件
布局组件用于设计页面布局,主要包括双栏、面板、自由面板、顶部导航、底部导航、分割线和动态分类 。
1 双栏组件
双栏组件用来布局整体,它可以把一个区块分为两部分,操作时显示一个分隔的标志,便于操作,预览时则不会出现。双栏组件默认设置每个栏占50%总宽,也可以按实际需要调整比例。双栏里面可以添加基本的组件,从而达到整体的布局效果。双栏还可以嵌套双栏,即可以在其中的一个栏里嵌入一个双栏,从而将整体分成3部分(若需要将整体分成4部分,就再嵌套一个双栏,依次类推)。
2 面板组件
面板组件相当于一个大画板,用户可以将很多基本(甚至高级)的组件(如文本组件、图片组件、按钮组件、标题组件、分类组件、音频组件、双栏组件、计数组件等)放进面板组件里一起管理。
3 自由面板组件
自由面板组件是指放置在该面板内的组件可以自由拖动,调节组件大小。用户既可以向自由面板内拖入部分组件(包括文本组件、图片组件和按钮组件),也可以拖入任意相关容器组件,用于不规则布局。
4 顶部导航组件
顶部导航组件固定于页面顶部,用于编辑顶部的导航。常用的手机应用在顶部有一条导航,上面写有手机应用 App 的名称或 logo ,以及返回键等。
5 底部导航组件
底部导航组件固定于页面底部,用于编辑底部的导航。通过底部导航组件可以添加标签、删除标签,同时可以分别设置每个标签的名称、原始图片、点击图片及链接至某一页面;通过组件面板可以进行组件背景色、图片及文字的设置。
6 分割线组件
分割线组件被放置于任意组件之间,用于实现分割。
7 动态分类组件
动态分类组件仅适用于电商、到店类小程序。用户通过选择动态分类组件的样式,可以实现顶部分类、侧边栏分类来展示应用数据、商品数据等。动态分类的二级有图模式只适用于电商类小程序
基本组件
基本组件是小程序页面常用的组件,包括文本、图片、按钮、标题、轮播、分类、图片列表、图文集和视频 。
1 文本组件
文本组件用于展示文字、设置点击事件,是小程序页面中最常用的组件。
2 图片组件
图片组件用于在页面中展示图片 。
3 按钮组件
按钮组件用于在页面中设置按钮。
4 标题组件
标题组件用于在页面中设置标题。
5 轮播组件
轮播组件用于实现图片的轮播展示。
6 分类组件
分类组件可以设置不同内容展示在不同类别中,还可以添加、删除分类的个数及进行相应的设置。
7 图片列表组件
图片列表组件可以将图片以列表的形式展示,还可以设置图片的名称、标题和点击件。
8 图文集组件
图文集组件用于展示图片、标题和简介。
9 视频组件
视频组件用于展示视频 。视频组件提供网页应用、小程序和云服务3种视频来源。网页应用使用视频通用代码来确定视频来源。
高级组件
高级组件通常需要后台数据,通过设置后台数据来实现数据后台化,让小程序的数据随时更新,及时修改 。
1 动态列表组件
动态列表组件是容纳基础组件来展示后台数据的容器,通过添加基础组件来展示对应的后台数据。
2 个人中心组件
个人中心组件显示个人相关信息的组件,包括图像、昵称、我的订单、收货地址、购物车等 。
3 动态表单组件
动态表单组件相当于 HTML 中的< form >标签,是一个容器组件,可以添加子表单组件和基本组件,用来收集用户提交的相关信息给后台数据对象。
4 评论组件
评论组件提供信息发布或回复信息的组件。
5 计数组件
计数组件可以用于点赞、统计浏览量等类似的计数功能。
6 地图组件
地图组件用于显示指定地址的地图,常用于实现定位及导航功能。
7 城市定位组件
城市定位组件通常与列表类组件搭配使用,常见搭配有动态列表和商品列表。例如,城市定位组件与商品列表搭配,可以实现通过城市定位来搜索出某具体位置信息下的商品列表。
8 悬浮窗组件
悬浮窗组件的固定搭配有:客服、我的订单、购物车、回到顶部。悬浮窗组件通常出在个人中心或商品列表页面 。
其他组件
其他组件包括音频组件和动态容器组件 。
1 音频组件
音频组件用于播放音乐(每个页面有一个音频组件即可),手动点击播放按钮后即可实现播放。音频文件可以选择音频库中的音乐,也可以上传本地音频进行更换 。
2 动态容器组件
动态容器组件用于动态页面,即所在页面绑定了数据对象。动态容器组件中可以添加多种组件﹣﹣文本组件、图片组件、按钮组件、标题组件、分类组件、音频组件、双栏组件、计数组件。其中,文本组件和图片组件可以绑定相应的数据对象字段(填充相应动态数据),若有计数组件,则会自动与动态容器关联。
即速应用后台管理
即速应用后台提供了非常强大的后台管理,开发者在后台进行修改操作就可以让数据即时更新,开发者还可以通过后台来查看小程序数据管理、用户管理、商品管理、营销工具、多商家管理等能。
1 数据管理
数据管理包括数据总览、访客分析和传播数据功能。
数据总览提供小程序总浏览量、昨日/今日访问量、总用户量、总订单数及浏览量曲线图 。
访客分析是以图例的形式来展示用户从微信的哪个模块来访问及访问的次数、比例、用户来源地区、用户访问时间及使用设备等,便于管理者更好地做好营销工作 。
传播数据主要是用于提供新老访客的比例,以及访客使用哪些主要平台打开应用的次数及占比。
2 分享设置
分享设置主要提供可以分享应用的方式 。
3 用户管理
用户管理主要用于实现对用户进行添加、分组、群发消息、储值金充值、赠送会员卡等功能 。
4 应用数据
应用数据是后台管理的主要内容,前端组件(动态列表、动态表单)的数据都是通过在应用数据中的数据对象来管理的,类似通过数据库存放和管理数据。
5 轮播管理
轮播管理是前端软播组件的后台数据管理器,通过软播管理来设置前端软播组件展示的图片内容。
6 分类管理
类管理适用于电商、到店、应用数据。分类管理可以通过选择动态分类组件样式来实现在顶部分类或侧边栏分类以展示应用数据、商品数据等效果。动态分类的二级有图模式只适用于电商。
7 商品管理
商品管理是后台管理的主要内容,前端商品列表组件的数据来源于后台商品管理。商品管理可以管理商品列表、积分商品、位置管理、支付方式、订单管理、拼团订单管理、订单统计、账单明细、运费管理和评价管理功能。
8 经营管理
经营管理主要包括子账号管理、手机端客户关系管理和短信接收管理,便于管理者管理小程序的运营。
9 营销工具
营销工具是小程序营销推广的有力工具,主要有会员卡、优惠券、积分、储值、推广、秒杀、集集乐、拼团活动、大转盘、砸金蛋、刮刮乐等。这些营销工具都需要事前在后台合理设置后,才能在活动中发挥更大的作用。
10 多商家管理
多商家管理是即速应用为有众多商家的商城(如"华东商城""义乌商城"等)开设的管理功能,方便管理者统计每家店铺的订单及进行收益分析。
打包上传
即速应用可以将小程序的代码打包,该代码包可以通过微信开发者工具来对接微信小程序.
打包
如图:
上传
打开微信web开发者工具,新建项目,并填写相关内容.
打开微信小程序代码,编译无误后,填写该项目的版本号,上传代码.
上传成功后,打开微信公众平台的"开发管理"界面,就可以看到该小程序的版本信息.
待审核通过后,即可在"微信" "发现" "小程序" 中搜索到该小程序.
第六章
网络API
微信小程序处理的数据通常从后台服务器获取,再将处理过的结果保存到后台服务器,文就要求微信小程序要有与后台进行交互的能力。微信原生 API 接口或第三方 API 提供了各类接口实现前后端交互。
网络 API 可以帮助开发者实现网络 URL 访问调用、文件的上传和下载、网络套接字的使用等功能处理。微信开发团队提供了10个网络 API 接口。
wx . request ( Object )接口用于发起 HTTPS 请求。
wx . uploadFile ( Object )接口用于将本地资源上传到后台服务器。
wx . downloadFile ( Object )接口用于下载文件资源到本地。
wx . connectSocket ( Object )接口用于创建一个 WebSocket 连接。
wx . sendSocketMessage ( Object )接口用于实现通过 WebSocket 连接发送数据。
wx . closeSocket ( Object )接口用于关闭 WebSocket 连接。
wx . onSocketOpen ( CallBack )接口用于监听 WebSocket 连接打开事件。■ wx . onSocketError ( CallBack )接口用于监听 WebSocket 错误。
wx . onSocketMessage ( CallBack )接口用于实现监听 WebSocket 接收到服务器的消息
wx . onSocketClose ( CallBack )接口用于实现监听 WebSocket 关闭。
发起网络请求
wx. request(Object)实现向服务器发送请求、获取数据等各种网络交互操作,其相关参数如表所示。一个微信小程序同时只能有5个网络请求连接,并且是HTTPS请求:
上传文件
wx.uploadFile(Object)接口用于将本地资源上传到开发者服务器,并在客户端发起一个HTTPS POST请求,其属性值如下表所示:
下载文件
wx. downloadFile(Object)接口用于实现从开发者服务器下载文件资源到本地,在客户端直接发起一个HTTPGET请求,返回文件的本地临时路径。其相关属性如下表所示:多媒体API
多媒体API主要包括图片API、录音API、音频播放控制API、音乐播放控制API等,其目的是丰富小程序的页面功能。
图片API
图片API实现对相机拍照图片或本地相册图片进行处理,主要包括以下4个API接口:
wx.chooseImage(Object)接口用于从本地相册选择图片或使用相机拍照。
wx.previewImage(Object)接口 用于预览图片。
wx.getImageInfo(Object)接口用于获取图片信息。
wx.saveImageToPhotosAlbum(Object)接口 用于保存图片到系统相册。
选择图片或拍照
wx. chooseImage(Object)接口用于从本地相册选择图片或使用相机拍照。拍照时产生的临时路径在小程序本次启动期间可以正常使用,若要持久保存,则需要调用wx. saveFile保存图片到本地。其属性值如下表所示:
若调用成功,则返回tempFilePaths和tempFiles,tempFilePaths表示图片在本地临时文件路径列表。tempFiles表示图片的本地文件列表,包括path和size。
预览图片
wx. previewImage(Object)接口主要用于预览图片,其相关属性如下表所示:
获取图片信息
wx. getImageInfo(Object)接口用于获取图片信息,其相关属性值如下表所示:
保存图片到系统相册
wx. saveImageToPhotosAlbum(Object)接口用于保存图片到系统相册,需要得到用户授权scope.writePhotosAlbum。其相关属性如下表所示:
录音API
录音API提供了语言控制的功能,主要包括以下两个API接口:
wx.startRecord(Object)接口用于实现开始录音。
wx.stopRecord(Object)接口用于实现主动调用停止录音。
开始录音
wx. startRecord(Object)接口用于实现开始录音。当主动调用wx.stopRecord(Object)接口或者录音超过1分钟时,系统自动结束录音,并返回录音文件的临时文件路径。若要持久保存,则需要调用wx. saveFile()接口。其相关参数如下表所示:
停止录音
wx.stopRecord(Object)接口用于实现主动调用停止录音。
音频播放API
音频播放控制API主要用于对语音媒体文件的控制,包括播放、暂停、停止及audio组件的控制,主要包括以下3个API:
wx.playVoice(Object)接口 用于实现开始播放语音。
wx.pauseVoice(Object)接口用于实现暂停正在播放的语音。
wx.stopVoice(Object)接口 用于结束播放语音。
播放语音
wx. playVoice(Object)接口用于开始播放语音,同时只允许一个语音文件播放,如果前一个语音文件还未播放完,则中断前一个语音文件的播放。其相关参数如下表所示:
暂停播放
wx.pauseVoice(Object)用于暂停正在播放的语音。再次调用wx.playVoice(Object)播放同一文件时,会从暂停处开始播放。如果想从头开始播放,则需要先调用wx.stopVoice(Object).
结束播放
wx.stopVoice(Object)用于结束播放语音。
音乐播放控制API
音乐播放控制API主要用于实现对背景音乐的控制,音乐文件只能是网络流媒体,不能是本地音乐文件。音乐播放控制API主要包括以下8个API:
wx.playBackgroundAudio(Object)接口 用于播放音乐。
wx.getBackgroundAudioPlayerState(Object)接口 用于获取音乐播放状态。
wx.seekBackgroundAudio(Object)接口 用于定位音乐播放进度。
wx.pauseBackgroundAudio()接口 用于实现暂停播放音乐。
wx.stopBackgroundAudio()接口 用于实现停止播放音乐。
wx.onBackgroundAudioPlay(CallBack)接口 用于实现监听音乐播放。
wx.onBackgroundAudioPause(CallBack)接口 用于实现监听音乐暂停。
播放音乐
wx. playBackgroundAudio(Object)用于播放音乐,同一时间只能有一首音乐处于播放状态,其相关参数如下表所示:
暂停播放
wx.getBackgroundAudioPlayerState(Object)接口用于获取音乐播放状态,其相关参数如下表所示:
接口调用成功后返回的参数如下表所示:
控制音乐播放进度
wx. seekBackgroundAudio(Object)接口用于控制音乐播放进度,其相关参数如下表所示:
暂停播放音乐
wx. pauseBackgroundAudio()接口用于暂停播放音乐。
停止播放音乐
wx. stopBackgroundAudio()接口用于停止播放音乐。
监听音乐播放
wx. onBackgroundAudioPlay(CallBack)接口用于实现监听音乐播放,通常被wx. playBack-groundAudio(Object)方法触发,在CallBack中可改变播放图标。
监听音乐暂停
wx. onBackgroundAudioPause(CallBack)接口用于实现监听音乐暂停,通常被wx. pause-BackgroundAudio()方法触发。在CallBack中可以改变播放图标。
监听音乐停止
wx. onBackgroundAudioStop(CallBack)接口用于实现监听音乐停止,通常被音乐自然播放停止或wx.seekBackgroundAudio(Object)方法导致播放位置等于音乐总时长时触发。在CallBack中可以改变播放图标。
文件API
从网络上下载或录音的文件都是临时保存的,若要持久保存,需要用到文件API。文件API提供了打开、保存、删除等操作本地文件的能力,主要包括以下5个API接口:
wx.saveFile(Object)接口 用于保存文件到本地。
wx.getSavedFileList(Object)接口 用于获取本地已保存的文件列表。
wx.getSaveFileInfo(Object)接口 用于获取本地文件的文件信息。
wx.removeSaveFile(Object)接口 用于删除本地存储的文件。
wx.openDocument(Object)接口 用于新开页面打开文档,支持格式:doc、xls、ppt、pdf、docx、xlsx、ppts。
保存文件
wx. saveFile(Object)用于保存文件到本地,其相关参数如下图所示:
获取本地文件列表
wx. getSavedFileList(Object)接口用于获取本地已保存的文件列表,如果调用成功,则返回文件的本地路径、文件大小和文件保存时的时间戳(从1970/01/01 08: 00: 00到当前时间的秒数)文件列表。其相关参数如下表所示:
获取本地文件的文件信息
wx. getSaveFileInfo(Object)接口用于获取本地文件的文件信息,此接口只能用于获取已保存到本地的文件,若需要获取临时文件信息,则使用wx. getFileInfo(Object)接口。其相关参数如下表所示:
删除本地文件
wx. removeSaveFile(Object)接口用于删除本地存储的文件,其相关参数如下表所示:
打开文档
wx. openDocument(Object)接口用于新开页面打开文档,支持格式有doc、xls、ppt、pdf、docx、xlsx、pptx,其相关参数如下表所示 :
本地数据及缓存API
小程序提供了以键值对的形式进行本地数据缓存功能,并且是永久存储的,但最大不超过10 MB ,其目的是提高加载速度。数据缓存的接口主要有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 后缀的为异步接口。
保存数据
wx.setStorage(Object)
wx.setStorage(Object)接口将数据存储到本地缓存接口指定的key中,接口执行后会覆盖原来key对应的内容.其参数如表所示:
wx.setStorageSync(key,data)
wx.setStorageSync(key,data)是同步接口,其参数只有key和data.
获取数据
wx.getStorage(Object)
wx.getStorage(Object)接口是从本地缓存中异步获取指定key对应的内容.
wx.getStorageSync(key)
wx.getStorageSync(key)从本地缓存中同步获取指定key对应的内容.其参数只有key.
删除数据
wx.removeStorage(Object)
wx.removeStorage(Object)接口用于从本地缓存中异步移除指定key。其相关参数如下表所示:
wx.removeStorageSync(key)
wx.removeStorageSync(key)接口用于从本地缓存中同步删除指定key对应的内容。 其参数只有key。
清空数据
wx.clearStorage()
wx.clearStorage() 接口用于异步清理本地数据缓存,没有参数.
wx.clearStorageSync()
wx.clearStorageSync() 接口用于同步清理本地数据缓存.
位置信息API
小程序可以通过位置信息 API 来获取或显示本地位置信息,小程序支持WGS84和GCj02标准,WGS84标准为地球坐标系,是国际上通用的坐标系;CCj02标准是中国国家测绘局制定的地理信息系统的坐标系统,是由WGS84坐标系经加密后的坐标系,又称为火星坐标系。默认为WGS84标准,若要查看位置需要使用GCj02标准。主要包括以下3个 API 接口:
wx . getLocation ( Object )接口用于获取位置信息。
wx . chooseLocation ( Object )接口用于选择位置信息。
wx . openLocation ( Object )接口用于通过地图显示位置。
获取位置信息
wx . getLocation ( Object )接口用于获取当前用户的地理位置、速度,需要用户开启定位功能,当用户离开小程序后,无法获取当前的地理位置及速度,当用户点击"显示在聊天顶部"时可以获取到定位信息,其相关参数如表所示:
wx.getLocation(Object)调用成功后,返回的参数如下表所示:
选择位置信息
wx.chooseLocation(Object)接口用于在打开的地图中选择位置,用户选择位置后可返回当前位置的名称、地址、经纬度信息。其相关参数如下表所示:
wx.chooseLocation(Object)调用成功后,返回的参数如下表所示 :
显示位置信息
wx.openLocation(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. getNetworkType(Object)用于获取网络类型,其相关参数如下表所示:
如果wx. getNetworkType()接口被成功调用,则返回网络类型包,有wifi、2G、3G、4G、unknown(Android下不常见的网络类型)、none(无网络)。
监听网络状态变化
wx. onNetworkStatusChange(CallBack)接口用于监听网络状态变化,当网络状态变化时,返回当前网络状态类型及是否有网络连接。
拨打电话
wx. makePhoneCall(Object)接口用于实现调用手机拨打电话,其相关参数如下表所示:
扫描二维码
wx. scanCode(Object)接口用于调起客户端扫码界面,扫码成功后返回相应的内容,其相关参数如下表所示: 扫码成功后,返回的数据如下图所示: