Skip to content

uni-helper/uni-promises

Repository files navigation

@uni-helper/uni-promises

License

npm

uni-app promise 化的 API。要求 node >= 14.18

起步

安装依赖

安装依赖。

npm install @uni-helper/uni-promises
yarn v2/v3

请参考 文档 设置 nodeLinkernode_modules

pnpm

请参考 文档 设置 shamefully-hoisttrue

不考虑支持 uni_modules

API

构建

目前 @uni-helper/uni-promises 会使用 unbuilduni API 之外的部分转译到 ES2017(即 ES8)。uni API 需要在项目构建时由 uni-app 官方提供的插件处理。

对于 vue-cli + vue2 项目,请修改项目根目录 vue.config.js 如下所示。这会让 vue-cli 处理 @uni-helper/uni-promises,保证生成代码符合 browserslist 里的配置。我们建议设置 browserslistchrome>=53,ios>=8

module.exports = {
  transpileDependencies: ['@uni-helper/uni-promises'],
};

对于 vite + vue3 项目,请先设置 build.targetES6

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.tssrc/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。

在官方提供的类型定义不能覆盖这个库之前,这个库依旧保持维护。

致谢