PaaS 平台 API

平台提供 ES6 Module API,通过 import xxx from '@platform/xxx' 的形式引入使用。

版本未说明,表示所有引擎版本都支持

旧版 API

component 组件信息

获取某一组件的数据信息

getProps 方法

说明

通过 import { getProps } from '@platform/component' 引入。

参数

参数 类型 是否必须 说明 支持版本
key String 组件name或组件id

示例

const key = 'xxxxxxx'
getProps(key)

setProps 方法

说明

通过 import { setProps } from '@platform/component' 引入,可修改的属性需通过 getProps 获取查看后使用。

参数

参数 类型 是否必须 说明 支持版本
key String 组件name或组件id
options Object 需要修改的组件属性以及属性值

示例

const key = 'xxxxxxx'
setProps(key, { content: '测试使用' })

extension 扩展函数

用于注册、调用扩展函数、获取所有扩展函数名

注: 1、注册函数不能重名且保证唯一 2、开发者不能以租户身份在钩子组件中注册函数,注册后无效并在设计器中不会展示注册函数名

registerExtension 方法

说明

通过 const extension = require('@platform/extension') 引入,全局注册一个函数。

参数

参数 类型 是否必须 说明 支持版本
root Boolean 是否为产品级,租户需传 false 或不传,开发者传 true
name String 函数名
handler object 处理函数体 { handler: function() {} }

示例

const extension = require('@platform/extension')
extension.registerExtension(true, 'myFun', { handler: function() {}  })

executeExtension 方法

说明

通过 const extension = require('@platform/extension') 引入,执行已注册的函数。

参数

参数 类型 是否必须 说明 支持版本
root Boolean 是否为产品级,租户需传 false 或不传,开发者传 true 或不传
name String 函数名
args Object 函数参数

示例

const extension = require('@platform/extension')
extension.executeExtension(true, 'myFun', {a: 1})

getExtensionsNames 方法

说明

通过 const extension = require('@platform/extension') 引入,获取已经注册的函数名。

参数

参数 类型 是否必须 说明 支持版本
root Boolean 是否为产品级,租户需传 false 或不传,开发者传 true

示例

const extension = require('@platform/extension')
extension.getExtensionsNames(true)

hook 平台生命周期钩子

通过 import { addHook, callHook } from '@platform/hook' 引入使用

invoke 桥接方法

说明

通过 import { invoke } from '@platform/invoke' 引入。
第三方插件调用,在原有$wx、$corpWx...基础上做了二次封装,使用时无需判断 api 是否存在。
: 目前,支持 微信企业微信云助手 三个平台的方法调用。

参数

参数 类型 是否必须 说明 支持版本
method String 方法名
options object 配置项
error function 引擎识别到的错误回调,如插件不存在等 -

示例

// 分享微信朋友圈
const options = {
  link: 'https://a.b.c',
  title: '分享测试',
  desc: '这个是轻应用在调我的分享功能,测试一下请忽略',
  success: function(res) {},
  error: function(res) {},
};
invoke('onMenuShareTimeline', options);

runtime 运行时属性

说明

通过 import { xxx } from '@platform/runtime' 访问运行时属性,包含以下属性:

属性 说明 支持版本
mode 当前运行模式: appMiniProgramMobileSite
subMode mode 为 'MobileSite' 时, subMode 设置为 'MobileSite',后续逻辑中使用。
instanceProp '@platform/inject' 中对应 mode 下的参数,存入 instanceProp
plugin 从加载的所有 plugin 列表中,过滤出适用于当前 mode 可用的 plugin 列表。
isDesignTime 设计时该值为true -

示例

// 假如希望组件的运行时执行代码在设计器中和运行时中实现不同功能,可以通过引入‘isDesignTime’来控制
import { isDesignTime } form '@platform/runtime'
...
if(isDesignTime) {
    // do something
}
...

auth 身份认证

可通过 import { login, logout } from '@platform/auth' 引入。

login 方法

说明

登录。还有按需请求元数据逻辑。 App 端,含有更新检测逻辑。 小程序端,不含有数据与资源检测,只有登陆状态标识变更逻辑。

参数

参数 类型 是否必须 说明 支持版本
token String token 凭证
role String 角色
tenant String 租户
context Object 上下文
redirect Boolean 登录后是否跳转到首页或来源页面,默认为 true -

