1. 程式人生 > >開發函式計算的正確姿勢 —— 移植 next.js 服務端渲染框架

開發函式計算的正確姿勢 —— 移植 next.js 服務端渲染框架

首先介紹下在本文出現的幾個比較重要的概念:

函式計算(Function Compute): 函式計算是一個事件驅動的服務,通過函式計算,使用者無需管理伺服器等執行情況,只需編寫程式碼並上傳。函式計算準備計算資源,並以彈性伸縮的方式執行使用者程式碼,而使用者只需根據實際程式碼執行所消耗的資源進行付費。函式計算更多資訊 參考
Fun: Fun 是一個用於支援 Serverless 應用部署的工具,能幫助您便捷地管理函式計算、API 閘道器、日誌服務等資源。它通過一個資源配置檔案(template.yml),協助您進行開發、構建、部署操作。Fun 的更多文件 參考
2.0 版本的 Fun,在部署這一塊做了很多努力,並提供了比較完善的功能,能夠做到將雲資源方便、平滑地部署到雲端。但該版本,在本地開發上的體驗,還有較多的工作要做。於是,我們決定推出 Fun Init 彌補這一處短板。
Fun Init

: Fun Init 作為 Fun 的一個子命令存在,只要 Fun 的版本大於等於 2.7.0,即可以直接通過 fun init 命令使用。Fun Init 工具可以根據指定的模板快速的建立函式計算應用,快速體驗和開發函式計算相關業務。官方會提供常用的模板,使用者也可以自定自己的模板。

背景

next.js 是一種 React 的服務端渲染框架,且 next.js 整合度極高,框架自身集成了 webpack、babel、express 等,使得開發者可以僅依賴 next、react、react-dom 就可以非常方便的構建自己的 SSR React 應用,開發者甚至都不用像以前那樣關心路由。

next.js 的高度整合性,使得我們很容易就能實現程式碼分割、路由跳轉、熱更新以及服務端渲染和前端渲染。

next.js 可以與 express、koa 等服務端結合使用。為了能讓 next.js 在函式計算執行,首先需要讓 next.js 
在 express 中執行起來,然後再移植 express 到函式計算中執行。express 應用移植相關文章:

現在,我們提供了一個 fun 模組,通過該模板,三分鐘就可以讓 next.js 應用在函式計算中執行起來。效果如下:

快速開始

1. 安裝 node

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.5/install.sh | bash
nvm install 8

2. 安裝 fun 工具

npm install @alicloud/fun -g

fun 工具的某些子命令可能會用到 docker,所以你需要安裝好 docker,具體參考文件:Fun 安裝教程

3. 通過 fun 模板生成專案

fun init -n demo https://github.com/muxiangqiu/fc-next-nodejs8.git

專案生成好後,在根目錄下有個 README.md 檔案,閱讀該檔案可以幫你快速瞭解專案骨架為你做了什麼,以及相關的命令。具體詳情:README.md

4. 安裝依賴

cd demo # 切換到專案根下面,後面的所有命令,都是在專案根下面執行
npm install

5. 本地執行 next.js

npm run dev

6. 編譯 next.js 

npm run build

7. next.js 在本地函式中執行

npm run start

8. 部署函式到雲端

部署函式的時候需要用到 AK 等下資訊,可以通過 fun config 來配置,如果配置過請忽略,部署函式命令如下:

npm run deploy

小結

該模板預設提供的是 http 觸發器方式觸發函式,同時也提供了 API 閘道器方式觸發函式,只是與 API 閘道器的程式碼被註釋掉了而已,其中,template.yml 檔案與 API 閘道器相關的配置也被註釋掉了。在模板專案中,提供了兩個比較重要的檔案:server.js 和 fc.js。server.js 負責 next.js 與 express 對接;fc.js 負責 express 與 express 對接。這兩個檔案一般情況下不需要修改。接下來,你就可以按照 next.js 標準方式開發 next.js 應用了。

相關連結

作者:木香丘

原文連結

本文為雲棲社群原創內容,未經