小程序云开发(十六):小程序API实战

发布于:2024-05-01 ⋅ 阅读:(31) ⋅ 点赞:(0)

🔗 运行环境:小程序云开发

🚩 撰写作者:左手の明天

🥇 精选专栏:《python》

🔥  推荐专栏:《算法研究》

🔐#### 防伪水印——左手の明天 ####🔐

💗 大家好🤗🤗🤗,我是左手の明天!好久不见💗

💗今天更新小程序云开发💗

📆  最近更新:2024 年 04 月 26 日,左手の明天的第 327 篇原创博客

📚 更新于专栏:小程序开发

🔐#### 防伪水印——左手の明天 ####🔐


要使用JavaScript来实现小程序的具体的功能,除了要了解如何操作由不同的数据类型构成的实际数据以外,还需要掌握如何使用JavaScript适时的调用小程序封装好的API。编程语言的逻辑、数据以及API是小程序应用开发最核心的组成部分。

1 全局对象wx

wx是小程序的全局对象,用于承载小程序能力相关API。小程序开发框架提供丰富的微信原生 API,可以方便的调起微信提供的能力,如获取用户信息,了解网络状态等。大家可以在微信开发者工具的控制台Console里了解一下这个wx这个对象。

可以看到wx的所有属性和方法,如果对wx的哪个属性和方法不了解,可以查阅API技术文档

2 控制台实战小程序API

开发者工具的console控制台除了可以用于运行测试JavaScript的代码外,还可以来运行测试小程序以及云开发的API。接下来我们会先来介绍一些能够实际看得到效果的接口,大家可以直接把代码输入到控制台查看效果,而每一个接口都在API技术文档里有介绍,建议实战与文档一起结合起来学习。

2.1、了解网络状态

wx.getNetworkType()接口可以用于获取小程序所在的手机当前的网络状态是WiFi、3G、4G、5G?这样的场景经常会有,比如播放视频音乐或玩一些游戏以及流量大图片时,如果网络处于非WiFi状态时就会有流量注意的提醒。

大家可以切换一下开发者工具的模拟器的网络,然后多次在控制台console输入以下代码查看有什么不同:

wx.getNetworkType({
  success(res) {
    console.log(res)
  }
});
2.2、 获取设备信息

wx.getSystemInfo()可以用于获取用户手机的微信版本、操作系统及版本、屏幕分辨率、设备的型号与品牌、基础库版本等信息。

大家可以留意打印的res对象与使用res的点表示法访问具体属性有什么区别。接口返回的具体属性的含义则需要我们查阅技术文档来大致了解。

wx.getSystemInfo({
  success (res) {
    console.log("设备的所有信息",res)
    console.log(res.model)
    console.log(res.pixelRatio)
    console.log(res.windowWidth)
    console.log(res.windowHeight)
    console.log(res.language)
    console.log(res.version)
    console.log(res.platform)
  }
})

2.3、页面链接跳转

除了可以获取到用户、设备、网络等的信息,使用控制台来调用对象的方法也可以执行一些动作,比如页面跳转wx.navigateTo()的接口。前面我们在home页面的下面建了一个imgshow的二级页面,我们在控制台Console里输入:

wx.navigateTo({
  url: '/pages/home/imgshow/imgshow'
})

还可以在控制台直接调用wx.navigateBack()返回页面的上一层,在控制台里输入

wx.navigateBack({
  delta: 1
})

2.4、显示消息提示框

wx.showToast()接口可以来显示消息提示框,比如操作成功、操作失败等都需要给用户一个反馈,这个时候就需要调用这个接口,我们在console控制台打印一下,看看模拟器小程序的效果:

wx.showToast({
  title: '弹出成功',
  icon: 'success',
  duration: 1000
})

2.5、设置当前页面的标题

wx.setNavigationBarTitle()可以用来设置当前页面的标题。在我们实际生活中,会经常看到资讯、商品、博客有无数个新闻、商品、文章,打开不同的页面都会显示对应的标题,这个当然不会像静态页面一样写死,而都是用JavaScript来控制的,而小程序就会调用这个接口。

wx.setNavigationBarTitle({
  title: '控制台更新的标题'
})

2.6、打开文件选择器上传文件