示例

import { login } from '@platform/auth';

let token = '123',
  role = '',
  tenant = '',
  context = '',
  redirect = true;
login(token, role, tenant, context, redirect);
// or 对象风格
login({ token, role, tenant, context, redirect });

logout 方法

说明

退出登录

参数

参数 类型 是否必须 说明 支持版本
loadDefault Boolean 是否加载默认角色元数据, 默认 true
redirect Boolean 退出后是否跳转到来源页面或首页(切换角色时),默认 true -

示例

import { logout } from '@platform/auth';

// 退出时不加载默认角色元数据,不跳转
logout(false, false);

context 作用域上下文

通过 import { setContext, getContext, clearContext } from '@platform/context' 访问

setContext 方法

说明

设置应用上下文,登录后或任何需要存储上下文数据时调用,引擎会在组件内注入计算属性$appContext。

参数

参数 类型 是否必须 说明 支持版本
key String / OBject
value any -

示例

import { setContext } from '@platform/context';

setContext('aaa', {
  token: '123',
});
// or
setContext({
  aaa: {
    token: '123',
  },
});

getContext 方法

说明

获取上下文,通常不需要调用,可以在组件内通过计算属性$appContext 获取对应值

参数

参数 类型 是否必须 说明 支持版本
key String -

示例

import { getContext } from '@platform/context';

// key为String类型时
getContext(key); // => value

//key为Object类型时
getContext(); // => { key: value }

clearContext 方法

说明

清空 context

示例

import { clearContext } from '@platform/context';

clearContext();

http 网络请求 0.1.180102+

通过 import { axios, http } from '@platform/http' 使用

http 方法

版本

引擎版本支持 >= v0.1.180102

说明

在封装 axios 基础上做了 401 拦截,返回登录页(约束: 登录态失效时,接口需返回 401 状态码)。
对比 axios,默认增加了以下内容(如不需要请沿用 axios 或者通过 config 覆盖):

  1. baseURL 默认配置,值为应用所配置 apiDomain
  2. auth-token 默认 header,值为当前本地存储 token

参数

方法 参数 类型 是否必须 说明 支持版本
http.request config Object 配置信息
http.get url,config String,Object 是,否 api 请求地址,配置信息
http.post url,config String,Object 是,否 api 请求地址,配置信息
http.delete url,config String,Object 是,否 api 请求地址,配置信息
http.put url,config String,Object 是,否 api 请求地址,配置信息
http.head url,config String,Object 是,否 api 请求地址,配置信息
http.options url,config String,Object 是,否 api 请求地址,配置信息
http.path url,config String,Object 是,否 api 请求地址,配置信息 -

参数 config 继承 axiosconfig 用法

示例

import { axios, http } from '@platform/http';

http
  .get('/api')
  .then(() => {})
  .catch(() => {});
http
  .post('/api')
  .then(() => {})
  .catch(() => {});
http
  .put('/api')
  .then(() => {})
  .catch(() => {});
http
  .delete('/api')
  .then(() => {})
  .catch(() => {});

// axios 开源库
axios
  .get('http://api')
  .then(() => {})
  .catch(() => {});
axios
  .post('http://api')
  .then(() => {})
  .catch(() => {});
axios
  .put('http://api')
  .then(() => {})
  .catch(() => {});
axios
  .delete('http://api')
  .then(() => {})
  .catch(() => {});

inject 应用属性

说明

通过 import { xxx } from '@platform/inject' 访问, 包含以下属性:

属性 说明 支持版本
buildMode 当前构建模式: appwechat
appId 当前应用 ID
env 当前应用环境
engine 当前应用使用引擎版本,可用于识别不同引擎来适配差异
appAssetsVersion 当前应用资源包版本
apiDomain 当前应用 API 主域名
fetchMetaApi 当前应用获取元数据 API
fetchVersionApi 当前应用获取更新版本信息 API
fixedDpr 当前应用是否启用了固定 Dpr 选项
buildRem 当前应用是否启用 Rem 转换功能
fixedDpr 当前应用是否启用了固定 Dpr 选项
isMobileSite 当前应用是否运行在浏览器内
isWechat 当前应用是否运行在微信内
isCorpWechat 当前应用是否运行在企业微信内
isCloudAssistant 当前应用是否运行在云助手内
isApp 当前应用是否运行在混合 App 内 -

