uni-app
promise 化的 API。要求 node >= 14.18
。
安装依赖。
npm install @uni-helper/uni-promises
yarn v2/v3
请参考 文档 设置 nodeLinker
为 node_modules
。
pnpm
请参考 文档 设置 shamefully-hoist
为 true
。
不考虑支持 uni_modules
。
- addPhoneContact
- authorize
- checkIsSoterEnrolledInDevice
- checkIsSupportSoterAuthentication
- checkSession
- chooseAddress
- chooseFile
- chooseImage
- chooseInvoice
- chooseInvoiceTitle
- chooseLocation
- chooseMedia
- chooseMessageFile
- chooseVideo
- clearStorage
- closeBLEConnection
- closeBluetoothAdapter
- closePreviewImage
- closeSocket
- compressImage
- compressVideo
- connectSocket
- createBLEConnection
- createCameraContext
- createCanvasContext
- createInnerAudioContext
- createLivePlayerContext
- createLivePusherContext
- createMapContext
- createMediaContainer
- createPushMessage
- createSelectorQuery
- createVideoContext
- downloadFile
- getApp
- getBLEDeviceCharacteristics
- getBLEDeviceRSSI
- getBLEDeviceServices
- getBackgroundAudioManager
- getBatteryInfo
- getBluetoothAdapterState
- getBluetoothDevices
- getCheckBoxState
- getClipboardData
- getConnectedBluetoothDevices
- getExtConfig
- getFileInfo
- getImageInfo
- getLocation
- getNetworkType
- getProvider
- getPushClientId
- getRecordManager
- getSavedFileInfo
- getSavedFileList
- getScreenBrightness
- getSelectedTextRange
- getSetting
- getStorage
- getStorageInfo
- getSystemInfo
- getUserInfo
- getUserProfile
- getVideoInfo
- hideHomeButton
- hideNavigationBarLoading
- hideShareMenu
- hideTabBar
- hideTabBarRedDot
- loadFontFace
- login
- makePhoneCall
- navigateBack
- navigateBackMiniProgram
- navigateTo
- navigateToMiniProgram
- notifyBLECharacteristicValueChange
- openAppAuthorizeSetting
- openBluetoothAdapter
- openDocument
- openLocation
- openSetting
- openVideoEditor
- pageScrollTo
- preLogin
- previewImage
- reLaunch
- readBLECharacteristicValue
- redirectTo
- removeSavedFile
- removeStorage
- removeTabBarBadge
- request
- requestPayment
- requestSubscribeMessage
- saveFile
- saveImageToPhotosAlbum
- saveVideoToPhotosAlbum
- scanCode
- sendSocketMessage
- setBLEMTU
- setBackgroundColor
- setBackgroundTextStyle
- setClipboardData
- setEnableDebug
- setKeepScreenOn
- setNavigationBarColor
- setNavigationBarTitle
- setScreenBrightness
- setStorage
- setTabBarBadge
- setTabBarItem
- setTabBarStyle
- share
- shareWithSystem
- showActionSheet
- showLoading
- showModal
- showNavigationBarLoading
- showShareMenu
- showTabBar
- showTabBarRedDot
- showToast
- startBluetoothDevicesDiscovery
- startPullDownRefresh
- startSoterAuthentication
- stopBluetoothDevicesDiscovery
- switchTab
- uploadFile
- vibrate
- vibrateLong
- vibrateShort
- writeBLECharacteristicValue
目前 @uni-helper/uni-promises
会使用 unbuild
将 uni
API 之外的部分转译到 ES2017
(即 ES8
)。uni
API 需要在项目构建时由 uni-app
官方提供的插件处理。
对于 vue-cli + vue2
项目,请修改项目根目录 vue.config.js
如下所示。这会让 vue-cli
处理 @uni-helper/uni-promises
,保证生成代码符合 browserslist
里的配置。我们建议设置 browserslist
为 chrome>=53,ios>=8
module.exports = {
transpileDependencies: ['@uni-helper/uni-promises'],
};
对于 vite + vue3
项目,请先设置 build.target
为 ES6
。
import { defineConfig } from 'vite';
import uni from '@dcloudio/vite-plugin-uni';
// https://vitejs.dev/config/
export default defineConfig({
build: {
target: 'es6',
cssTarget: 'chrome61', // https://cn.vitejs.dev/config/build-options.html#build-csstarget
},
plugins: [
...,
uni(),
...,
],
});
然后在 src/main.ts
或 src/main.js
处自行添加 polyfill。以下是使用 core-js 的示例(需要自行安装 core-js
),你也可以使用 es-shims。
import 'core-js/actual/array/iterator';
import 'core-js/actual/promise';
import 'core-js/actual/object/assign';
import 'core-js/actual/promise/finally';
// 你可以根据需要自行添加额外的 polyfills
// import 'core-js/actual/object/values'
import { createSSRApp } from 'vue';
import App from './App.vue';
export function createApp() {
const app = createSSRApp(App);
return {
app,
};
}
微信小程序的 JavaScript 支持度见 wechat-miniprogram/miniprogram-compat。微信小程序要支持 vue3
,需设置基础库最低版本为 2.11.2 或以上,2.11.2 对应 chrome>=53,ios>=10
。
如果你觉得这个库有用,你可以到 这个 ISSUE 投票,鼓励官方引入支持。
尽管 @dcloudio/[email protected]
开始提供基于 Promise 的类型定义,但它不能正确地同时支持 Vue 2 和 Vue 3,需要手动适配。而这个库基于回调方法封装 Promise,能正确地同时支持 Vue 2 和 Vue 3。
在官方提供的类型定义不能覆盖这个库之前,这个库依旧保持维护。