调用wx.chooseImage()打开图片上传选择器,其实就已经可以将电脑上面的图片上传到小程序端,只是由于一个接口只干一件事情,上传的图片路径需要我们用其他函数来处理才行。

wx.chooseImage({
  count: 1,
  sizeType: ['original', 'compressed'],
  sourceType: ['album', 'camera'],
  success (res) {
    const tempFilePaths = res.tempFilePaths
  }
})

2.7、控制台实战云开发API

在前面我们已经说过wx是小程序的全局对象,而在这个对象里的cloud属性也是一个对象,这个是用于承载云开发在小程序端的相关能力的API,我们仍然可以通过console控制台了解相关信息。

我们可以在控制台依次打印如下内容,至于具体的含义,大家可以通过以后章节的学习来了解:

wx.cloud
wx.cloud.database()
wx.cloud.database().command
wx.cloud.database().command.aggregate

小程序的这些API有的是返回数据(如网络状态、设备信息、用户信息等),有的是在小程序上出现交互(消息提示框、模态框、操作菜单、标题的设置),还有的需要传入一些参数等等。这一部分主要是让大家明白控制台Console的强大之处,以及通过控制台实战的方法对小程序API的运行机制有一个初步的了解。

3 API的可用性判断与权限

3.1、API的可用性
wx.canIUse('console.log')
wx.canIUse('CameraContext.onCameraFrame')
wx.canIUse('CameraFrameListener.start')
wx.canIUse('Image.src')

// wx接口参数、回调或者返回值
wx.canIUse('openBluetoothAdapter')
wx.canIUse('getSystemInfoSync.return.safeArea.left')
wx.canIUse('getSystemInfo.success.screenWidth')
wx.canIUse('showToast.object.image')
wx.canIUse('onCompassChange.callback.direction')
wx.canIUse('request.object.method.GET')

// 组件的属性
wx.canIUse('live-player')
wx.canIUse('text.selectable')
wx.canIUse('button.open-type.contact')

2.2、提前发起权限设置

部分接口需要经过用户授权同意才能调用。我们把这些接口按使用范围分成多个scope ,用户选择对 scope 来进行授权,当授权给一个 scope 之后,其对应的所有接口都可以直接使用。

使用wx.authorize可以提前向用户发起授权请求,调用后会立刻弹窗询问用户是否同意授权小程序使用某项权限,如果用户之前已经同意授权,则不会出现弹窗,直接返回成功,这些权限有scope.userInfo是否允许获取用户信息,scope.record是否允许录音、scope.writePhotosAlbum是否允许保存到相册等等

wx.authorize({
  scope: 'scope.record',
  success () {
    // 用户已经同意小程序使用录音功能,后续调用 wx.startRecord 接口不会弹窗询问
    wx.startRecord()
  }
})

2.3、获取用户信息

wx.getUserInfo()接口可以用于获取微信用户的一些基本信息,比如头像、昵称、城市等等,常用与小程序的用户基础信息与社交场景。不过调用这个接口的前提是先要取得用户的授权,而且还不能通过wx.authorize({scope: "scope.userInfo"})的方式(因为不会弹出授权窗口),只能通过button的 open-type="getUserInfo",方法如下:

新建一个页面,比如user,然后再在user.wxml里输入以下代码,点击按钮之后就会弹出授权弹窗,如果已经授权了,就不会有弹窗了:

<button open-type="getUserInfo">弹出授权弹窗</button>

当授权完成之后然后我们可以在控制台console里输入以下代码,看得到什么信息,点击开发者工具菜单里的”清缓存“的”全部清除“之后再输入看看什么效果:

wx.getUserInfo({
  success(res) {
    console.log(res);
  }
});

上面仅仅只是列举了很少一部分的API,小程序的API有数千个之多,用法也都不相同,因此在学习的时候,要善于查询技术文档。这些API也都是零散的,技术文档也做了一定的分门别类,开发一个实际的应用,这些API也并不会全部用到。

其实API本质上是一个个封装好了的函数,一个对象,除了可以在控制台调用它们之外,还可以通过事件机制来触发,后面会介绍点击事件、页面的生命周期等方法。


网站公告

今日签到

点亮在社区的每一天
去签到