重庆互联网,19年企业互联网解决经验,专业网站开发、移动端开发、微信端开发、小程序开发!
重庆网络推广公司

微信小程序跨端开发之uniapp开发指南(10)-API概述

作者:重庆互联网小徐 发布时间:2022-12-30 浏览:32067 赞(3012 收藏 评论(0)

uni-app的 js API 由标准 ECMAScript 的 js API 和 uni 扩展 API 这两部分组成。

标准 ECMAScript 的 js 仅是最基础的 js。浏览器基于它扩展了 window、document、navigator 等对象。小程序也基于标准 js 扩展了各种 wx.xx、my.xx、swan.xx 的 API。node 也扩展了 fs 等模块。

uni-app 基于 ECMAScript 扩展了 uni 对象,并且 API 命名与小程序保持兼容。

#标准 js 和浏览器 js 的区别

uni-app的 js 代码,web端运行于浏览器中。非web端(包含小程序和 App),Android 平台运行在 v8 引擎中,iOS 平台运行在 iOS 自带的 jscore 引擎中,都没有运行在浏览器或 webview 里。

非web端,虽然不支持 window、document、navigator 等浏览器的 js API,但也支持标准 ECMAScript。

请注意不要把浏览器里的 js 等价于标准 js。

所以 uni-app 的web端,一样支持标准 js,支持 if、for 等语法,支持字符串、数字、时间、布尔值、数组、自定义对象等变量类型及各种处理方法。仅仅是不支持 window、document、navigator 等浏览器专用对象。

#各端特色 API 调用

除了 uni-app 框架内置的跨端 API,各端自己的特色 API 也可通过条件编译自由使用。

各端特色 API 规范参考各端的开发文档。其中 App 端的 JS API 参考html5plus.org;uni-app 也支持通过扩展原生插件来丰富 App 端的开发能力,具体参考插件开发文档

各平台的 API 新增,不需要 uni-app 升级,开发者就可以直接使用。

#说明

  • uni.on 开头的 API 是监听某个事件发生的 API 接口,接受一个 CALLBACK 函数作为参数。当该事件触发时,会调用 CALLBACK 函数。

  • 如未特殊约定,其他 API 接口都接受一个 OBJECT 作为参数。

  • OBJECT 中可以指定 success,fail,complete 来接收接口调用结果。

  • 平台差异说明若无特殊说明,则表示所有平台均支持。

  • 异步 API 会返回 errMsg 字段,同步 API 则不会。比如:getSystemInfoSync 在返回结果中不会有 errMsg

#API Promise 化

  1. 具体 API Promise 化 的策略:

    • 异步的方法,如果不传入 success、fail、complete 等 callback 参数,将以 Promise 返回数据。例如:uni.getImageInfo()

    • 异步的方法,且有返回对象,如果希望获取返回对象,必须至少传入一项 success、fail、complete 等 callback 参数。例如:

       // 正常使用
       const task = uni.connectSocket(
        success(res){
         console.log(res)
        }
       )
      
       // Promise 化
       uni.connectSocket().then(res => {
         // 此处即为正常使用时 success 回调的 res
         // uni.connectSocket() 正常使用时是会返回 task 对象的,如果想获取 task ,则不要使用 Promise 化
         console.log(res)
       })
      复制代码
  2. 不进行 Promise 化 的 API:

    • 同步的方法(即以 sync 结束)。例如:uni.getSystemInfoSync()

    • 以 create 开头的方法。例如:uni.createMapContext()

    • 以 manager 结束的方法。例如:uni.getBackgroundAudioManager()

#Vue 2 和 Vue 3 的 API Promise 化

Vue 2 和 Vue 3 项目中 API Promise 化 返回格式不一致,以下为 不同点 和 返回格式互相转换

  • 不同点

    • Vue2 对部分 API 进行了 Promise 封装,返回数据的第一个参数是错误对象,第二个参数是返回数据。此时使用 catch 是拿不到报错信息的,因为内部对错误进行了拦截。

    • Vue3 对部分 API 进行了 Promise 封装,调用成功会进入 then 方法 回调。调用失败会进入 catch 方法 回调

    使用示例:

    Vue2

    Vue 3

    // 默认方式uni.request({
      url: "https://www.example.com/request",
      success: (res) => {
        console.log(res.data);
      },
      fail: (err) => {
        console.error(err);
      },});// Promiseuni  .request({
        url: "https://www.example.com/request",
      })
      .then((data) => {
        // data为一个数组
        // 数组第一项为错误信息 即为 fail 回调
        // 第二项为返回数据
        var [err, res] = data;
        console.log(res.data);
      });// Awaitasync function request() {
      var [err, res] = await uni.request({
        url: "https://www.example.com/request",
      });
      console.log(res.data);}
    复制代码
  • 返回格式互相转换

