撰文 | 川川
VX-ID:suibichuanji
點(diǎn)擊下方小程序,可看視頻內(nèi)容
前言
最近在學(xué)習(xí)研究小程序的云開發(fā),不得不令人驚嘆,個(gè)人覺(jué)得如果把小程序比作是干柴,那么云開發(fā)就是一把烈火,助推了小程序,小游戲的野蠻生長(zhǎng)
一種無(wú)服務(wù)serverless的開發(fā)模式正在崛起,在未來(lái),個(gè)人覺(jué)得它會(huì)成為開發(fā)網(wǎng)站,app,應(yīng)用等寵兒,在傳統(tǒng)開發(fā)里,開發(fā)一個(gè)完整的產(chǎn)品,需要前端,后臺(tái),運(yùn)維等技術(shù)人員的介入,整個(gè)鏈條很長(zhǎng),開發(fā)成本大,周期長(zhǎng)
但當(dāng)有了云開發(fā)之后,后臺(tái),運(yùn)維等都被弱化了,你無(wú)需去搭建復(fù)雜的服務(wù)器,考慮配置資源,DB運(yùn)維,內(nèi)容加速(cdn),負(fù)載均衡,安全加固等一些問(wèn)題
將服務(wù)端的運(yùn)維部署以及運(yùn)營(yíng)環(huán)節(jié)托管給騰訊云去管理,這對(duì)于類似像我這種服務(wù)器端的小白來(lái)說(shuō),簡(jiǎn)直的是雪中送炭
我們只需要根據(jù)騰訊云平臺(tái)提供的API進(jìn)行核心業(yè)務(wù)的開發(fā),即可實(shí)現(xiàn)產(chǎn)品快速上線和迭代
云開發(fā)提供了完整的后臺(tái)基礎(chǔ)能力幫助開發(fā)者進(jìn)行小程序,小游戲的開發(fā),現(xiàn)在pc端也支持小程序了,在不久將來(lái),我相信這種一站式開發(fā)模式將會(huì)越來(lái)受歡迎,已經(jīng)會(huì)成為一種不可阻擋的趨勢(shì),又是前端的春天.
下面就一起來(lái)學(xué)習(xí)下小程序的云開發(fā)的
在開篇之前,為了掃盲一下,聊聊小程序是什么
相信你每天都在微信里用的小程序,已成成為了生活不可缺少的一部分
功能上: 它是一種全新的連接用戶與服務(wù)的方式,寄生在微信app內(nèi),可以在微信內(nèi)進(jìn)行廣泛的傳播和獲取,服務(wù)于我們的吃,喝(定外賣等),玩,樂(lè)(小游戲),衣,食(電商),住(旅行,住宿),行(打車,騎行)等各個(gè)方面的服務(wù),隨用隨棄,無(wú)需下載,安裝,可娉美于原生APP的應(yīng)用體驗(yàn)
開發(fā)上: 混合式開發(fā),Hybrid應(yīng)用,跨平臺(tái)開發(fā),一套代碼可同時(shí)在安卓,IOS,微信客戶端上運(yùn)行
語(yǔ)言上:使用的是javascript,它同網(wǎng)頁(yè)開發(fā)有著很多的相似性,但卻不茍同,對(duì)于搞前端開發(fā)者的同學(xué)來(lái)說(shuō),從網(wǎng)頁(yè)開發(fā)過(guò)渡到小程序開發(fā),學(xué)習(xí)成本并不高,如果有使用前端三大框架(Angular,Vue,React)的經(jīng)驗(yàn)?zāi)?對(duì)于寫起小程序起來(lái),總會(huì)藕斷絲連,浮想聯(lián)翩的,小程序吸納借鑒了各個(gè)框架的,指令,模板,組件化等優(yōu)點(diǎn)
特點(diǎn):高頻, 短時(shí)長(zhǎng),傳播廣,速度快,掃碼,轉(zhuǎn)發(fā),曝光度大,成本低,有客服,支付,物流等接口,應(yīng)有盡有,小程序應(yīng)用可以說(shuō)是無(wú)處不在,無(wú)孔不入
商業(yè)上: 變現(xiàn)落地快,開發(fā)成本低,個(gè)人獨(dú)立開發(fā)者想象無(wú)極限,眾多大小企業(yè)紛紛入局小程序,從微信提出的在小的個(gè)體,也有自己的品牌,讓早一波自媒體人賺得流油,對(duì)于開發(fā)者而言,更是如此.
(這是一位看圖識(shí)字的前端大佬做的小程序獲得的贊賞)
如果你做的小程序很有意思,有用,其實(shí)是有人愿意小額鼓勵(lì)的
并不是所有人都是吝嗇,一毛不拔,群眾的眼睛是雪亮的
(微信廣告獲取收益也是一部分,如果小程序曝光量大,使用的人多,收益還是很可觀的)
貧窮限制了自己的想象,自己做不到,并不代表別人就做不到的
我曾經(jīng)看過(guò)一位做小程序的大佬,一天收廣告費(fèi)就1000多的,一個(gè)月就搞好幾萬(wàn)
這種具有可持續(xù)性的收入的東西,才值得花時(shí)間投入,研究
這個(gè)其實(shí)也是躺著賺錢的一種方式
(點(diǎn)點(diǎn)底下的廣告也是一種支持,鼓勵(lì))
如果喜歡,謝謝支持
而在小程序上人人都可皆成為開發(fā)者權(quán)限,是可以實(shí)現(xiàn)自己小小創(chuàng)業(yè)夢(mèng)的,從點(diǎn)子設(shè)計(jì)-產(chǎn)品規(guī)劃-前端-后臺(tái)-運(yùn)營(yíng)推廣,一站式一條龍的服務(wù),躺著都可以掙錢在也不是天方夜譚,變得遙不可及
當(dāng)然至于更多技術(shù)方面的小程序與網(wǎng)頁(yè)開發(fā)的區(qū)別,在單獨(dú)的小程序章節(jié)中,有興趣的話,我們以后在聊
說(shuō)完了小程序,那么云開發(fā)到底又是什么?一提到云,容易讓人聯(lián)想到阿里云,騰訊云,華為云,云計(jì)算,甚至還可能讓你想到“馬云”,讓一些不明的吃瓜群眾一臉懵逼
所謂的xx云之類的,某種程度上,是將數(shù)據(jù)的計(jì)算,存儲(chǔ)等能力部署放到遠(yuǎn)端上,一種分布式方式,它不受物理壞境空間等影響,也就是我們常常聽(tīng)到,本地服務(wù)掛了,莫慌,還有遠(yuǎn)端的在跑著的,備災(zāi)呢.
云更多扮演的是一種"撒手式無(wú)人自動(dòng)化"管理的角色,管理一些存儲(chǔ)等資源,例如:圖片,用戶信息等
而端對(duì)應(yīng)的我們的輸出終端設(shè)備,例如:pc端瀏覽器(IE,firefox,chrome),手機(jī)瀏覽器(uc等)甚至有些app和應(yīng)用程序
云開發(fā)提供了對(duì)應(yīng)各個(gè)平臺(tái)終端的sdk接口.開發(fā)者只需調(diào)用就行,專注業(yè)務(wù)核心功能開發(fā)就好.
將應(yīng)用程序(代碼)部署到云端上,托管給騰訊云去管理,根據(jù)騰訊云平臺(tái)提供的API,進(jìn)行核心功能的開發(fā),讓開發(fā)者更多的關(guān)注自身業(yè)務(wù)的開發(fā),快速實(shí)現(xiàn)產(chǎn)品的上線和迭代
云開發(fā)(Tencent Cloud Base,TCB):是騰訊云+微信小團(tuán)隊(duì)強(qiáng)強(qiáng)聯(lián)手為移動(dòng)開發(fā)者提供的一站式后端云服務(wù),它幫助開發(fā)者統(tǒng)一構(gòu)建和管理資源,免去了移動(dòng)應(yīng)用開發(fā)過(guò)程中繁瑣的服務(wù)器搭建及運(yùn)維、域名注冊(cè)及備案、數(shù)據(jù)接口實(shí)現(xiàn)等繁瑣流程,無(wú)需理解后端邏輯及服務(wù)器運(yùn)維知識(shí),讓開發(fā)門檻更低,效率更高,這樣的一門技術(shù)
客戶端: 用戶UI界面,屬于前端部分,前端會(huì)展示很多數(shù)據(jù),例如文字信息,圖片等,有些數(shù)據(jù)不是寫死的,往往是從后端的數(shù)據(jù)庫(kù)讀取出來(lái)的,在后端需要寫相應(yīng)的業(yè)務(wù)邏輯代碼
服務(wù)端: 后端(php/java/python/node)+數(shù)據(jù)庫(kù)(mySql/MongoDB等)
過(guò)程:需要購(gòu)買域名,備案,前后端溝通成本,DB運(yùn)維,文件存儲(chǔ),內(nèi)容加速(CDN),網(wǎng)絡(luò)防護(hù),擴(kuò)容,負(fù)載均衡,安全加固等,公司需要自己去搭建服務(wù)器,還需考慮流量,帶寬,專門的人去維護(hù)
特點(diǎn):開發(fā)效率低,成本高,迭代周期長(zhǎng)
客戶端:同上,在小程序端上直接操作云數(shù)據(jù)庫(kù)和云存儲(chǔ)以及調(diào)用云函數(shù)
云開發(fā): 云函數(shù)(Node),云數(shù)據(jù)庫(kù)(MongoDB,NoSQL),云存儲(chǔ),交給騰訊云去部署,無(wú)需運(yùn)維,省去了傳統(tǒng)復(fù)雜的開發(fā)流程,可以做到一站式全家桶的開發(fā)(在云函數(shù)中操作云資源)
特點(diǎn): 無(wú)服務(wù)的serverless開發(fā)方式,弱化了后端和運(yùn)維的操作,不需要考慮硬件等基礎(chǔ)設(shè)施,開發(fā)者只關(guān)注自身的業(yè)務(wù)邏輯,做到快速迭代,上線,無(wú)中間阻礙的開發(fā)
云函數(shù):在云端運(yùn)行的代碼,微信私有的天然鑒權(quán),開發(fā)者只需編寫自身業(yè)務(wù)邏輯代碼,相當(dāng)于后端的NodeJs服務(wù)
作用:無(wú)需搭建服務(wù)器(省去了運(yùn)維)
具體應(yīng)用
獲取appId
獲取openId
生成分享圖
調(diào)用騰訊云SDK
...
云數(shù)據(jù)庫(kù): 一個(gè)可以在小程序端操作,也能夠在云函數(shù)中讀寫的json數(shù)據(jù)庫(kù)
作用:無(wú)需自己建數(shù)據(jù)庫(kù)
具體應(yīng)用:數(shù)據(jù)的增加,刪除,修改,查詢
云存儲(chǔ): 可在小程序前端直接上傳或下載云端文件,在云開發(fā)控制臺(tái)可視化管理
作用:無(wú)需自建存儲(chǔ)和 CDN
具體應(yīng)用
管理文件
上傳文件
下載文件
分享文件
...
云調(diào)用:基于云函數(shù)免鑒權(quán)使用小程序開放接口的能力,包括服務(wù)端調(diào)用、獲取開放數(shù)據(jù)等能力
作用: 原生微信服務(wù)集成
具體應(yīng)用
服務(wù)器端調(diào)用,在云函數(shù)中使用云調(diào)用,調(diào)用服務(wù)器接口無(wú)需換取 access_token
開放數(shù)據(jù)調(diào)用,對(duì)于返回一些敏感信息,例如數(shù)字簽名秘鑰,會(huì)話秘鑰等
模板消息推送
HTTP API:云開發(fā)資源也可以通過(guò) HTTP 接口訪問(wèn),即在小程序外訪問(wèn),使用 HTTP API 開發(fā)者可在已有服務(wù)器上訪問(wèn)云資源,實(shí)現(xiàn)與云開發(fā)的互通
前提條件:
預(yù)備一個(gè)沒(méi)有注冊(cè)過(guò)的郵箱,在微信公眾平臺(tái)上,注冊(cè)小程序,下一步,下一步即可
下載微信開發(fā)者工具
一開始直接開通小程序的云開發(fā)壞境
這種方式主要是一開始就準(zhǔn)備用云開發(fā),基于微信小程序提供的云開發(fā)模板進(jìn)行開發(fā),具體步驟如下所示:
在自己注冊(cè)的小程序后臺(tái),的設(shè)置中找到appid,填入微信開發(fā)者工具,選擇云開發(fā),下一步,就可以了的
點(diǎn)擊開發(fā)者工具右上方的云開發(fā),按照步驟下一步下一步,開通云開發(fā)就可以了
開通后,重啟下微信開發(fā)者工具,右側(cè)的開發(fā)者工具中有了云壞境的名稱,表示就已經(jīng)開通了的,在云控制臺(tái)上可以查看一些云函數(shù),云數(shù)據(jù)庫(kù)概覽等一些信息的
開發(fā)者工具中手動(dòng)開通小程序云開發(fā)壞境(主要針對(duì)舊項(xiàng)目的小程序)
這種方式主要是對(duì)于舊項(xiàng)目的小程序想要切換到云開發(fā),基于云開發(fā)的的基礎(chǔ)能力進(jìn)行二次開發(fā)
這在創(chuàng)建小程序工程項(xiàng)目時(shí),一開始就開通云環(huán)境與只創(chuàng)建小程序前臺(tái),然后在工具中手動(dòng)的開通云壞境,其實(shí)是一樣的,后者需要手動(dòng)配置一些就可以了的
設(shè)置云函數(shù)的路徑
在項(xiàng)目根目錄找到 project.config.json 文件,新增 cloudfunctionRoot 字段,指定本地已存在的目錄作為云函數(shù)的本地根目錄(在根目錄下手動(dòng)創(chuàng)建一個(gè)cloudfunction的文件夾,然后在project.config.json中進(jìn)行配置一下),這個(gè)目錄相當(dāng)于于后端Nodejs,后端服務(wù),它是可以通過(guò)終端npm安裝一些第三方模塊的
{ "cloudfunctionRoot": "./cloudfunction/"}
如果你看到微信開發(fā)者工具中對(duì)應(yīng)的目錄出現(xiàn)了一朵小云的標(biāo)志,則說(shuō)明你的云函數(shù)目錄配置成功了
2. 初始化云環(huán)境
在完成了上面的配置之后,接下來(lái)就是要初始化云函數(shù),以便在小程序前臺(tái)進(jìn)行調(diào)用
在前臺(tái)的微信小程序的app.js中onLaunch生命周期中初始化云開發(fā),具體代碼如下所示
//app.jsApp({ onLaunch: function () { if (!wx.cloud) { console.error('請(qǐng)使用 2.2.3 或以上的基礎(chǔ)庫(kù)以使用云能力') } else { wx.cloud.init({ // env 參數(shù)說(shuō)明: // env 參數(shù)決定接下來(lái)小程序發(fā)起的云開發(fā)調(diào)用(wx.cloud.xxx)會(huì)默認(rèn)請(qǐng)求到哪個(gè)云環(huán)境的資源 // 此處請(qǐng)?zhí)钊氕h(huán)境 ID, 環(huán)境 ID 可打開云控制臺(tái)查看 // 如不填則使用默認(rèn)環(huán)境(第一個(gè)創(chuàng)建的環(huán)境) // env: 'my-env-id', traceUser: true, }) } }})
上面的這段代碼在我們的微信小程序的app.js中的onLaunch生命周期中,調(diào)用云開發(fā)的init初始化命令,這樣就可以在后續(xù)的生命周期內(nèi)調(diào)用云開發(fā)的命令執(zhí)行各種操作
3. 配置基礎(chǔ)版本庫(kù)
在進(jìn)行云開發(fā)時(shí),小程序的API更新是很快的,云開發(fā)又是集成在小程序官方的運(yùn)行的環(huán)境當(dāng)中的,對(duì)于一些新的API,如果想要支持的話,那么得使用較高版本的庫(kù)的
只需要在開發(fā)者工具中,點(diǎn)擊開發(fā)者工具右上方的詳情,點(diǎn)擊tab頁(yè),找到詳情中的本地設(shè)置,將調(diào)試基礎(chǔ)庫(kù)的版本選擇為最新的就可以了的,如下所示
(如果文章對(duì)你有用,下方鼓勵(lì)一下哈)
贊 賞
結(jié)語(yǔ)
本節(jié)主要介紹的是小程序云開發(fā),從了解到小程序是什么,到什么是云開發(fā),云開發(fā)它提供的幾大基礎(chǔ)能力,對(duì)于騰訊云提出的這種無(wú)服務(wù)serverless開發(fā)絕對(duì)是前端開發(fā)者的春天,弱化后端,運(yùn)維,運(yùn)營(yíng)等環(huán)節(jié),前端的話語(yǔ)權(quán)將會(huì)越來(lái)越重.
聯(lián)系客服