背景
早期,Serverless Framework 的定位是偏運維側,通過 Yaml 檔案定義規則,Serverless Framework 負責部署到對應的雲廠商。Serverless Framework 提供了一種方案去适配不同的雲廠商。
最近 Serverless 提供了一個 Serverless Component 方案,這個方案更面向開發側。在同一時間,Malagu Framework 也想到了 Component 類似的方案。
Malagu Framework 一開始定位就是偏開發側的。Malagu Component 與 Serverless Component 解決的問題是一樣的:适配不同平台的服務(阿裡雲函數計算、阿裡雲 oss、騰訊雲函數、aws lambda 等等)和封裝通用的業務代碼。
Malagu Component 與 Serverless Component 設計上也存在不同的地方,後面可以單獨寫一篇文章介紹一下。
Malagu 由 CLI + Framework 組成,其中 Framework 本身就是基于 Malagu Component 實作。
簡介
Malagu 是基于 TypeScript 的 Serverless First、可擴充群組件化的應用架構。
在 Malagu 的世界裡一切皆元件,應用也是元件:根元件。進階元件可以基于低階元件實作,元件的編排形成我們的應用。
Malagu 元件的實作就是一個标準的 node module。隻需要将 Malagu 元件釋出到 npmjs 倉庫,就可以與大家分享你自定義的元件。
特點
- Serverless First,預設提供适配 Serverless 最佳實踐,也支援運作在伺服器上
- 支援前後端一體化,基于 JSON RPC,前端像調用本地方法一樣調用後端方法
- 前後端支援 rpc 和 mvc 兩種通信形式,mvc 可以滿足傳統純後端 rest 風格接口開發需要
- 支援 typeorm,事務 AOP 和事務傳播行為,也可以內建其他的開源 ORM 架構
- 提供類 spring security 的認證和授權,現在已經內建了開箱即用的 authing 平台,實作了 oidc 認證和授權
- 元件化,架構本身也是基于元件化實作,将複雜大型項目拆解成一個個 Malagu 元件,提高了代碼的複用能力、降低了代碼維護難度
- 依賴注入和 AOP,抽象了一套前後端統一的依賴注入,依賴注入的體驗與 spring 差不多
- 指令行工具插件化,預設提供初始化、運作、建構、部署能力,通過插件可以擴充指令行的能力
- 零配置,提供了一套預設行為,你也可以通過 Malagu 配置檔案覆寫預設行為
- 支援适配任意前端架構,目前內建了 React 前端架構,另外,UI 架構內建了 antd、md 等
快速體驗
- 建立應用
先安裝指令行,然後初始化一個模闆:
npm install -g yarn
npm install -g malagu
malagu init

- 本地運作應用
malagu serve
- 本地調試應用
使用 vscode 單步調試工具。
- 部署應用
malagu deploy