uni-app對微信小程序云函數(shù)的適配

引言

熟悉uni-app的人應(yīng)該都知道,uni-app并未對微信小程序云函數(shù)(本文統(tǒng)稱云函數(shù))進(jìn)行相應(yīng)的適配衙传。但是俐巴,如果我們在某些業(yè)務(wù)場景的下需要使用云函數(shù)呢?我們知道牵囤,云函數(shù)可以復(fù)制到微信開發(fā)者工具,這樣的話我們不得不每次編譯一次就手動(dòng)復(fù)制一次滞伟,不得不說麻煩至極揭鳞。本文就問題做出以下解決方案。

本文環(huán)境

  1. Hbuilder X
  1. 微信開發(fā)者工具

創(chuàng)建云函數(shù)目錄

首先梆奈,我們需要在uni-app項(xiàng)目文件夾下野崇,創(chuàng)建一個(gè)云函數(shù)目錄,路徑隨意亩钟,我這里是functions乓梨。然后先隨便在里面放一些文件,這里以new_file.css為例清酥。

修改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
    }

編寫vue.config.js

  1. 我們在項(xiàng)目根目錄創(chuàng)建vue.config.js文件
  2. 寫入以下內(nèi)容(如路徑不一樣請做相應(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')
                }
            ])
        ]
    }
}
  1. 編譯運(yùn)行

發(fā)現(xiàn)提示如下內(nèi)容

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

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


截止目前蝠筑,已打通Hbuilder X到微信開發(fā)者工具的自動(dòng)復(fù)制,即已解決本文的核心內(nèi)容揩懒。以下為進(jìn)一步測試什乙。

創(chuàng)建云函數(shù)

我們在云函數(shù)根目錄上右鍵,在右鍵菜單中已球,可以選擇創(chuàng)建一個(gè)新的 Node.js 云函數(shù)臣镣,我們將該云函數(shù)命名為check。開發(fā)者工具在本地創(chuàng)建出云函數(shù)目錄和入口 index.js 文件智亮,同時(shí)在線上環(huán)境中創(chuàng)建出對應(yīng)的云函數(shù)退疫。創(chuàng)建成功后,工具會(huì)提示是否立即本地安裝依賴鸽素,確定后工具會(huì)自動(dòng)安裝 wx-server-sdk褒繁。我們會(huì)看到以下內(nèi)容。

創(chuàng)建好后將其同步復(fù)制到uni-app項(xiàng)目馍忽,即可為以后自動(dòng)同步行方便棒坏,又可避免在輸出文件夾中云函數(shù)的意外丟失燕差。至此,相關(guān)文件編寫工作轉(zhuǎn)至Hbuilder X坝冕,云函數(shù)上傳部署依舊在微信開發(fā)者工具徒探。

編寫云函數(shù)

默認(rèn)的云函數(shù)只是一個(gè)返回用戶基本數(shù)據(jù)的內(nèi)容,我們將其修改至滿足我們的業(yè)務(wù)需求喂窟,以內(nèi)容安全云調(diào)用為例测暗。

在云函數(shù)文件中寫入以下內(nèi)容

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

cloud.init()

// 云函數(shù)入口函數(shù)
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: '內(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,文檔說會(huì)自動(dòng)創(chuàng)建磨澡,但是我實(shí)際操作時(shí)未自動(dòng)創(chuàng)建碗啄。config.json內(nèi)容如下。

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

然后在函數(shù)目錄右鍵稳摄,上傳并部署稚字。

小程序調(diào)用云函數(shù)

wx.cloud.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)行的操作
                    }
                })

效果展示

本文由 指尖魔法屋 首發(fā)厦酬,轉(zhuǎn)載必須申明原指尖魔法屋來源及源地址胆描! 聯(lián)系我請轉(zhuǎn)至指尖魔法屋!聯(lián)系我請轉(zhuǎn)至指尖魔法屋仗阅!聯(lián)系我請轉(zhuǎn)至指尖魔法屋昌讲!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市减噪,隨后出現(xiàn)的幾起案子剧蚣,更是在濱河造成了極大的恐慌,老刑警劉巖旋廷,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸠按,死亡現(xiàn)場離奇詭異,居然都是意外死亡饶碘,警方通過查閱死者的電腦和手機(jī)目尖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扎运,“玉大人瑟曲,你說我怎么就攤上這事『乐危” “怎么了洞拨?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長负拟。 經(jīng)常有香客問我烦衣,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任花吟,我火速辦了婚禮秸歧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘衅澈。我一直安慰自己键菱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布今布。 她就那樣靜靜地躺著经备,像睡著了一般。 火紅的嫁衣襯著肌膚如雪部默。 梳的紋絲不亂的頭發(fā)上侵蒙,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天,我揣著相機(jī)與錄音甩牺,去河邊找鬼蘑志。 笑死累奈,一個(gè)胖子當(dāng)著我的面吹牛贬派,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播澎媒,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼搞乏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了戒努?” 一聲冷哼從身側(cè)響起请敦,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎储玫,沒想到半個(gè)月后侍筛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撒穷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年匣椰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片端礼。...
    茶點(diǎn)故事閱讀 39,992評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡禽笑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蛤奥,到底是詐尸還是另有隱情佳镜,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布凡桥,位于F島的核電站蟀伸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜望蜡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一唤崭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧脖律,春花似錦谢肾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至微姊,卻和暖如春酸茴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背兢交。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工薪捍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人配喳。 一個(gè)月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓酪穿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親晴裹。 傳聞我的和親對象是個(gè)殘疾皇子被济,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容