简体中文
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 升级,开发者就可以直接使用。
各平台 API 独有的字段,如快手小程序 ks.pay 的 payType、paymentChannel 字段,开发者在调用 API 时正常传入即可,会透传至快手小程序的 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:
uni.getSystemInfoSync()uni.createMapContext()uni.getBackgroundAudioManager()Promise 化Vue 2 和 Vue 3 项目中
API Promise 化返回格式不一致,以下为不同点和返回格式互相转换
不同点
catch 是拿不到报错信息的,因为内部对错误进行了拦截。then 方法 回调。调用失败会进入 catch 方法 回调使用示例:
Vue2
Vue 3
// 默认方式
uni.request({
url: "https://www.example.com/request",
success: (res) => {
console.log(res.data);
},
fail: (err) => {
console.error(err);
},
});
// Promise
uni
.request({
url: "https://www.example.com/request",
})
.then((data) => {
// data为一个数组
// 数组第一项为错误信息 即为 fail 回调
// 第二项为返回数据
var [err, res] = data;
console.log(res.data);
});
// Await
async 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) {
resolve(res);
return;
}
if (res[0]) {
reject(res[0]);
} else {
resolve(res[1]);
}
});
});
},
});
日志打印等。
| API | 说明 | ||||||
|---|---|---|---|---|---|---|---|
| 日志打印 | 向控制台打印日志信息 | ||||||
| 定时器 | 在定时到期以后执行注册的回调函数 | ||||||
| uni.base64ToArrayBuffer | 将 Base64 字符串转成 ArrayBuffer 对象 | ||||||
| uni.arrayBufferToBase64 | 将 ArrayBuffer 对象转成 Base64 字符串 | ||||||
| 启动 | - | ||||||
| |||||||
| 应用级事件 | 监听应用事件 | ||||||
| 拦截器 | 拦截 Api 等调用并执行回调 | ||||||
| 全局 API | 可全局调用 Api | ||||||
| canIUse | 判断应用的 API,回调,参数,组件等是否在当前版本可用 | ||||||
| API | 说明 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 发起请求 | - | ||||||||||||||||
| |||||||||||||||||
| 上传、下载 | - | ||||||||||||||||
| |||||||||||||||||
| WebSocket | - | ||||||||||||||||
| |||||||||||||||||
| SocketTask | - | ||||||||||||||||
| |||||||||||||||||
| mDNS | mDNS 服务 | ||||||||||||||||
| UDP 通信 | UDP 通信 | ||||||||||||||||
| API | 说明 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| uni.navigateTo | 保留当前页面,跳转到应用内的某个页面,使用 uni.navigateBack 可以返回到原页面 | ||||||||||||||||
| uni.redirectTo | 关闭当前页面,跳转到应用内的某个页面 | ||||||||||||||||
| uni.reLaunch | 关闭所有页面,打开到应用内的某个页面 | ||||||||||||||||
| uni.switchTab | 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面 | ||||||||||||||||
| uni.navigateBack | 关闭当前页面,返回上一页面或多级页面 | ||||||||||||||||
| EventChannel | 页面间事件通信通道 | ||||||||||||||||
| preloadPage | 预加载页面,是一种性能优化技术。被预载的页面,在打开时速度更快。 | ||||||||||||||||
| 窗口动画 | 窗口的显示/关闭动画效果,支持在 API、组件、pages.json 中配置 | ||||||||||||||||
| 页面 | - | ||||||||||||||||
| |||||||||||||||||
| 页面通讯 | $emit、$on、$off、$once | ||||||||||||||||
| subNVue 原生子窗体 | - | ||||||||||||||||
| |||||||||||||||||
| API | 说明 |
|---|---|
| uni.getStorage | 获取本地数据缓存 |
| uni.getStorageSync | 获取本地数据缓存 |
| uni.setStorage | 设置本地数据缓存 |
| uni.setStorageSync | 设置本地数据缓存 |
| uni.getStorageInfo | 获取本地缓存的相关信息 |
| uni.getStorageInfoSync | 获取本地缓存的相关信息 |
| uni.removeStorage | 删除本地缓存内容 |
| uni.removeStorageSync | 删除本地缓存内容 |
| uni.clearStorage | 清理本地数据缓存 |
| uni.clearStorageSync | 清理本地数据缓存 |
| API | 说明 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 获取位置 | - | ||||||||||||||||
| |||||||||||||||||
| 查看位置 | - | ||||||||||||||||
| |||||||||||||||||
| 位置更新 | - | ||||||||||||||||
| |||||||||||||||||
| 地图组件控制 | - | ||||||||||||||||
| |||||||||||||||||
| API | 说明 | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 图片 | - | ||||||||||||||
| |||||||||||||||
| 文件 | - | ||||||||||||||
| |||||||||||||||
| 录音管理 | - | ||||||||||||||
| |||||||||||||||
| 背景音频播放管理 | - | ||||||||||||||
| |||||||||||||||
| 音频组件管理 | - | ||||||||||||||
| |||||||||||||||
| 视频 | - | ||||||||||||||
| |||||||||||||||
| 视频组件管理 | - | ||||||||||||||
| |||||||||||||||
| 相机组件管理 | - | ||||||||||||||
| |||||||||||||||
| 直播组件管理 | - | ||||||||||||||
| |||||||||||||||
| 富文本 | - | ||||||||||||||
| |||||||||||||||
| 音视频合成 | - | ||||||||||||||
| |||||||||||||||
| API | 说明 |
|---|---|
| uni.hideKeyboard | 隐藏已经显示的软键盘,如果软键盘没有显示则不做任何操作。 |
| uni.onKeyboardHeightChange | 监听键盘高度变化 |
| uni.offKeyboardHeightChange | 取消监听键盘高度变化事件 |
| uni.getSelectedTextRange | 在 input、textarea 等 focus 之后,获取输入框的光标位置 |
| API | 说明 | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 交互反馈 | - | ||||||||||||||||||
| |||||||||||||||||||
| 设置导航条 | - | ||||||||||||||||||
| |||||||||||||||||||
| 设置 TabBar | - | ||||||||||||||||||
| |||||||||||||||||||
| 背景 | - | ||||||||||||||||||
| |||||||||||||||||||
| 动画 | - | ||||||||||||||||||
| |||||||||||||||||||
| 滚动 | - | ||||||||||||||||||
| |||||||||||||||||||
| 窗口 | - | ||||||||||||||||||
| |||||||||||||||||||
| 宽屏适配 | - | ||||||||||||||||||
| |||||||||||||||||||
| 字体 | - | ||||||||||||||||||
| |||||||||||||||||||
| 下拉刷新 | - | ||||||||||||||||||
| |||||||||||||||||||
| 节点信息 | - | ||||||||||||||||||
| |||||||||||||||||||
| 节点布局相交状态 | - | ||||||||||||||||||
| |||||||||||||||||||
| 媒体查询 | - | ||||||||||||||||||
| |||||||||||||||||||
| 菜单 | - | ||||||||||||||||||
| |||||||||||||||||||
| 语言 | - | ||||||||||||||||||
| |||||||||||||||||||
| API | 说明 |
|---|---|
| uni.saveFile | 保存文件 |
| uni.getSavedFileList | 获取已保存的文件列表 |
| uni.getSavedFileInfo | 获取已保存的文件信息 |
| uni.removeSavedFile | 删除已保存的文件信息 |
| uni.getFileInfo | 获取文件信息 |
| uni.openDocument | 打开文件 |
| uni.getFileSystemManager | 获取文件管理器 |
| API | 说明 |
|---|---|
| uni.createCanvasContext | 创建绘图上下文 |
| uni.canvasToTempFilePath | 将画布内容保存成文件 |
| uni.canvasGetImageData | 获取画布图像数据 |
| uni.canvasPutImageData | 设置画布图像数据 |
| API | 说明 |
|---|---|
| uni.createWebviewContext | 创建 web-view 组件的上下文对象,用于操作 web-view 的行为 |
| API | 说明 |
|---|---|
| 激励视频广告 | 激励视频广告,是 cpm 收益最高的广告形式 |
| 全屏视频广告 | 全屏视频广告 |
| 内容联盟广告 | 内容联盟广告 |
| 插屏广告 | 插屏广告 |
| 互动游戏 | 互动游戏是 DCloud 联合三方服务商为开发者提供新的广告场景增值服务 |
| API | 说明 |
|---|---|
| uni.getProvider | 获取服务供应商 |
| uni.login | 登录 |
| uni.getUserInfo | 获取用户信息 |
| uni.getuserprofile | 获取用户信息。每次请求都会弹出授权窗口,用户同意后返回 userInfo |
| uni.checkSession | 检查登录状态是否过期 |
| uni.preLogin | 预登录 |
| uni.closeAuthView | 关闭一键登录页面 |
| uni.getCheckBoxState | 获取一键登录条款勾选框状态 |
| uni.getUniverifyManager | 获取全局唯一的一键登录管理器 univerifyManager |
| uni.share | 分享 |
| uni.shareWithSystem | 使用系统分享 |
| uni.requestPayment | 支付 |
| uni.requestVirtualPayment | 虚拟支付 |
| uni.requestMerchantTransfer | 商家转账用户确认模式下,拉起页面请求用户确认收款 |
| uni.getPushClientId | 获取客户端唯一的推送标识 |
| uni.onPushMessage | 启动监听推送消息事件 |
| uni.offPushMessage | 关闭推送消息监听事件 |
| uni.getChannelManager | 获取通知渠道管理器,Android 8系统以上才可以设置通知渠道 |
| uni.createPushMessage | 创建本地通知栏消息(HBuilderX 3.5.2起支持) |
| uni.getFacialRecognitionMetaInfo | 获取实人认证设备信息 |
| uni.startFacialRecognitionVerify | 实人认证 |
| API | 说明 |
|---|---|
| uni.requireNativePlugin | 引入 App 原生插件 |
| API | 说明 |
|---|---|
| uni.authorize | 提前向用户发起授权请求 |
| API | 说明 |
|---|---|
| uni.openSetting | 调起客户端小程序设置界面,返回用户设置的操作结果。 |
| uni.getSetting | 获取用户的当前设置。 |
| API | 说明 |
|---|---|
| uni.chooseAddress | 获取用户收货地址 |
| API | 说明 |
|---|---|
| uni.chooseInvoiceTitle | 选择用户的发票抬头,需要用户授权 scope.invoiceTitle。 |
| API | 说明 |
|---|---|
| uni.navigateToMiniProgram | 打开另一个小程序。 |
| uni.navigateBackMiniProgram | 跳转回上一个小程序,只有当另一个小程序跳转到当前小程序时才会能调用成功。 |
| API | 说明 |
|---|---|
| addTemplate | 组合模板并添加至帐号下的个人模板库。 |
| deleteTemplate | 删除帐号下的某个模板。 |
| getTemplateLibraryById | 获取模板库某个模板标题下关键词库。 |
| getTemplateLibraryList | 获取 APP 模板库标题列表 |
| getTemplateList | 获取帐号下已存在的模板列表。 |
| sendTemplateMessage | 发送模板消息 |
| alipay.open.app.mini.templatemessage.send | 支付宝小程序通过 openapi 给用户触达消息,主要为支付后的触达(通过消费 id)和用户提交表单后的触达(通过 formId)。 |
| API | 说明 |
|---|---|
| uni.getUpdateManager | 返回全局唯一的版本更新管理器对象: updateManager,用于管理小程序更新。 |
| API | 说明 |
|---|---|
| uni.setEnableDebug | 设置是否打开调试开关。此开关对正式版也能生效。 |
| API | 说明 |
|---|---|
| uni.getExtConfig | 获取第三方平台自定义的数据字段。 |
| uni.getExtConfigSync | uni.getExtConfig 的同步版本。 |
因文档同步原因,本页面列出的 API 可能不全。如在本文未找到相关 API,可以在左侧树中寻找或使用文档右上角的搜索功能。