Vue2

Vue3

// Vue 2 转 Vue 3, 在 main.js 中写入以下代码即可function isPromise(obj) {
  return (
    !!obj &&
    (typeof obj === "object" || typeof obj === "function") &&
    typeof obj.then === "function"
  );}uni.addInterceptor({
  returnValue(res) {
    if (!isPromise(res)) {
      return res;
    }
    return new Promise((resolve, reject) => {
      res.then((res) => {
        if (res[0]) {
          reject(res[0]);
        } else {
          resolve(res[1]);
        }
      });
    });
  },});
复制代码

#API 列表

#基础

#日志打印
API说明
日志打印向控制台打印日志信息
定时器在定时到期以后执行注册的回调函数
uni.base64ToArrayBuffer将 Base64 字符串转成 ArrayBuffer 对象
uni.arrayBufferToBase64将 ArrayBuffer 对象转成 Base64 字符串
应用级事件监听应用事件
拦截器拦截 Api 等调用并执行回调
全局 API可全局调用 Api

#网络

#发起请求
API说明
uni.request发起网络请求
#上传、下载
API说明
uni.uploadFile上传文件
uni.downloadFile下载文件
#WebSocket
API说明
uni.connectSocket创建 WebSocket 连接
uni.onSocketOpen监听 WebSocket 打开
uni.onSocketError监听 WebSocket 错误
uni.sendSocketMessage发送 WebSocket 消息
uni.onSocketMessage接受 WebSocket 消息
uni.closeSocket关闭 WebSocket 连接
uni.onSocketClose监听 WebSocket 关闭
#SocketTask
API说明
SocketTask.send通过 WebSocket 连接发送数据
SocketTask.close关闭 WebSocket 连接
SocketTask.onOpen监听 WebSocket 连接打开事件
SocketTask.onClose监听 WebSocket 连接关闭事件
SocketTask.onError监听 WebSocket 错误事件
SocketTask.onMessage监听 WebSocket 接受到服务器的消息事件

#媒体

#图片
API说明
uni.chooseImage从相册选择图片,或者拍照
uni.previewImage预览图片
uni.closePreviewImage关闭预览图片
uni.getImageInfo获取图片信息
uni.saveImageToPhotosAlbum保存图片到系统相册
#文件
API说明
uni.chooseFile从本地选择文件
#录音管理
API说明
uni.getRecorderManager录音管理
#背景音频播放管理
API说明
uni.getBackgroundAudioManager背景音频播放管理
#音频组件管理
API说明
uni.createInnerAudioContext音频组件管理
#视频
API说明
uni.chooseVideo从相册选择视频,或者拍摄
uni.chooseMedia拍摄或从手机相册中选择图片或视频。
uni.saveVideoToPhotosAlbum保存视频到系统相册
uni.createVideoContext视频组件管理
#相机组件管理
API说明
uni.createCameraContext相机组件管理
#直播组件管理
API说明
uni.createLivePlayerContext直播组件管理

#文件

API说明
uni.saveFile保存文件
uni.getSavedFileList获取已保存的文件列表
uni.getSavedFileInfo获取已保存的文件信息
uni.removeSavedFile删除已保存的文件信息
uni.getFileInfo获取文件信息
uni.openDocument打开文件

#数据缓存

网友留言评论
我要评论
评论

欢迎广大用户为此页面进行评价,评价成功将获得积分奖励!

  • 赞(0
    踩(0
重庆网站定制建设
  • 重庆网站建设平台
  • 重庆网站优化公司
  • 重庆网络推广公司哪家好
  • 重庆APP制作公司
版权所有 ©2004-2024 重庆市渝中区圣灵科技信息有限公司 渝ICP备16004600号-14 渝公网安备50010802001420号 电子营业执照
重庆公众号制作哪家好
二维码
联系客服 重庆商城网站建设