W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
在 project.config.json 文件中設(shè)置 cloudfunctionRoot 字段,即可指定云函數(shù)的本地目錄,當通過創(chuàng)建云函數(shù)項目打開工程時,該字段自動生成。
在編輯器中可通過在云函數(shù)目錄上點擊鼠標右鍵來完成相應(yīng)操作,目前包括以下功能:
在編輯器云函數(shù)根目錄上右鍵,可查看當前的云環(huán)境,同時可在二級菜單切換環(huán)境,切換環(huán)境后會自動同步當前云環(huán)境列表(不會自動下載代碼)。
在云函數(shù)根目錄上點擊右鍵,可以創(chuàng)建一個新的 Node.js 云函數(shù),開發(fā)者工具在本地創(chuàng)建出以下目錄和文件:
注意: 新建的云函數(shù)在右鍵上傳前需要在本地用命令行 npm install 來安裝依賴包
右鍵點擊同步云函數(shù)列表,可以將當前云環(huán)境包含的所有云函數(shù)同步到本地,并以云函數(shù)名稱新建相應(yīng)的目錄(如果該目錄不存在)。注意: 新建的目錄中不包含任何文件,如果需要查看云函數(shù)的代碼需要右鍵下載云函數(shù)
右鍵點擊下載云函數(shù),可以將線上云函數(shù)下載到本地硬盤目錄中。
右鍵點擊上傳并部署,可以將選中的云函數(shù)目錄上傳并部署到線上環(huán)境中。
環(huán)境是云開發(fā)各類資源的承載集合。環(huán)境與環(huán)境之間是完全隔離的,也就是說,不同環(huán)境下,所有云上托管資源(數(shù)據(jù)庫、存儲、函數(shù)等)均不互通。使用云開發(fā)服務(wù)必須至少創(chuàng)建一個環(huán)境,每個環(huán)境均有一個唯一的環(huán)境 ID,可以在云開發(fā)控制臺的概覽頁面找到。
一個智能小程序最多可以創(chuàng)建 2 個環(huán)境,建議的實踐為創(chuàng)建一個開發(fā)測試環(huán)境和一個線上生產(chǎn)環(huán)境。利用環(huán)境間數(shù)據(jù)隔離的特性,在日常開發(fā)時使用開發(fā)測試環(huán)境,正式發(fā)布的版本使用線上生產(chǎn)環(huán)境,這樣可以在開發(fā)調(diào)試智能小程序的同時保證生產(chǎn)環(huán)境數(shù)據(jù)的穩(wěn)定性。
初始化云開發(fā) SDK 時,可以指定使用哪個環(huán)境,參見 swan.cloud.init。在云函數(shù)中初始化 SDK 時,如果沒有指定環(huán)境 ID,則會默認使用該函數(shù)當前所處的環(huán)境。
目前提供 Node.js 8.5 的運行時環(huán)境。
使用云函數(shù)的最佳實踐之一是盡量保持云函數(shù)的無狀態(tài)性。也就是說,每次調(diào)用需要保證相互獨立,重復執(zhí)行結(jié)果應(yīng)當保持一致。云函數(shù)的調(diào)度引擎會根據(jù)調(diào)用的頻率自動伸縮計算資源,對于同一個云函數(shù),在同一時間點可能有多個實例正在工作,當函數(shù)結(jié)果返回后,這些實例可能仍會存活一段時間,以供潛在的新一次調(diào)用。因此,在一定程度內(nèi),兩次調(diào)用之間是有可能共享數(shù)據(jù)的(例如在臨時目錄內(nèi)寫入的數(shù)據(jù))。但是開發(fā)者不應(yīng)當依賴這一點,因為調(diào)度引擎的行為是不可預知的,兩次調(diào)用不一定會使用同一個計算資源,而且計算資源會隨時被銷毀重建??傮w而言,開發(fā)者需要遵循云函數(shù)的無狀態(tài)性原則。
將入口函數(shù)標記為 async 即可,Node.js 8.5 的運行時環(huán)境支持 async/await 關(guān)鍵詞。
exports.main = async (event, context) => {
const someAsyncData = await getAsyncData()
return someAsyncData
}
與一般的 Node.js 程序無異,編寫 package.json文件,使用 npm 等工具將外部依賴安裝至 node_modules 目錄中,然后將這些文件一起打包上傳部署即可。
需要。
沒有,可以任意讀寫數(shù)據(jù)。
隨著云開發(fā)的功能迭代,SDK 也不會不斷更新,建議使用保持使用最新版本。SDK 更新時會盡量兼容舊版,當必須做出不兼容變更時,會使用大版本號更新。
在本例中,我們會創(chuàng)建一個名為 sum 的函數(shù),他可以接收一系列數(shù)字作為輸入,并且將他們的和返回。
我們先創(chuàng)建一個 sum 函數(shù),并且修改其中的 index.js 文件。本例中無需使用云開發(fā) SDK,因此沒有做初始化等工作。
exports.main = (event, context) => {
if (Array.isArray(event['numbers'])) {
let sum = 0;
for (let i = 0; i < event['numbers'].length; i++) {
let n = parseInt(event['numbers'][i], 10);
sum += n;
}
return sum
} else {
throw new Error('no numbers');
}
};
這個函數(shù)在 event 中接收一個 numbers 數(shù)組,并且將它們的和返回。
上傳部署函數(shù)后,我們可以在云開發(fā)控制臺中測試這個函數(shù),可以使用以下內(nèi)容作為測試輸入:
{
"numbers": [1, 2, 3, 4]
}
可以看到該云函數(shù)能夠正確返回結(jié)果。
在智能小程序中,通過以下方式調(diào)用這個云函數(shù)獲取結(jié)果:
swan.cloud.callFunction({
// 云函數(shù)名稱
name: 'sum',
// 傳給云函數(shù)的參數(shù)
data: {
numbers: [1, 2, 3, 4]
},
success: function(res) {
console.log(res.result)
},
fail: console.error
})
在云函數(shù)中,可以使用 swan-server-sdk 來訪問當前環(huán)境中的其他資源,包括調(diào)用另一個云函數(shù)。在本例中,你會創(chuàng)建兩個函數(shù):sum 和 call_sum,然后在智能小程序端調(diào)用 call_sum 函數(shù),call_sum 函數(shù)會調(diào)用 sum 函數(shù)獲取結(jié)果,最終返回給智能小程序端。
需要注意的是,這里的調(diào)用是同步調(diào)用。也就是說,第二個函數(shù)的執(zhí)行時間會全部計算到第一個函數(shù)的執(zhí)行時間內(nèi)。實際使用時,需要注意設(shè)置合理的函數(shù)超時時間。
我們先創(chuàng)建一個 sum 函數(shù)。
exports.main = (event, context) => {
if (Array.isArray(event['numbers'])) {
let sum = 0;
for (let i = 0; i < event['numbers'].length; i++) {
let n = parseInt(event['numbers'][i], 10);
sum += n;
}
return sum
} else {
throw new Error('no numbers');
}
};
這個函數(shù)在 event 中接收一個 numbers 數(shù)組,并且將它們的和返回。
我們再創(chuàng)建一個 call_sum 函數(shù)。
const cloud = require('swan-server-sdk');
exports.main = async (event, context) => {
cloud.init(context);
let resp = await cloud.callFunction({
name: 'sum',
data: {
numbers: [1, 2, 3, 4]
}
});
console.log(resp);
return 'sum: ' + resp.result
};
要注意 package.json 中要有 swan-server-sdk 的依賴。
"dependencies": {
"swan-server-sdk": "latest"
}
手動安裝依賴:
npm install
將這兩個函數(shù)都部署到云開發(fā)后,可以在智能小程序中調(diào)用 call_sum 函數(shù),正常的話可以看到返回結(jié)果。
sum: 10
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: