说明:组件级别的 SPI 跟组件UI共用一个 jsContext 可以再定义一个全局变量,实现内存共享。
在 app.json
文件,声明组件时额外增加一个SpiPath 属性,这个属性的含义是组件级别 SPI 的文件路径,整个模块以 default export 的方式导出。
示例:
1 2 3 4 5 6 7 8 9 10 | 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 能力。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 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, }; |