uni-app使用微信小程序云函數(shù)的步驟示例
創(chuàng)建云函數(shù)目錄
首先,我們需要在uni-app項(xiàng)目文件夾下,創(chuàng)建一個(gè)云函數(shù)目錄,路徑隨意,我這里是functions。然后先隨便在里面放一些文件,這里以new_file.css為例。(放文件的原因是:確保編譯成小程序后cloudfunctions文件夾存在。如果該文件夾下沒(méi)有文件,默認(rèn)是不會(huì)在微信小程序開(kāi)發(fā)平臺(tái)中顯示該文件夾的。)

修改manifest.json
在uni-app根目錄下,修改manifest.json中的微信小程序項(xiàng),結(jié)構(gòu)如下
"mp-weixin" : {
/* 小程序特有相關(guān) */
"appid" : "wxd7de467f6e6cf741",
"cloudfunctionRoot": "./functions/", // 這一行就是標(biāo)記云函數(shù)目錄的字段
"setting" : {
"urlCheck" : false
},
"usingComponents" : true
}
編寫(xiě)vue.config.js
- 我們?cè)陧?xiàng)目根目錄創(chuàng)建vue.config.js文件
- 寫(xiě)入以下內(nèi)容(如路徑不一樣請(qǐng)做相應(yīng)適配)
const path = require('path')
const CopyWebpackPlugin = require('copy-webpack-plugin')
module.exports = {
configureWebpack: {
plugins: [
new CopyWebpackPlugin([
{
from: path.join(__dirname, 'functions'),
to: path.join(__dirname, 'unpackage/dist', process.env.NODE_ENV === 'production' ? 'build' : 'dev', process.env.UNI_PLATFORM, 'functions')
}
])
]
}
}
編譯運(yùn)行
發(fā)現(xiàn)提示如下內(nèi)容

說(shuō)明未安裝copy-webpack-plugin插件,我們手動(dòng)安裝一下。

然后編譯運(yùn)行,發(fā)現(xiàn)微信開(kāi)發(fā)者工具里面出現(xiàn)以下內(nèi)容。

截止目前,已打通Hbuilder X到微信開(kāi)發(fā)者工具的自動(dòng)復(fù)制,即已解決本文的核心內(nèi)容。以下為進(jìn)一步測(cè)試。
創(chuàng)建云函數(shù)
(在微信開(kāi)發(fā)者工具操作)我們?cè)谠坪瘮?shù)根目錄上右鍵,在右鍵菜單中,可以選擇創(chuàng)建一個(gè)新的 Node.js 云函數(shù),我們將該云函數(shù)命名為check。開(kāi)發(fā)者工具在本地創(chuàng)建出云函數(shù)目錄和入口 index.js 文件,同時(shí)在線上環(huán)境中創(chuàng)建出對(duì)應(yīng)的云函數(shù)。創(chuàng)建成功后,工具會(huì)提示是否立即本地安裝依賴(lài),確定后工具會(huì)自動(dòng)安裝 wx-server-sdk。我們會(huì)看到以下內(nèi)容。
創(chuàng)建好后將其同步復(fù)制到uni-app項(xiàng)目,即可為以后自動(dòng)同步行方便,又可避免在輸出文件夾中云函數(shù)的意外丟失。至此,相關(guān)文件編寫(xiě)工作轉(zhuǎn)至Hbuilder X,云函數(shù)上傳部署依舊在微信開(kāi)發(fā)者工具。

編寫(xiě)云函數(shù)
默認(rèn)的云函數(shù)只是一個(gè)返回用戶基本數(shù)據(jù)的內(nèi)容,我們將其修改至滿足我們的業(yè)務(wù)需求,以內(nèi)容安全云調(diào)用為例。
在云函數(shù)文件中寫(xiě)入以下內(nèi)容
// 云函數(shù)入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函數(shù)入口函數(shù)
exports.main = async(event, context) => {
try {
console.log('待檢測(cè)文本:' + 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: '內(nèi)容含有違法違規(guī)內(nèi)容',
data: result
}
} else {
return {
code: 200,
msg: 'ok',
data: result
}
}
} catch (err) {
if (err.errCode.toString() === '87014') {
return {
code: 300,
msg: '內(nèi)容含有違法違規(guī)內(nèi)容',
data: err
}
}
return {
code: 400,
msg: '調(diào)用security接口異常',
data: err
}
}
}
權(quán)限申明
在函數(shù)目錄下,創(chuàng)建一個(gè)config.json,文檔說(shuō)會(huì)自動(dòng)創(chuàng)建,但是實(shí)際操作時(shí)可能不會(huì)自動(dòng)創(chuàng)建。config.json內(nèi)容如下。

