【微信小程序】系统API相关

官方文档:

https://developers.weixin.qq.com/miniprogram/dev/api/

网络请求

微信提供了专属的API接口,用于网络请求: wx.request({})

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//无参数GET
wx.request({
url: "https://luojing.top/....",
success(res){
console.log(res)
}
})
//有参数GET
wx.request({
url: "https://luojing.top/...",
data: {
query: "rocyuan"
},
success(res){
console.log(res)
}
})
//POST请求
wx.request({
url: "https://luojing.top/...",
method: "post",
data: {
name: "rocyuan",
age: 18,
height: 2.00
}
})

网络请求封装

通过promise封装wx.request()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// network.js(也可对baseURL,timeout进行统一管理封装,这里不演示了):
export function request(option){
return new Promise((resolve, reject) => {
wx.request({
url: option.url,
timeout: option.timeout || 5000,
method: option.method || "get",
data: option.data || {},
success(res){
resolve(res)
},
fail(err){
reject(err)
}
})
})
}

// 应用:
// page.js
import { request } from "network"

request({
url: "https://luojing.top/..."
}).then(res => {
console.log(res)
}).catch(err => {
console.log(err)
})

弹窗展示

小程序中展示弹窗有四种方式: showToast、showModal、showLoading、showActionSheet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
wxml:
<button size="mini" bindtap="onToastClick">showToast</button>
<button size="mini" bindtap="onModalClick">showModal</button>
<button size="mini" bindtap="onLoadingClick">showLoading</button>
<button size="mini" bindtap="onActionSheetClick">showActionSheet</button>

js:
//Toast弹窗
onToastClick(){
wx.showToast({
title: "hello",
duratioin: 3000,
icon: "loading",
mask: true,
success(){
console.log("展示成功")
},
fail(){
console.log("展示失败")
},
complete(){
console.log("展示完成")
}
})
}
//弹窗带内容及交互
onModalClic(){
wx.showModal({
title: "标题",
content: "内容",
showCancel: true, //是否显示取消按钮
cancelText: "返回",
cancelColor: "#f00",
success(res){
if(res.confirm){
console.log("点击了确定")
}
if(res.cancel){
console.log("点击了取消")
}
}
})
}
//加载中动画,需要手动隐藏(多用于加载中 loading...)
onLoadingClick(){
wx.showLoading({
title: "标题",
mask: true,
})
settimeout(_ => {
wx.hideLoading()
},3000)
}
//显示操作菜单
onActionSheelClick(){
wx.showActionSheel({
itemList: ["相册", "拍照"],
itemColor: "#f00",
success(res){
console.log(res)
}
})
}

页面分享

分享是小程序扩散的一种重要方式,小程序中有两种分享方式:

  • 点击右上角的菜单按钮,之后点击转发
  • 点击某一个按钮,直接转发

当我们转发给好友一个小程序时,通常小程序中会显示一些信息; 通过 onShareAppMessage 设置展示信息

1
2
3
4
5
6
7
8
9
10
11
page.wxml:
<button size='mini' open-type='share'>分享</button>

page.js
onShareAppMessage(option){
return {
title: "分享标题",
path: "/pages/index/index",
imageUrl: "分享图片的路径"
}
}

小程序的登录流程

  • 调用wx.login获取code
  • 调用wx.request发送code到我们自己的服务器(我 们自己的服务器会返回一个登录态的标识,比如 token)
  • 将登录态的标识token进行存储,以便下次使用
  • 请求需要登录态标识的接口时,携带token

界面转跳(路由)

界面的跳转有两种方式:**通过navigator组件 **和 通过wx的API跳转

navigators设置文档:

https://developers.weixin.qq.com/miniprogram/dev/component/navigator.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!-- 1.navigator页面跳转 -->
<navigator url='/pages/detail/detail'>跳到详情页</navigator>

<!-- 2.navigator属性: open-type, 每一个open-type都有对应的API -->
<navigator url='/pages/detail/detail'
open-type='redirect'>
跳到详情页(redirect)
</navigator>

<!-- 3.跳转过程中数据的传递 -->
// 3.1 首页跳转到详情页携带数据:
首页:
<navigator url='/pages/detail/detail?name=why&age=18&height=1.88'>跳到详情页</navigator>
详情页js:
onLoad: function (options) {
console.log(options)//potions中传过来的数据
},

// 3.2详情页返回首页携带数据(通过修改首页数据,从而达到效果)
首页js:
data: {
title: "首页"
}
详情页js:
onUnload: function (){
// 1.获取首页的页面对象
// getCurrentPages当前所有活跃(栈中)的页面
const pages = getCurrentPages()
home home = pages[pages.length-2];
home.setData({
title: "返回的首页"
})
}

wx的路由API

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!-- 4.通过代码进行页面跳转 返回 -->
<button size='mini' bind:tap="handlePushDetail">跳到详情页</button>
<button size='mini' bind:tap="handleBackDetail">跳到详情页</button>

//转跳
handlePushDetail(){
wx.navigateTo({
url: "https://luojing.top/detail?id=123456&type=news"
})
}
//返回
handleBackDetai(){
wx.navigateBack({
delta: 1 //返回的层级
})
}