小程序云開(kāi)發(fā)小計(jì)

前言

最近申請(qǐng)了個(gè)人小程序,來(lái)做一些記錄个唧,最初打算使用localstorage存在本地就齊活兒了,可是要接定時(shí)推送设预,就選擇了云開(kāi)發(fā)徙歼。之前用的云開(kāi)發(fā)是團(tuán)隊(duì)搭建過(guò)的,這次嘗試自己從頭來(lái)一遍鳖枕,熟悉一下整個(gè)流程魄梯,順便蹚蹚雷。

技術(shù)棧:uniapp v3

開(kāi)發(fā)

第一步

首先肯定是開(kāi)通服務(wù)宾符,開(kāi)發(fā)者工具里點(diǎn)擊云開(kāi)發(fā)酿秸,里面會(huì)有開(kāi)通提示,一步一步走下去就能正常開(kāi)通了魏烫。


image.png

設(shè)置云函數(shù)路徑

manifest.json里設(shè)置"cloudfunctionRoot": "cloudfunctions/"辣苏,云函數(shù)可以寫(xiě)在這里肝箱,函數(shù)名稱(chēng)為文件夾,內(nèi)容結(jié)構(gòu)為config.json稀蟋、index.js煌张、package.json,具體內(nèi)容見(jiàn)下面圖示例
config.json是聲明函數(shù)的配置信息退客,比如接口權(quán)限骏融、定時(shí)觸發(fā)器等;
index.js名稱(chēng)可以修改井辜,是云函數(shù)執(zhí)行入口绎谦;
package.json就是云函數(shù)的具體信息和依賴(lài),執(zhí)行入口可以在里面修改粥脚。

image.png

新建云函數(shù)

這里需要注意的是窃肠,uniapp項(xiàng)目在本地新建的文件夾是沒(méi)有辦法同步到云函數(shù)列表去的。云函數(shù)的新建可以在云開(kāi)發(fā)后臺(tái)刷允,也可以在開(kāi)發(fā)者工具里冤留,點(diǎn)擊右鍵有新建云函數(shù)。如果是在后臺(tái)建的函數(shù)树灶,可以點(diǎn)擊同步云函數(shù)列表纤怒。

image.png

uniapp在編譯的時(shí)候,cloudfunctions文件夾是不會(huì)編譯到小程序的路徑里去的天通,這就導(dǎo)致一開(kāi)始的時(shí)候不知道該怎么去新建函數(shù)泊窘。如果此時(shí)在開(kāi)發(fā)者工具里新建cloudfunctions文件夾,也是可用的像寒,只是文件夾被建在了dist下面烘豹,無(wú)法同步代碼,因此大聰明選擇了cp -rf cloudfunctions/ dist/dev/mp-weixin/cloudfunctions把它整個(gè)copy過(guò)去诺祸,###口袋空空大口大口###這時(shí)候開(kāi)發(fā)者工具里就有我建好的云函數(shù)了携悯。如果文件是新增的沒(méi)有部署過(guò),需要右鍵選擇云函數(shù)增量上傳筷笨,發(fā)布部署就可以調(diào)用了憔鬼。
image.png

\color{red}{云函數(shù)修改之后,一定要重新上傳部署胃夏,否則是無(wú)法執(zhí)行更新的轴或。}

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

云函數(shù)在調(diào)用之前需要先初始化,否則會(huì)報(bào)錯(cuò)Error: errCode: -1 | errMsg: Cloud API isn't enabled, please call wx.cloud.init first 請(qǐng)先調(diào)用 wx.cloud.init() 完成初始化后再調(diào)用其他云 API仰禀。侮叮。

wx.cloud.init({
  env: 'XXXXXX'
});

// 執(zhí)行云函數(shù)
wx.cloud.callFunction({
    name: 'funcitonname', // 對(duì)應(yīng)云函數(shù)的文件夾名稱(chēng)
    data: 'params', // 傳參
    success: res => {
        console.log('云函數(shù)調(diào)用成功,返回?cái)?shù)據(jù)res:', res);
    },
    fail: err => {
        console.error('云函數(shù)調(diào)用失敗', err);
    },
});

