背景
早期,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