什么是 Malagu
Malagu 是基于 TypeScript 的 Serverless First、组件化的渐进式应用开发框架。使用同一套编程语言和 IoC 设计,用于开发前端、后端和先后端一体化应用。而且结合了 OOP(面向对象编程)、AOP(面向切面编程)等元素,借鉴了不少 Spring Boot 设计思想。前端
在后端,Malagu 抽象一套接口,方便适配任意的平台和基础框架,是一个平台或基础框架无关的上层框架。平台如阿里云函数计算、腾讯云云函数、Vercel 等,基础框架如 Express、Koa、Fastify 等。node
在 Serverless 场景,Malagu 是以应用为单位开发项目,一个应用通常包含多个 API 接口。若是咱们的应用很大,咱们应该将大应用拆解成一个个小的微应用或者微服务。就像微服务架构的粒度拆分原则同样,合理的粒度拆分,对咱们的应用管理是有不少好处的。框架会保证一个应用在一个函数中的运行性能。git
为何须要 Malagu
坚信 Serverless 是将来
Serverless 是云计算新一代计算引擎,为取代传统云服务器架构而生。Serverless 核心理念是让开发者不用关心服务器的存在,专一于业务代码。github
Serverless 现状如何
如今,全部云厂商和社区都在大力推广和布道 Serverless 理念,经过 Serverless 能够低成本高质量快速落地商业方案。目前,你们广泛认为 Serverless = FaaS + BaaS,将来也多是其余的形态,无论形态如何变化,Serverless 的核心理论是不变的。全部 Serverless 的开发体验关键在 FaaS 的开发体验,而 FaaS 目前开发体验不是很理想,存在着不少的疼点,短期内在 FaaS 底层上很难解决,好比冷启动、数据库访问、本地开发调试运行、平台无关等等。数据库
如何解决这些痛点
咱们能够换一个思路,从开发框架层面尝试解决这些问题(事实证实,能够经过开发框架来解决这些问题)。那么,咱们面临新的抉择是采用传统框架,仍是须要一个全新的框架?若是选择作一个新框架,那么,咱们是选择特定编程语言,仍是通用编程语言?npm
为何须要一个全新的框架
传统框架在开发体验上,你们确定是接受的,毕竟已经使用了这么多年。可是传统框架开发的应用在迁移到 Serverless 环境时,每每会遇到各类各样难以解决的问题,这些问题每每是与框架底层设计密切相关。虽然咱们能够经过框架扩展能力去解决或者缓解部分问题,实践下来的结果是框架改造门槛很高、效果不太理想、须要 Hack,不够优雅。当您在 Serverless 采用传统框架时,您每每会感受虽然应用能够跑起来,可是真正应用到生产级别您会有顾虑。全部咱们须要一个全新的、Serverless Fisrt 的开发框架。只有这样才能极大发挥 Serverless 优点,并让 Serverless 开发体验超越传统开发体验。编程
为何选择特定编程语言
目前,开源社区也存在很多语言无关的 Serverless 工具或框架,好比 Funcraft、Serverless Framework、Vercel 等等。这类通用语言型 Serverless 工具在运维层面确实能够作到不错的体验,也能够造成通用的标准。可是,在应用代码开发、调试、运行等开发体验上不那么理想。每种编程语言在开发、调试和运行等方面都有本身独特的地方,通用语言型 Serverless 工具很难作到统一,且开发体验还能作到很好。只有选择特定的编程语言,才能让开发、调试和运行等方面的体验达到极致。后端
为何选择 Typescript
Serverless 让后端开发门槛变得极低,前端开发者基于 Serverless 开发后端应用学习成本也极低。将来愈来愈多的前端开发者成为全栈开发者。Typescript 既能够开发前端,又能够开发后端,对于前端或者全栈的开发者来讲十分友好。浏览器
前端架构其实就是一种类 Serverless 架构,好比前端浏览器须要加载前端代码来执行,而 Serverless 场景也须要加载用户的代码来执行。所以,前端的不少解决方案自然适合 Serverless 场景,好比前端经过打包、压缩、Tree Shaking 来减小代码体积,减小代码部署和冷启动时间。一样,该优化方案也适用与 Serverless 场景,因此选择 Typescript,则至关于直接拥有了通过无数真实场景打磨的现成解决方案。bash
另外,Typescript 和 Java 很接近,Java 开发者也能很方便切换到 Typescript 技术栈。
Malagu 带来的价值
Malagu 是基于 TypeScript 的 Serverless First、可扩展和组件化的渐进式应用开发框架。Malagu 屏蔽掉不一样 Serverless 平台底层细节和 Serverless 场景存在的大部分痛点。Malagu 基于真实业务场景打磨,提供生产级别可用的解决方案。提供多云解决方案,云厂商不锁定。
如何使用 Malagu
Malagu 框架是由一系列组件组成,每个组件其实就是一个 node 模块,根据您的业务场景选择合适的组件,您也能够基于组件机制开发属于本身的组件。为了快速开发,Malagu 提供了一个命令行工具,命令行工具内置不一样场景的开箱即用的模板,经过命令行工具能够快速建立您的应用。首先,咱们须要安装相关命令行工具:
$ npm install -g yarm # 框架默认推荐使用 Yarn 工具,您也可使用 Npm $ npm install -g @malagu/cli # 安装 Malagu 命令行工具 $ malagu init project-name # 使用命令行工具 malagu init 命令,选择一个模板,初始化一个模板应用 $ cd project-name # 进入到应用的根目录 $ malagu serve # 启动应用,默认端口为 3000
打开浏览器并导航到 http://localhost:3000/。
支持咱们
Malagu 是 MIT 许可的开源项目。须要优秀人士的支持使它不断发展。若是您想加入咱们,请联系咱们,咱们的邮箱是 kevin@cellbang.com。