示例

import { appId, apiDomain } from '@platform/inject'
...
console.log(appId)
...

log 日志记录

需要记录信息到日志平台时使用。
通过 import { error, message } from '@platform/log' 引入。

message 方法

说明

记录运行日志。

参数

参数 类型 是否必须 说明 支持版本
message String 日志描述信息
options Object 配置项,作为请求参数一并发送 -

示例

import { message } from '@platform/log';

if (!data) {
  message('获取xx数据为空'); // 默认level: info
}

// 设置日志信息级别
if (!data) {
  message('获取xx数据为空', { level: 'warn' }); // 默认level: info
}

error 方法

说明

记录运行错误级别日志。

参数

参数 类型 是否必须 说明 支持版本
error String 日志错误信息
options Object 配置项,作为请求参数一并发送 -

示例

import { error } from '@platform/log';

try {
  const a = 1;
  let a = 2;
} catch (e) {
  error(e); // 默认level: error
}

if (!data) {
  error('获取xx数据为空'); // 默认level: error
}

location 路径跳转

说明

路径跳转多端支持。
通过 import { location } from '@platform/location' 引入。
支持 location.push(url)location.replace(url)两种方法。

参数

参数 类型 是否必须 说明 支持版本
url String / Object url 为字符串时自动识别,相对 url 判定为路由,绝对 url 判定为外链;
url 为对象时,根据 type 识别,internal 为内链、external 为外链;
注意:小程序中,不支持 external
-

示例

import { location } from '@platform/location';

export default {
  method: {
    goRouter() {
      location.push({
        name: 'index',
        path: '/index',
        type: 'internal',
      });
      // or
      location.push('index');
      location.push('/index');
    },
    goLink() {
      location.push('http://paas.mypaas.com.cn');
      location.push({
        url: 'http://paas.mypaas.com.cn',
        type: 'external',
      });
    },
  },
};

page 页面信息

获取页面内的数据信息

getProps 方法

说明

通过 import { getProps } from '@platform/page' 引入,可查看信息如下:name(页面name)、title(页面标题)、isHome(是否为首页)、isNavigation(是否为导航页)

参数

参数 类型 是否必须 说明 支持版本
key String 页面id,不传则默认获取当前路由页面

示例

const key = 'xxxxxxx'
getProps(key)
//or
getProps()

setProps 方法

说明

通过 import { setProps } from '@platform/page' 引入,目前只支持对 title 属性的修改。

参数

参数 类型 是否必须 说明 支持版本
key String 页面id,不传则,默认获取当前路由页面
options Object 需要修改的组件属性以及属性值

示例

const key = 'xxxxxxx'
setProps(key, { title: '测试标题' })
//or
setProps({ title: '测试标题' })

role 角色相关

通过 import { getRole, setRole, clearRole } from '@platform/role' 引入

getRole 方法

说明

从 localStorage 中取得 role 字段,缺省值 'default'。

示例

import { getRole } from '@platform/role';

const role = getRole();

setRole 方法

说明

设置角色信息,存到 localStorage 中(小程序模式下存入 wxStorage)。
H5 模式,将传入的 url 参数存入 localStorage 逻辑。
非小程序模式,返回一个重新请求元数据完成后 resolve 的 Promise。
小程序模式下,返回一个 Promise.resolve()

参数

参数 类型 是否必须 说明 支持版本
role String 角色
tenant String 租户号
redirect Boolean 默认 true,获取元数据之后,进行跳转。 -

示例

import { setRole } from '@platform/role';

setRole('test', '', true);

clearRole 方法

说明

移除角色,清空 Storage 中角色信息。

参数

参数 类型 是否必须 说明 支持版本
loadDefault Boolean true: 获取默认元数据,false: 只清除角色信息,不获取默认元数据
redirect Boolean true: 自动跳转首页或同角色来源页,false: 不自动跳转 -

示例

import { clearRole } from '@platform/role';

clearRole(true, true);

router 路由 1.1.180514+

版本

引擎版本支持 >v1.1.180514

说明

VueRouter实例对外暴露。
通过 import router from '@platform/router' 引用。
注意:小程序模式下此 API 无效。$router 为模拟的 API,没有真实的 VueRouter 可暴露。

