Midway 基于 IoC 的 Web 全栈开发框架开源项目

我要开发同款
匿名用户2019年01月11日
65阅读
开发技术JavaScriptTypeScript
所属分类Web框架、Web应用开发
授权协议MIT

作品详情

Midway是一个适用于构建Serverless服务,传统应用、微服务,小程序后端的Node.js框架。

Midway可以使用Koa,Express或Egg.js作为基础Web框架。它还提供了独立使用的基本解决方案,例如Socket.io,GRPC,Dubbo.js和RabbitMQ等。

此外,Midway也适用于前端/全栈开发人员的Node.js无服务器框架。构建下一个十年的应用程序。可在AWS,阿里云,腾讯云和传统VM/容器上运行。与React和Vue轻松集成。

Midway的一些特性。

全功能:支持Web应用/Serverless/FaaS/微服务/小程序后端等多种场景,基于装饰器和依赖注入开发企业级应用前端集成:全新的云端一体应用研发体验,零API调用,使用"ReactHooks"风格一体研发跨平台:支持部署至普通Server或Serverless/FaaS环境扩展:组件化扩展能力,另外支持使用Koa/Express/Egg.js生态插件示例:官方提供多种场景的示例代码,方便开发者快速上手TypeScript全面支持创建新应用

使用midway-init工具自动创建midway应用的目录结构:

$ npm i midway-init -g$ midway-init

目前只有一个ts的脚手架,可以直接使用。

通过生成的npmscripts来驱动启动命令:

$ npm install$ npm run dev快速开发引导

想要快速上手midway,除了需要了解一些基础的东西:

虽然可以直接用js的语法书写,但是你最好了解Typescript,这里有个快速介绍。

尽可能使用面向对象的思想来编码,它的经久不衰是有道理的,使用class机制能够方便的融入我们的新特性。

了解midway的依赖注入体系,以及常用的装饰器,这里做了依赖注入的介绍。

如果你在midway的文档中没有找到你想要的东西,记住可以去Egg的文档找找,或者向我们提Issue。

代码风格

我们将依赖注入引入到了复杂业务中,经过各种装饰器的包装,业务的同学们可以更加专注的在业务领域,而不用关心依赖的实例化,初始化。

简单的例子。

@provide()@controller()export class HomeController {  @inject()  reportService: IReportService;    @get('/')  async index(ctx) {    ctx.body = await this.reportService.getReport();  }}@provide()class ReportService implements IReportService {  @inject()  reporter: IReportManager;    async getReport(id: number) {    return await this.reporter.get(id);  }}

上边的代码中我们展示了两个class,HomeController依赖了ReportService,很常见的写法,可以看到其中没有任何实例化或者初始化的迹象,业务代码也如同普通调用的那样直接,这都归功于依赖注入的魔法。

经过装饰器的修饰,形成了多个类,但是又不会相互耦合的局面,让独立开发,测试都非常的方便。

除了以上的装饰器,我们还开发了@schedule@init@plugin等好用的装饰器。

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论