作者:重庆互联网小徐 发布时间: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 命名与小程序保持兼容。
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 等浏览器专用对象。
除了 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
。
Promise 化
具体 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) })复制代码
不进行 Promise 化
的 API:
同步的方法(即以 sync 结束)。例如:uni.getSystemInfoSync()
以 create 开头的方法。例如:uni.createMapContext()
以 manager 结束的方法。例如:uni.getBackgroundAudioManager()
Promise 化
Vue 2 和 Vue 3 项目中
API Promise 化
返回格式不一致,以下为不同点
和返回格式互相转换
不同点
Vue2 对部分 API 进行了 Promise 封装,返回数据的第一个参数是错误对象,第二个参数是返回数据。此时使用 catch
是拿不到报错信息的,因为内部对错误进行了拦截。
Vue3 对部分 API 进行了 Promise 封装,调用成功会进入 then 方法
回调。调用失败会进入 catch 方法
回调
使用示例:
返回格式互相转换
API | 说明 |
---|---|
日志打印 | 向控制台打印日志信息 |
定时器 | 在定时到期以后执行注册的回调函数 |
uni.base64ToArrayBuffer | 将 Base64 字符串转成 ArrayBuffer 对象 |
uni.arrayBufferToBase64 | 将 ArrayBuffer 对象转成 Base64 字符串 |
应用级事件 | 监听应用事件 |
拦截器 | 拦截 Api 等调用并执行回调 |
全局 API | 可全局调用 Api |
API | 说明 |
---|---|
uni.request | 发起网络请求 |
API | 说明 |
---|---|
uni.uploadFile | 上传文件 |
uni.downloadFile | 下载文件 |
API | 说明 |
---|---|
uni.connectSocket | 创建 WebSocket 连接 |
uni.onSocketOpen | 监听 WebSocket 打开 |
uni.onSocketError | 监听 WebSocket 错误 |
uni.sendSocketMessage | 发送 WebSocket 消息 |
uni.onSocketMessage | 接受 WebSocket 消息 |
uni.closeSocket | 关闭 WebSocket 连接 |
uni.onSocketClose | 监听 WebSocket 关闭 |
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 | 打开文件 |
欢迎广大用户为此页面进行评价,评价成功将获得积分奖励!