示例

import router from '@platform/router';

console.log(router); // VueRouter(....)

store 数据 1.1.180514+

版本

引擎版本支持 >v1.1.180514

说明

Vuex.store 对外暴露。
通过 import store from '@platform/store' 引用。
业务组件中,可使用 store 的动态注册 module 方法,增加 module。 Vuex 文档:模块动态注册

示例

  import store from '@platform/store'
  import bizStore from '../store'

  const namespace = 'namespace'

  beforeCreate(){
      if (!store._modules.get([namespace])) {
          store.registerModule([T.NAMESPACE], bizStore)
      }
  }

token 鉴权凭证相关

通过 import { setToken, getToken, clearToken } from '@platform/token'引用。

setToken 方法

说明

设置 token,login 方法已默认调用,无需重复调用,用于业务上需要刷新 token 的场景

参数

参数 类型 是否必须 说明 支持版本
token String 鉴权凭证 -

示例

import { setToken } from '@platform/token';

setToken(token);

getToken 方法

说明

获取 token,可用于 ajax 请求等场景。
注意:使用 @platform/http 处理 ajax 请求时,header 中默认携带本地 token,key 为 auth-token

示例

import { getToken } from '@platform/token';

getToken();

clearToken 方法

说明

清空 token,清空后登陆状态为未登录,但 role 可能还存在,正常情况建议直接使用 logout 方法

示例

import { clearToken } from '@platform/token';

clearToken();

tenant 租户相关

通过 import { setTenantCode, getTenantCode, clearTenantCode } from '@platform/tenant'引用。

setTenantCode 方法

说明

设置 tenant code

参数

参数 类型 是否必须 说明 支持版本
code String 租户 code -

示例

import { setTenantCode } from '@platform/tenant';

setTenantCode(code);

getTenantCode 方法

说明

获取 tenant code

示例

import { getTenantCode } from '@platform/tenant';

getTenantCode();

clearTenantCode 方法

说明

清空 tenant code

示例

import { clearTenantCode } from '@platform/tenant';

clearTenantCode();

view 页面 1.5.180706+

版本

引擎版本支持 >=v1.5.180706

说明

包含 pruneCache 方法
通过 import { pruneCache } from '@platform/view'引用。
精简缓存,传入参数,表示移除某个或多个页面缓存,不传表示清空

参数

参数 类型 是否必须 说明 支持版本
viewName String / Array 页面名称 -

示例

import { pruneCache } from '@platform/view';

pruneCache();
pruneCache('view-name');
pruneCache(['view-name']);

utils 工具 API

通过 import { postUnit, postStyle, localStorage, cookie } from '@platform/utils'引用。

postUnit 方法

说明

像素单位后处理。
传入数值,返回 rem 或 rpx。

参数

参数 类型 是否必须 说明 支持版本
number Number 像素数值 -

示例

import { postUnit } from '@platform/utils';

// 在小程序中,返回`'150rpx'`, 在其他端返回`'2rem'`。在终端设备的表现是一致比例的。
const withStyle = `width: ${postUnit(75)}`;

postStyle 方法

说明

style 对象后处理。
传入 styleObj,返回 inline style 字符串。
:传入参数内像素单位,不会进行像素单位后处理。

参数

参数 类型 是否必须 说明 支持版本
number string / array / object 样式对象 -

示例

    import { postStyle } from '@platform/utils'

    const iconStyle = postStyle({
      lineHeight: 123px,
      fontSize: 30px
    })

    console.log(postStyle) // 'line-height: 123px, font-size: 30px'

localStorage

说明

localStorage 多端操作封装。
默认 API 与浏览器一致,小程序模式下,将使用 wxStorage。

示例

    import localStorage from '@platform/utils/localStorage'
    # 或者
    import { localStorage } from '@platform/utils'

    localStorage.getItem('a')
    localStorage.setItem('a', 'b')
    localStorage.removeItem('a')
    localStorage.clear()

说明

cookie 多端操作封装。
默认 API 与 js-cookie 一致,小程序模式下,将 cookie 存入 wxStorage,并进行修改。

示例

    import cookie from '@platform/utils/cookie'
    # 或者
    import { cookie } from '@platform/utils'

    cookie.get('a')
    cookie.set('a', 'b')
    cookie.remove('a')