1.4 云函數(shù)的配置與部署

云開發(fā)的云函數(shù)是一項(xiàng)無服務(wù)器計(jì)算服務(wù),以函數(shù)的形式運(yùn)行后端代碼來響應(yīng)事件以及調(diào)用其他服務(wù)。云函數(shù)支持多種編程語言,但是最為推薦的就是JavaScript,運(yùn)行環(huán)境是Node.js。在這個(gè)章節(jié)我們會來講解云函數(shù)開發(fā)環(huán)境的配置以及云函數(shù)如何部署到云端。
1.4.1 云函數(shù)的開發(fā)環(huán)境
1、下載安裝Node.js
Node.js是在服務(wù)端運(yùn)行JavaScript的運(yùn)行環(huán)境,云開發(fā)所使用的服務(wù)端環(huán)境就是Node.js。npm是Node包管理器,通過npm,我們可以非常方便的安裝云開發(fā)所需要的依賴包。
npm是前端開發(fā)必不可少的包(模塊)管理器,它的主要功能就是來管理包package,包括安裝、卸載、更新、查看、搜索、發(fā)布等,其他編程語言也有類似的包管理器,比如Python的pip,PHP的composer、Java的maven。我們可以把包管理器看成是windows的軟件管理中心或手機(jī)的應(yīng)用中心,只是它們用的是可視化界面,包管理器用的是命令行Command Line。
下載地址:Node.js下載地址
大家可以根據(jù)電腦的操作系統(tǒng)下載相應(yīng)的Node.js安裝包并安裝(安裝時(shí)不要修改安裝目錄,啥也別管直接next安裝即可)。打開電腦終端(Windows電腦為cmd命令提示符,Mac電腦為終端Terminal),然后逐行輸入并按Enter執(zhí)行下面的代碼:
node --versionnpm ?--version
如果顯示為v12.18.1以及6.14.5(可能你的版本號會有所不同),表示你的Node.js環(huán)境已經(jīng)安裝成功。
學(xué)編程要仔細(xì),一個(gè)字母,一個(gè)單詞,一個(gè)標(biāo)點(diǎn)符號都不要出錯(cuò)哦。注意輸上面的命令時(shí)node、npm的后面有一個(gè)空格,而且是兩個(gè)短橫杠?
–
。
2、安裝淘寶鏡像cnpm
使用npm來下載一些package的速度可能會比較慢,我們可以安裝淘寶鏡像來加速,在確信了Node.js環(huán)境安裝成功了的情況下,繼續(xù)在終端輸入以下命令:
sudo npm install -g cnpm --registry=https://registry.npm.taobao.org
這個(gè)時(shí)候會要求你輸入你的電腦密碼Password:
,輸入密碼時(shí)是不顯示內(nèi)容的,輸入之后按Enter執(zhí)行。安裝完成之后,我們可以再在終端確認(rèn)cnpm是否安裝成功:
cnpm --version
如果顯示的結(jié)果有類似cnpm@6.1.1
的內(nèi)容,就表示cnpm安裝成功啦,以后本教程在安裝package的時(shí)候仍然會使用npm install
,如果你在執(zhí)行時(shí)速度比較慢,可以改為cnpm install
。
1.4.2 部署并上傳云函數(shù)
1、云函數(shù)的根目錄與云函數(shù)目錄
cloudfuntions文件夾圖標(biāo)里有朵小云,表示這就是云函數(shù)根目錄。展開cloudfunctions,我們可以看到里面有l(wèi)ogin、openapi、callback、echo等文件夾,這些就是云函數(shù)目錄。而miniprogram文件夾則放置的是小程序的頁面文件。
cloudfunctions里放的是云函數(shù),miniprogram放的是小程序的頁面,這并不是一成不變的,也就是說你也可以修改這些文件夾的名稱,這取決于項(xiàng)目配置文件project.config.json里的如下配置項(xiàng):
"miniprogramRoot": ?"miniprogram/","cloudfunctionRoot": ?"cloudfunctions/",但是你最好是讓放小程序頁面的文件夾以及放云函數(shù)的文件夾處于平級關(guān)系且都在項(xiàng)目的根目錄下,便于管理。
2、云函數(shù)部署與上傳
使用鼠標(biāo)右鍵其中的一個(gè)云函數(shù)目錄比如login,在右鍵菜單中選擇在終端中打開,打開后在終端中輸入以下代碼并按Enter回車執(zhí)行:
npm install
如果顯示“npm不是內(nèi)部或外部命令”,你需要關(guān)閉微信開發(fā)者工具啟動(dòng)的終端,而是重新打開一個(gè)終端窗口,并在里面輸入
cd /D 你的云函數(shù)目錄
進(jìn)入云函數(shù)目錄,比如?cd /D C:\download\tcb-project\cloudfunctions\login
進(jìn)入login的云函數(shù)目錄,然后再來執(zhí)行npm install命令。
這時(shí)候會下載云函數(shù)的依賴模塊,下載完成后,再右鍵login云函數(shù)目錄,點(diǎn)擊“創(chuàng)建并部署:所有文件”,這時(shí)會把本地的云函數(shù)上傳到云端,上傳成功后在login云函數(shù)目錄圖標(biāo)會變成一朵小云。
在開發(fā)者工具的工具欄上點(diǎn)擊“云開發(fā)”圖標(biāo)會打開云開發(fā)控制臺,在云開發(fā)控制臺點(diǎn)擊云函數(shù)圖標(biāo),就能在云函數(shù)列表里看到我們上傳好的“l(fā)ogin”云函數(shù)啦。
接下來我們按照這樣的流程把其他所有云函數(shù)(如openapi)都部署都上傳,也就是要執(zhí)行和上面相同的步驟,總結(jié)如下:
右鍵云函數(shù)目錄,選擇在終端中打開,輸入
npm install
命令下載依賴文件;然后再右鍵云函數(shù)目錄,點(diǎn)擊“創(chuàng)建并部署:所有文件”
在云開發(fā)控制臺–云函數(shù)–云函數(shù)列表查看云函數(shù)是否部署成功。
login、openapi、echo、callback這些云函數(shù)只是云開發(fā)QuickStart自帶的云函數(shù)案例,在你體驗(yàn)QuickStart小程序案例的時(shí)候會使用到。
1.4.3 npm包管理器與依賴
1、云函數(shù)包管理
為什么要在云函數(shù)目錄執(zhí)行npm install
,而不是其他地方?這是因?yàn)?code>npm install會下載云函數(shù)目錄下的配置文件package.json里的dependencies,它表示的是當(dāng)前云函數(shù)需要依賴的模塊。package.json在哪里,就在哪里執(zhí)行npm install
,沒有package.json,沒有dependencies,就沒法下載啊。
執(zhí)行npm install
命令下載的依賴模塊會放在node_modules文件夾里,大家可以在執(zhí)行了npm install
命令之后,在電腦里打開查看一下node_modules文件夾里下載了哪些模塊。
既然npm install
是下載模塊,那它是從哪里下載的呢?就以wx-server-sdk為例,我們可以在以下鏈接看到wx-server-sdk的情況:
https://www.npmjs.com/package/wx-server-sdk
為什么package.json里依賴的是一個(gè)模塊wx-server-sdk,但是node_modules文件夾里卻下載了那么多模塊?這是因?yàn)閣x-server-sdk也依賴四個(gè)包@cloudbase/node-sdk
、tcb-admin-node
、protobuf
、jstslib
,而這四個(gè)包又會依賴其他包,子子孫孫的,于是就有了很多模塊。
node_modules文件夾這么大(幾十M~幾百M(fèi)都可能),會不會影響小程序的大???小程序的大小只與miniprogram文件夾有關(guān),當(dāng)你把云函數(shù)都部署上傳到服務(wù)器之后,你把整個(gè)cloudfuntions文件夾刪掉都沒有關(guān)系。相同的依賴(比如都依賴wx-server-sdk)一旦部署到云函數(shù)之后,你可以選擇不上傳node_modules時(shí),因?yàn)橐呀?jīng)上傳過了。
2、wx-server-sdk的版本
打開任意一個(gè)云函數(shù)比如login目錄下的配置文件package.json,我們可以看到包含如下代碼:
{ ?"dependencies": { ? ?"wx-server-sdk": "~2.1.2" ?}}
這里的~2.1.2
是wx-server-sdk依賴的版本,一般我們建議大家使用最新的版本號(生產(chǎn)環(huán)境以穩(wěn)定兼容的版本為準(zhǔn)),比如我們可以將上面的代碼修改為:
{ ?"dependencies": { ? ?"wx-server-sdk": "latest" ?}}
直接在云函數(shù)目錄右鍵“在終端中打開”執(zhí)行npm install
,等同于命令:
npm install --save wx-server-sdk@latest