云函數(shù) Todo 重構(gòu) + Vue 客戶端調(diào)用
在上篇《Serverless 云開發(fā)高階應(yīng)用》搞清楚各個(gè)配置的含義之后,我們就可以按照之前的思路,實(shí)現(xiàn) Todo 應(yīng)用了。
先配置一個(gè)添加任務(wù)的函數(shù)。
注意,配置文件不能幫我們在本地創(chuàng)建文件及文件夾,不具備小程序的能力,所以,寫好配置文件,我們需要自己創(chuàng)建對應(yīng)的代碼目錄及文件。
代碼寫好之后,如何進(jìn)行本地測試呢?還記得之前我們使用的 SCF 這個(gè)工具嗎?沒錯(cuò),就用它就行了。
然后再使用 Postman 發(fā)個(gè)請求試試:
測試完成后,我們可以使用 tcb 命令進(jìn)行全量部署。注意,全量部署時(shí),vue 也會跟隨打包并部署到靜態(tài)站點(diǎn)中,如果只想部署單個(gè)云函數(shù),可以使用命令 tcb fn deploy add 對 add 這個(gè)函數(shù)單獨(dú)部署:
部署完成后可以登錄云控制臺查看,也可以在本地使用 tcb fn list 查看已部署的函數(shù)列表。
Vue 客戶端調(diào)用
在 Vue 中調(diào)用云函數(shù),與傳統(tǒng)方式不一樣的是,我們不需要自己發(fā)送 HTTP 請求,騰訊官方封裝了 Vue 插件:vue-provider。
地址:https://github.com/TencentCloudBase/cloudbase-vue
在我們構(gòu)建的項(xiàng)目中已經(jīng)引入了該插件。在 main.js 中修改我們的環(huán)境參數(shù),就可以使用了。
同時(shí),在 index.html 中,還會默認(rèn)加載一個(gè)靜態(tài)的配置文件 _init_tcb-env.js,其實(shí)就是環(huán)境的配置參數(shù)。因?yàn)槲覀円呀?jīng)在 main.js 配置了環(huán)境參數(shù),因此,直接屏蔽這個(gè)文件即可。
完成這些配置之后,我們在 Vue 中完成添加任務(wù)的功能,進(jìn)行測試。但是,這里有個(gè)坑,騰訊在這個(gè)地方是個(gè)小學(xué)生收割機(jī),收割了我1個(gè)小時(shí)的時(shí)光我才搞清楚,callFunction 調(diào)用的傳參與 HTTP 觸發(fā)器調(diào)用的 event 入?yún)⑹遣灰粯拥?,一定注?手冊中沒有寫明這一點(diǎn)。
手冊地址:https://docs.cloudbase.net/cloud-function/how-works.html
callFunction 調(diào)用的云函數(shù) event 的入?yún)⒕褪莻魅?callFunction 的 data,沒有請求信息數(shù)據(jù),所以云函數(shù)的代碼一定記得修改。
此時(shí),我們會收到一個(gè)沒有權(quán)限的報(bào)錯(cuò),這是因?yàn)檎{(diào)用云函數(shù)必須要進(jìn)行登錄鑒權(quán),我們暫時(shí)先使用匿名登錄的方式,調(diào)通接口的數(shù)據(jù)通信,后面我們再詳細(xì)介紹 Cloudbase 的用戶管理服務(wù)器。
但是,就算是使用匿名登陸也是個(gè)坑,控制臺中登錄鑒權(quán)的實(shí)例代碼是錯(cuò)誤的,正確的代碼示例在文檔中心那里。
文檔中心地址:
https://docs.cloudbase.net/authentication/anonymous.html
當(dāng)然,光有代碼還不夠,你還需要到控制臺中開啟應(yīng)用允許匿名登錄的選項(xiàng)才行。不過一般都是默認(rèn)就開通的,這里就不再細(xì)說了,通過登錄驗(yàn)證后,我們終于可以去罵罵騰訊寫的垃圾文檔了。