说明:组件级别的 SPI 跟组件UI共用一个 jsContext 可以再定义一个全局变量,实现内存共享。
在 app.json
文件,声明组件时额外增加一个SpiPath 属性,这个属性的含义是组件级别 SPI 的文件路径,整个模块以 default export 的方式导出。
示例:
const mySpi = async (opt) => { console.log(opt, "框架调用 spi 传入的参数"); const result = {}; console.log(result, "框架调用 spi 的返回值"); return result; }; export default { mySpi, };
1)在 SPI 中可以调用云函数。
2)SPI 函数支持 async 语法。
3)SPI 中可以调用 UI 能力。
import { Dialog } from '@alifd/next' const delay = (times) => { return new Promise((resolve) => { setTimeout(() => { resolve(); }, times); }); }; const mockSpi = async () => { await delay(2000); await new Promise((resolve, reject) => { Dialog.alert({ title: '我是UI弹窗', content: '弹出的内容', onOk: resolve, }) }) return { apiName: "mockSp11111i", apiData: { mock:"i am mock data" }, }; }; export default { mockSpi, };