malagu

陆伍
2小时前发布 /正在检测是否收录...
广告 广告 广告 广告 广告 广告 广告 广告 广告 广告

项目介绍

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

项目详情

English | 简体中文

Cell Logo

Cell

GitHub License
npm Version
npm Downloads
Build Status
Stars
star

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

特点

  • 零配置:开箱即用,减少配置复杂性。
  • 基于 TypeScript:提供强类型支持,提升开发效率。
  • AI 支持:提供了 AI 基础抽象和多厂商模型服务接口适配。
  • 无服务器优先:优化 Serverless 应用开发。
  • 跨平台:不依赖具体平台,灵活部署。
  • 全栈支持:前后端一体化,兼容多种前端框架。
  • 微服务架构:支持构建和管理微服务。
  • 组件化:模块化设计,便于扩展和维护。
  • 插件化工具:命令行工具支持插件,增强功能。
  • 依赖注入:简化组件之间的依赖管理。
  • 面向切面编程 (AOP):实现横切关注点的模块化。
  • 集成 ORM:使用装饰器进行事务管理,简化数据库操作。
  • 认证与授权:支持 OIDC 认证和 OAuth2 授权。
  • 状态管理:采用 rxjs 管理应用状态。
  • 多接口风格:同时支持 REST 和 RPC 接口。

快速开始

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

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

# 运行项目
cell serve

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

Quick Start

示例

文档

依赖注入

// 类对象注入
@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 '@celljs/mvc/lib/node';
import { Transactional, OrmContext } from '@celljs/typeorm/lib/node';
import { User } from './entity';
@Controller('users')
export class UserController {

@Get()
@Transactional({ readOnly: true })
list(): Promise {
const repo = OrmContext.getRepository(User);
return repo.find();
}
@Get(':id')
@Transactional({ readOnly: true })
get(@Param('id') id: number): Promise {
const repo = OrmContext.getRepository(User);
return repo.findOne(id);
}
@Delete(':id')
@Transactional()
async remove(@Param('id') id: number): Promise {
const repo = OrmContext.getRepository(User);
await repo.delete(id);
}
@Put()
@Transactional()
async modify(@Body() user: User): Promise {
const repo = OrmContext.getRepository(User);
await repo.update(user.id, user);
}
@Post()
@Transactional()
create(@Body() user: User): Promise {
const repo = OrmContext.getRepository(User);
return repo.save(user);
}
}

交流群

群二维码.png

状态

 title=

⬇️ 下载地址

喜欢就支持一下吧
点赞 0 分享 赞赏
评论 抢沙发
OωO
取消
广告