通知

通過(guò)小程序訂閱消息subscribeMessage.send來(lái)實(shí)現(xiàn),需要在小程序里授權(quán)訂閱消息requestSubscribeMessage悼瘾,詳見(jiàn)文檔囊榜。

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

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }); // 使用當(dāng)前云環(huán)境

// 云函數(shù)入口函數(shù)
exports.main = async event => {
    await cloud.openapi.subscribeMessage.send({
        touser: openid,
        page: 'pages/index/index',
        data: {
            thing1: {
                value: goods.data[0].name
            },
            date3: {
                value: goods.data[0].expire
            }
        },
        miniprogram_state: 'formal', 
        templateId: 'templateid'
      });
    }

    return 'success';
};

定時(shí)器

通知實(shí)現(xiàn)了之后审胸,就是定時(shí)推送了,我希望實(shí)現(xiàn)的是每天早上10點(diǎn)發(fā)推送卸勺,這里用到了云函數(shù)的定時(shí)觸發(fā)器砂沛,根據(jù)文檔介紹,修改一下配置曙求。

// config.json
{
    "permissions": {
        "openapi": []
    },
    "triggers": [
        {
            "name": "expireNoticeTrigger",
            "type": "timer",
            "config": "0 0 10 * * * *"
        }
    ]
}

然而碍庵,只是這樣的話,并不會(huì)如我們所期待的那樣定時(shí)執(zhí)行悟狱。因?yàn)橛|發(fā)器需要單獨(dú)上傳静浴,config.json右鍵選擇上傳觸發(fā)器就可以正常執(zhí)行了。

image.png

結(jié)語(yǔ)

到此處挤渐,需求基本實(shí)現(xiàn)苹享,云開(kāi)發(fā)并沒(méi)有想象的復(fù)雜,但是開(kāi)發(fā)過(guò)程中還是有很多的細(xì)節(jié)點(diǎn)需要注意浴麻。至于云函數(shù)的內(nèi)容得问,就是通過(guò)數(shù)據(jù)庫(kù)做一些基礎(chǔ)的crud,官方文檔介紹的比較詳細(xì)软免,有需要的可以看看宫纬。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市膏萧,隨后出現(xiàn)的幾起案子漓骚,更是在濱河造成了極大的恐慌,老刑警劉巖榛泛,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件认境,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡挟鸠,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)亩冬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)艘希,“玉大人,你說(shuō)我怎么就攤上這事硅急「蚕恚” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵营袜,是天一觀的道長(zhǎng)撒顿。 經(jīng)常有香客問(wèn)我,道長(zhǎng)荚板,這世上最難降的妖魔是什么凤壁? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任吩屹,我火速辦了婚禮,結(jié)果婚禮上拧抖,老公的妹妹穿的比我還像新娘煤搜。我一直安慰自己,他們只是感情好唧席,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布擦盾。 她就那樣靜靜地躺著,像睡著了一般淌哟。 火紅的嫁衣襯著肌膚如雪迹卢。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天徒仓,我揣著相機(jī)與錄音腐碱,去河邊找鬼。 笑死蓬衡,一個(gè)胖子當(dāng)著我的面吹牛喻杈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播狰晚,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼筒饰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了壁晒?” 一聲冷哼從身側(cè)響起瓷们,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎秒咐,沒(méi)想到半個(gè)月后谬晕,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡携取,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年攒钳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雷滋。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡不撑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出晤斩,到底是詐尸還是另有隱情焕檬,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布澳泵,位于F島的核電站实愚,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜腊敲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一击喂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧兔仰,春花似錦茫负、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至榕吼,卻和暖如春饿序,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背羹蚣。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工原探, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人顽素。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓咽弦,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親胁出。 傳聞我的和親對(duì)象是個(gè)殘疾皇子型型,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

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