Malagu Serverless First漸進(jìn)式應(yīng)用開發(fā)框架
Malagu 是基于 TypeScript 的 Serverless First、組件化、平臺(tái)無關(guān)的漸進(jìn)式應(yīng)用框架。
特征
- 約定大于配置,零配置,開箱即用
- TypeScript 版 Spring Boot
- Serverless First
- 平臺(tái)不鎖定
- 支持前后端一體化,前端框架不鎖定
- 組件化,漸進(jìn)式
- 命令行工具插件化
- 依賴注入
- 面向切面編程(AOP)
- 集成了流行的 ORM 框架,使用裝飾器聲明式事務(wù)管理
- 支持 OIDC 認(rèn)證
- 支持 OAuth2 授權(quán)
- 使用 rxjs 管理狀態(tài)
- 提供 REST 和 RPC 兩種接口風(fēng)格
Malagu 名字由來:在我的家鄉(xiāng),諧音“嗎啦咕”是小石頭的意思,小石頭堆砌起來可以建成高樓大廈、道路橋梁,而 Malagu 組件編排可以實(shí)現(xiàn)千變?nèi)f化的應(yīng)用。
快速開始
# 安裝命令行工具 npm install -g yarn npm install -g @malagu/cli # 初始化 malagu init project-name cd project-name # 進(jìn)入項(xiàng)目根目錄 # 運(yùn)行 malagu serve # 部署 malagu deploy
文檔
- 介紹
- 快速開始
- 命令行工具
- 控制器
- 數(shù)據(jù)庫操作
- 認(rèn)證與授權(quán)
- 云平臺(tái)適配
- 依賴注入
- 組件設(shè)計(jì)
- 前端架構(gòu)
- React 開發(fā)
- 前后端一體化開發(fā)
依賴注入
// 類對象注入 @Component() export class A { } @Component() export class B { @Autowired() protected a: A; } // 配置屬性注入 @Component() export class C { @Value('foo') // 支持 EL 表達(dá)式語法,如 @Value('obj.xxx')、@Value('arr[1]') 等等 protected foo: string; }
數(shù)據(jù)庫操作
import { Controller, Get, Param, Delete, Put, Post, Body } from '@malagu/mvc/lib/node'; import { Transactional, OrmContext } from '@malagu/typeorm/lib/node'; import { User } from './entity'; @Controller('users') export class UserController { @Get() @Transactional({ readOnly: true }) list(): Promise<User[]> { const repo = OrmContext.getRepository(User); return repo.find(); } @Get(':id') @Transactional({ readOnly: true }) get(@Param('id') id: number): Promise<User | undefined> { const repo = OrmContext.getRepository(User); return repo.findOne(id); } @Delete(':id') @Transactional() async remove(@Param('id') id: number): Promise<void> { const repo = OrmContext.getRepository(User); await repo.delete(id); } @Put() @Transactional() async modify(@Body() user: User): Promise<void> { const repo = OrmContext.getRepository(User); await repo.update(user.id, user); } @Post() @Transactional() create(@Body() user: User): Promise<User> { const repo = OrmContext.getRepository(User); return repo.save(user); } }
評論
圖片
表情
