Gitee 推荐 | TypeScript 编写的渐进式应用框架 Malagu

740次阅读
没有评论

English | 简体中文

Gitee 推荐 | TypeScript 编写的渐进式应用框架 Malagu

Malagu

Gitee 推荐 | TypeScript 编写的渐进式应用框架 Malagu
Gitee 推荐 | TypeScript 编写的渐进式应用框架 Malagu
Gitee 推荐 | TypeScript 编写的渐进式应用框架 Malagu
Gitee 推荐 | TypeScript 编写的渐进式应用框架 Malagu
Gitee 推荐 | TypeScript 编写的渐进式应用框架 Malagu

Gitee 推荐 | TypeScript 编写的渐进式应用框架 Malagu

Malagu 是基于 TypeScript 的 Serverless First、组件化、平台无关的渐进式应用框架。

特征

  • 约定大于配置,零配置,开箱即用
  • TypeScript 版 Spring Boot
  • Serverless First
  • 平台不锁定
  • 支持前后端一体化,前端框架不锁定
  • 支持微服务
  • 组件化,渐进式
  • 命令行工具插件化
  • 依赖注入
  • 面向切面编程(AOP)
  • 集成了流行的 ORM 框架,使用装饰器声明式事务管理
  • 支持 OIDC 认证
  • 支持 OAuth2 授权
  • 使用 rxjs 管理状态
  • 提供 REST 和 RPC 两种接口风格

Malagu 名字由来:在我的家乡,谐音“吗啦咕”是小石头的意思,小石头堆砌起来可以建成高楼大厦、道路桥梁,而 Malagu 组件编排可以实现千变万化的应用。

快速开始

# 安装命令行工具
npm install -g @malagu/cli

# 初始化
malagu init -o project-name
cd project-name # 进入项目根目录

# 运行
malagu serve

# 部署
malagu deploy -m scf # 部署到腾讯云云函数(SCF)
malagu deploy -m fc # 部署到阿里云函数计算(FC)
malagu deploy -m lambda # 部署到 AWS Lambda

Gitee 推荐 | TypeScript 编写的渐进式应用框架 Malagu

示例

文档

依赖注入

// 类对象注入
@Component()
export class A {

}

@Component()
export class B {
@Autowired()
protected a: A;
}

// 配置属性注入
@Component()
export class C {
@Value(foo) // 支持 EL 表达式语法,如 @Value(‘obj.xxx’)、@Value(‘arr[1]’) 等等
protected foo: string;
}

数据库操作

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);
}
}

交流群

Gitee 推荐 | TypeScript 编写的渐进式应用框架 Malagu

状态

Gitee 推荐 | TypeScript 编写的渐进式应用框架 Malagu

Read More 

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 
评论(没有评论)
Generated by Feedzy