{
"permissions": {
"openapi": [
"security.msgSecCheck" //接口名
]
}
}

小程序調(diào)用云函數(shù)
wx.cloud.init() //調(diào)用前需先調(diào)用init
wx.cloud.callFunction({
name: 'check',
data: {
"content": this.contents.join()
}
}).then(res => {
console.log(res.result)
if (res.result.code == 300) {
uni.showModal({
title: "溫馨提示",
content: "你所輸入的內(nèi)容可能含有違法違規(guī)內(nèi)容,不支持進(jìn)行下一步操作"
})
return
} else {
... // 你要進(jìn)行的操作
}
})
效果展示

如果第一次出現(xiàn)錯(cuò)誤:invalid scope 沒(méi)有權(quán)限,請(qǐng)先開(kāi)通云服務(wù)
這是因?yàn)?小程序開(kāi)發(fā)選擇了云服務(wù)開(kāi)發(fā),但是沒(méi)有開(kāi)通云服務(wù)導(dǎo)致,點(diǎn)擊微信開(kāi)發(fā)工具上方的 云開(kāi)發(fā)按鈕,開(kāi)通云開(kāi)發(fā)。

新建云函數(shù)(上床并部署后會(huì)自動(dòng)出現(xiàn))

到此這篇關(guān)于uni-app使用微信小程序云函數(shù)的步驟示例的文章就介紹到這了,更多相關(guān)uni-app使用微信小程序云函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js實(shí)現(xiàn)ArrayList功能附實(shí)例代碼
ArrayList功能想必大家都有所了解吧,本文使用js實(shí)現(xiàn)ArrayList功能并附實(shí)例代碼,想學(xué)習(xí)的朋友可以看看2014-10-10
JavaScript實(shí)現(xiàn)倒計(jì)時(shí)跳轉(zhuǎn)頁(yè)面功能【實(shí)用】
本文分享了JavaScript實(shí)現(xiàn)倒計(jì)時(shí)跳轉(zhuǎn)頁(yè)面功能的具體實(shí)例代碼,頁(yè)面代碼簡(jiǎn)單,直接拷貝就能運(yùn)行,頁(yè)面可以自己美化下哦。需要的朋友一起來(lái)看下吧2016-12-12
javascript實(shí)現(xiàn)計(jì)時(shí)器的簡(jiǎn)單方法
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)計(jì)時(shí)器的簡(jiǎn)單方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-02-02
javascript實(shí)現(xiàn)簡(jiǎn)單下拉菜單效果
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)簡(jiǎn)單下拉菜單效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一2022-08-08
JavaScript中表格文件導(dǎo)出的實(shí)現(xiàn)示例
本文主要介紹了JavaScript中表格文件導(dǎo)出的實(shí)現(xiàn)示例,JavaScript中的Blob對(duì)象和a標(biāo)簽的download屬性是實(shí)現(xiàn)這一功能的關(guān)鍵,本文就來(lái)詳細(xì)的介紹一下,感興趣的可以了解一下2024-01-01
js技巧之十幾行的代碼實(shí)現(xiàn)vue.watch代碼
相信很多的用vue的人都知道vue雙向綁定的原理建立在,給屬性綁定了getter和setter,在屬性被改變的同時(shí)觸發(fā)視圖的再渲染。而本期也是借助這兩個(gè)內(nèi)置方法實(shí)現(xiàn)vue內(nèi)的watch2018-06-06
javascript的23種設(shè)計(jì)模式示例總結(jié)大全
這篇文章主要為大家介紹了javascript的23種設(shè)計(jì)模式的總結(jié)大全,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06

