加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

uni-app对微信小程序云函数的适配

发布时间:2020-12-14 19:05:25 所属栏目:资源 来源:网络整理
导读:版权说明 本文首发于个人博客-指尖魔法屋(www.thinkmoon.cn)。原文地址:?uni-app对微信小程序云函数的适配 引言 熟悉uni-app的人应该都知道,uni-app并未对微信小程序云函数(本文统称云函数)进行相应的适配。但是,如果我们在某些业务场景的下需要使用云

版权说明

本文首发于个人博客-指尖魔法屋(www.thinkmoon.cn)。原文地址:?uni-app对微信小程序云函数的适配

引言

熟悉uni-app的人应该都知道,uni-app并未对微信小程序云函数(本文统称云函数)进行相应的适配。但是,如果我们在某些业务场景的下需要使用云函数呢?我们知道,云函数可以复制到微信开发者工具,这样的话我们不得不每次编译一次就手动复制一次,不得不说麻烦至极。本文就问题做出以下解决方案。

本文环境

  1. Hbuilder X

  1. 微信开发者工具

创建云函数目录

首先,我们需要在uni-app项目文件夹下,创建一个云函数目录,路径随意,我这里是?functions?。然后先随便在里面放一些文件,这里以?new_file.css?为例。

修改?manifest.json

在uni-app根目录下,修改?manifest.json?中的微信小程序项,结构如下

"mp-weixin" : {
        /* 小程序特有相关 */
        "appid" : "wxd7de467f6e6cf741","cloudfunctionRoot": "./functions/",// 这一行就是标记云函数目录的字段
        "setting" : {
            "urlCheck" : false
        },0);">"usingComponents" : true
    }

编写?vue.config.js

vue.config.js
const path = require('path')
const CopyWebpackPlugin = 'copy-webpack-plugin')

module.exports = {
    configureWebpack: {
        plugins: [
            new CopyWebpackPlugin([
                {
                    from: path.join(__dirname,0);">'functions'),to: path.join(__dirname,0);">'unpackage/dist',process.env.NODE_ENV === 'production' ? 'build' : 'dev',process.env.UNI_PLATFORM,0);">'functions')
                }
            ])
        ]
    }
}
  1. 编译运行

发现提示如下内容

说明未安装?copy-webpack-plugin?插件,我们手动安装一下。

然后编译运行,发现微信开发者工具里面出现以下内容。

截止目前,已打通Hbuilder X到微信开发者工具的自动复制,即已解决本文的核心内容。以下为进一步测试。

创建云函数

我们在云函数根目录上右键,在右键菜单中,可以选择创建一个新的 Node.js 云函数,我们将该云函数命名为check。开发者工具在本地创建出云函数目录和入口 index.js 文件,同时在线上环境中创建出对应的云函数。创建成功后,工具会提示是否立即本地安装依赖,确定后工具会自动安装 wx-server-sdk。我们会看到以下内容。

创建好后将其同步复制到uni-app项目,即可为以后自动同步行方便,又可避免在输出文件夹中云函数的意外丢失。至此,相关文件编写工作转至?Hbuilder X?,云函数上传部署依旧在微信开发者工具。

编写云函数

默认的云函数只是一个返回用户基本数据的内容,我们将其修改至满足我们的业务需求,以内容安全云调用为例。

在云函数文件中写入以下内容

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()

// 云函数入口函数
exports.main = async(event,context) => {
  try {
    console.log('待检测文本:' + event.content);
    let result = await cloud.openapi.security.msgSecCheck({
      content: event.content
    })
    console.log('result:' + JSON.stringify(result));

    if (result && result.errCode.toString() === '87014') {
      return {
        code: 300,msg: '内容含有违法违规内容',data: result
      }
    } else {
      200,0);">'ok',51); font-weight: 700;">data: result
      }
    }

  } catch (err) {
    if (err.errCode.toString() === data: err
      }
    }
    return {
      code: 400,0);">'调用security接口异常',51); font-weight: 700;">data: err
    }
  }
}

权限申明

在函数目录下,创建一个?config.json?,文档说会自动创建,但是我实际操作时未自动创建。?config.json?内容如下。

{
    "permissions": {
        "openapi": [
            "security.msgSecCheck"
        ]
    }
}

然后在函数目录右键,上传并部署。

小程序调用云函数

,data: {
                        "content": this.contents.join()
                    }
                }).then(res => {
                    console.log(res.result)
                    if (res.result.code == 300) {
                        uni.showModal({
                            title: "温馨提示",51); font-weight: 700;">content: "你所输入的内容可能含有违法违规内容,不支持进行下一步操作"
                        })
                        return
                    } else {
                        ... // 你要进行的操作
                    }
                })

效果展示

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读