目前有很多Web應(yīng)用基于Express框架來編寫,這樣的Web應(yīng)用按照傳統(tǒng)的部署方式將部署在云主機(jī)上,但您可能不想購買云主機(jī),也不想在運(yùn)維上投入太多成本,那么函數(shù)計算是一個不錯的選擇。本文介紹如何使用函數(shù)計算來搭建基于Express的Serverless Web應(yīng)用。
背景信息
不管您的函數(shù)是通過HTTP還是API網(wǎng)關(guān)觸發(fā),您都可使用函數(shù)計算提供的模板,讓Express快速地在函數(shù)計算上運(yùn)行起來。原生請求的Headers或者Body都會透傳給您的Express應(yīng)用,您只需關(guān)注如何按照Express標(biāo)準(zhǔn)方式編寫業(yè)務(wù)代碼即可。此外,該模板還支持ES6代碼編譯成ES5,剪切打包壓縮成一個.js文件。
如需遷移您的Express應(yīng)用,請參見遷移Express到函數(shù)計算。
操作步驟
1.安裝Node.js。
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.5/install.sh | bash
nvm install 8
2.安裝Funcraft工具。
npm install @alicloud/fun -g
說明 Funcraft工具的某些子命令可能會用到Docker,所以您需要安裝好Docker,詳情請參見Funcraft安裝教程。
3.通過Funcraft模板生成項目。
fun init -n demo https://github.com/muxiangqiu/fc-Express-nodejs8.git
說明 項目生成好后,在根目錄下有個README.md文件,閱讀該文件可以幫您快速了解項目骨架為您做了什么,以及相關(guān)的命令。詳情請參見README.md。
4.切換到項目根目錄。
cd demo
說明 步驟5及以后的所有命令,都在項目根目錄下執(zhí)行。
5.安裝依賴。
npm install
注意 有少數(shù)特殊npm模塊的安裝可能會依賴當(dāng)前系統(tǒng)環(huán)境,為了能正確安裝函數(shù)運(yùn)行時的系統(tǒng)環(huán)境的npm模塊,可以通過fun install命令來實現(xiàn),例如Puppeteer。詳情請參見為函數(shù)安裝第三方依賴。
6.編譯。
生產(chǎn)編譯
npm run build
開發(fā)編譯。這種編譯方式不會進(jìn)行代碼混淆,并且生成source map信息,方便開發(fā)調(diào)試。
npm run dev
7.本地運(yùn)行函數(shù)。
fun local start
8.可選:運(yùn)行調(diào)試函數(shù)。
運(yùn)行調(diào)試之前,請先用npm run dev命令編譯源碼,然后以調(diào)試的方式運(yùn)行函數(shù),命令如下:
fun local start -d 3000
調(diào)試過程如下所示:
9.部署函數(shù)到云端。
部署函數(shù)的時候需要用到AccessKey等信息,您可以通過fun config來配置,如果配置過請忽略,部署函數(shù)命令如下:
fun deploy