uni-app插件里的通用SDK是否可以通知在小程序和云函数中引用

发布于 1周前 作者 wuwangju 来自 Uni-App

uni-app插件里的通用SDK是否可以通知在小程序和云函数中引用

需求场景: 处理一个字符截取的函数,有时候是在小程序端处理,有时候也需要在云函数中处理。

那是否可以封装这样的一个工具的插件,达到这样的效果?

1 回复

在uni-app开发环境中,通用SDK(Software Development Kit)的使用是一个常见的需求,特别是在需要在小程序和云函数中共享某些功能时。确实,uni-app提供了较为灵活的方式来处理这种跨平台的代码复用。以下是如何在小程序和云函数中引用和使用通用SDK的示例代码。

小程序中引用通用SDK

假设我们有一个名为common-sdk.js的通用SDK文件,里面包含了一些基础函数,如日志记录和API请求封装。

common-sdk.js

// common-sdk.js
export function logInfo(message) {
    console.log(`INFO: ${message}`);
}

export function apiRequest(url, data) {
    return new Promise((resolve, reject) => {
        uni.request({
            url: url,
            method: 'POST',
            data: data,
            success: (res) => resolve(res.data),
            fail: (err) => reject(err)
        });
    });
}

在小程序页面中使用

// pages/index/index.vue
<script>
import { logInfo, apiRequest } from '@/common/common-sdk.js';

export default {
    onLoad() {
        logInfo('App loaded');
        apiRequest('https://api.example.com/data', { key: 'value' })
            .then(data => {
                console.log('API response:', data);
            })
            .catch(err => {
                console.error('API error:', err);
            });
    }
}
</script>

云函数中引用通用SDK

在uni-app的云函数中,虽然运行环境有所不同,但依旧可以通过模块化导入的方式使用通用SDK。这里假设你的云函数目录结构如下:

cloudfunctions/
  ├── myFunction/
      ├── index.js
common/
  ├── common-sdk.js

cloudfunctions/myFunction/index.js

const cloud = require('wx-server-sdk');
cloud.init();
const db = cloud.database();

// 引入通用SDK
const { logInfo, apiRequest } = require('../../common/common-sdk.js');

exports.main = async (event, context) => {
    logInfo('Cloud function triggered');
    try {
        const data = await apiRequest('https://api.example.com/data', { key: 'value' });
        return {
            success: true,
            data: data
        };
    } catch (err) {
        return {
            success: false,
            error: err.message
        };
    }
};

以上示例展示了如何在uni-app的小程序和云函数中引用和使用同一个通用SDK。需要注意的是,由于云函数运行环境与小程序不同,某些uni-app特有的API(如uni.request)在云函数中可能不可用,但你可以通过Node.js的原生HTTP请求库(如axiosnode-fetch)来替代。同时,确保你的通用SDK代码兼容这两种环境。

回到顶部