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

MIT
TypeScript
跨平台
2019-01-11
陈仲寅

Midway 是 阿里巴巴淘宝技术部 MidwayJs 团队产出的第二款产品,也是以团队名命名的核心产品 - Midway。

Midway 是一个 Typescript 编写的 Node.js web 框架,它通过 IoC 的注入机制,让应用的业务逻辑进行解耦,让大型 Node.js 应用开发变的更加简单自然。

Midway 的一些特性。

  • 基于 IoC 体系业务代码进行解耦,依赖统一管理统一初始化

  • 常见的 web 场景装饰器简化业务开发

  • 支持 Egg.js 的所有插件体系,框架装饰器统一编码风格

  • 基于 Typescript ,面向接口编程的编码体验

 

创建新应用

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

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

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

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

$ 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 等好用的装饰器。

    的码云指数为
    超过 的项目
    加载中
    此软件有 7 条评论,请先登录后再查看。

    Midway Serverless 发布 v1.1,支持传统应用一步上云

    Midway Serverless v1.0 发布之后,有不少同学来试用,提建议,感谢大家。 Github: https://github.com/midwayjs/midway, 开源为了前端和 Node.js 的发展,请到 Github 点 Star! Midway S...

    07/27 15:37

    阿里 Midway 正式发布 Serverless v1.0,研发提效 50%

    Github: https://github.com/midwayjs/midway, 开源为了前端和 Node.js 的发展,请到 Github 点 Star! 去年阿里提出 Serverless 架构,并利用其新一代研发架构,减少了大量研发人员对基础设...

    07/02 19:00

    Midway v1.0 正式发布 - 面向未来的全栈开发方案

    双旦已过,新年将至,midwayJs 向大家献上贺礼。 之前我们向社区开放了我们的治理工具,也就是 Pandora.js 工具包,用于整个 Node.js 应用的监控和治理,我们承诺这不是结束,只是开源的开始...

    2019/01/11 10:56

    没有更多内容

    加载失败,请刷新页面

    没有更多内容

    1
    回答
    midway v1.0 社区正式发布 - 面向未来的全栈开发方案 会有未来吗?

    双旦已过,新年将至,midwayJs 向大家献上贺礼,首先奉上地址: https://github.com/midwayjs/midway/,欢迎 sta...

    2019/01/14 17:16
    4
    回答
    【一周热点】调查显示 3% 开发者修仙 | 手脚数不过来,Linux 内核开始 5.x 系列

    回顾一周社区热门资讯与你的精彩留言~ 第【十】期:0105-0111 精彩回复 from: 8 年后重登王座,Python 再度成为 TIOBE 年度编程...

    2019/01/12 20:38

    没有更多内容

    加载失败,请刷新页面

    没有更多内容

    Serverless,标准化,Midway FaaS 以及近况

    好久不见,我来了。 最近有不少小伙伴们在询问 Midway FaaS 的近况,毕竟从去年年底发布之后就一直在迭代,Midway FaaS 一直在朝着原来的目标前进,能力也日益强大,并且越来越成熟和稳定,在...

    05/20 21:22
    33
    0
    揭秘:Midway Serverless 如何让阿里前端提效 50%?

    本项目 Github: https://github.com/midwayjs/midway, 开源是为了给前端和 Node.js 的发展献一份力,还请到 Github 体验一下,并且帮忙点个 Star~ 🙇♂️ 感谢~ 上一篇大家对 50% 的数字有...

    07/09 17:54
    6K
    0
    阿里 Midway 正式发布 Serverless v1.0,研发提效 50%

    Github: https://github.com/midwayjs/midway, 开源为了前端和 Node.js 的发展,【阅读原文】直接跳转点 Star。 去年阿里提出 Serverless 架构,并利用其新一代研发架构,减少了大量研发人员...

    07/02 20:11
    31
    0
    浅谈阿里 Node 框架 Midway 在企业产品中的应用实践

    什么是 Midway Midway(中途岛)品牌是淘宝技术部(前淘宝 UED)前端部门研发的一款基于 Node.js 的全栈开发解决方案。它将搭配团队的其他产品,Pandora 和 Sandbox,将 Node.js 的开发体验朝...

    2019/12/04 21:25
    19
    0
    阿里 Midway 正式发布 Serverless v1.0,研发提效 50%

    开源为了前端和 Node.js 的发展,Github:https://github.com/midwayjs/midway,点击直接跳转点 Star。 去年阿里提出 Serverless 架构,并利用其新一代研发架构,减少了大量研发人员对基础设...

    07/06 13:28
    74
    0
    阿里自研开源框架 Midway Serverless ,如何让前端提效 50%?

    云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! Midway Serverless Midway 之前是传统的 Web 栈框架,和业界现有的 EggJS,NestJS ...

    07/10 15:33
    50
    0
    揭秘阿里 Node.js 框架 Midway Serverless 如何做到提效 50%?

    本项目 Github: https://github.com/midwayjs/midway, 开源是为了给前端和 Node.js 的发展献一份力,还请到 Github 体验一下,并且帮忙点个 Star~ 🙇♂️ 感谢~ 上一篇大家对 50% 的数字有...

    07/10 08:00
    53
    0
    测试 Services / Factories

    向作者学习。http://www.yearofmoo.com/2013/01/full-spectrum-testing-with-angularjs-and-karma.html#testing-services-factories...

    2014/06/10 10:45
    81
    0
    从微服务到 Serverless | 开源只是开始,终态远没有到来

    开源只是开始,终态远没有到来。 从微服务开源,到 Serverless 开源,我们正持续将阿里沉淀的技术能力进行开放。 只是这一次不同的地方在于,借助 Serverless 能力的释放,将帮助前端进入一个...

    08/08 11:44
    12
    0
    从微服务到 Serverless | 开源只是开始,终态远没有到来

    开源只是开始,终态远没有到来。 从微服务开源,到 Serverless 开源,我们正持续将阿里沉淀的技术能力进行开放。 只是这一次不同的地方在于,借助 Serverless 能力的释放,将帮助前端进入一个...

    08/07 17:04
    27
    0

    没有更多内容

    加载失败,请刷新页面

    返回顶部
    顶部