Midway 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Midway 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
Midway 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
Midway 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
Midway 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !

软件简介

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

    展开阅读全文

    代码

    的 Gitee 指数为
    超过 的项目

    评论 (7)

    加载中

    引用来自“ChengShuai”的评论

    刚才扫了一遍文档,果然跟egg有着千丝万缕得联系啊。我从前年的egg1.0开始,各个服务就全面切换为egg了,然后又在去年把egg框架下的js版逐步转为ts版,不知道midway和egg的ts版有多大优势。不管怎么说,先找机会用用看,百花齐放总是好的ᖗ乛◡乛ᖘ

    引用来自“左华栋”的评论

    egg 本身设计得有问题。 被nest.js 发布仅一年就反超了。 midway 学习了 nest.js 。
    可以仔细说说蛋蛋有啥问题嘛
    2019/01/14 16:58
    回复
    举报

    引用来自“鞋底两万里”的评论

    又是阿里不要的东西
    阿里不是家技术公司呀!
    2019/01/13 23:54
    回复
    举报
    又是阿里不要的东西
    2019/01/13 21:10
    回复
    举报
    阿里的东西都好用?
    2019/01/13 21:07
    回复
    举报

    引用来自“ChengShuai”的评论

    刚才扫了一遍文档,果然跟egg有着千丝万缕得联系啊。我从前年的egg1.0开始,各个服务就全面切换为egg了,然后又在去年把egg框架下的js版逐步转为ts版,不知道midway和egg的ts版有多大优势。不管怎么说,先找机会用用看,百花齐放总是好的ᖗ乛◡乛ᖘ
    egg 本身设计得有问题。 被nest.js 发布仅一年就反超了。 midway 学习了 nest.js 。
    2019/01/13 10:47
    回复
    举报
    跟java一样,这注解
    2019/01/13 10:41
    回复
    举报
    刚才扫了一遍文档,果然跟egg有着千丝万缕得联系啊。我从前年的egg1.0开始,各个服务就全面切换为egg了,然后又在去年把egg框架下的js版逐步转为ts版,不知道midway和egg的ts版有多大优势。不管怎么说,先找机会用用看,百花齐放总是好的ᖗ乛◡乛ᖘ
    2019/01/13 08:42
    回复
    举报
    更多评论
    发表于大前端专区
    2020/07/27 15:37

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

    Midway Serverless v1.0 发布之后,有不少同学来试用,提建议,感谢大家。 Github: https://github.com/midwayjs/midway, 开源为了前端和 Node.js 的发展,请到 Github 点 Star! Midway Serverless 在函数开发的部分提供了 一层特殊的防腐层,能让同样的代码,在不同的平台运行,即所谓的运行时适配。而如今,这层适配器不仅仅开发给函数,也开放给传统数以万计的应用,让它们能够快速的迁移到现有的云平台,享受弹性容器的红...

    0
    11
    发表于大前端专区
    2020/07/02 19:00

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

    Github: https://github.com/midwayjs/midway, 开源为了前端和 Node.js 的发展,请到 Github 点 Star! 去年阿里提出 Serverless 架构,并利用其新一代研发架构,减少了大量研发人员对基础设施和运维的关注。对前端开发者而言,他们只需写几个函数即可实现后端业务逻辑,推动业务快速上线,让整个前端研发效能提升 50%。 在过去的半年里,Midway FaaS 收获了很多同学的关注,也有不少大企业已经直接开始使用,在此感谢你们。今...

    37
    39
    发表于大前端专区
    2019/01/11 10:56

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

    双旦已过,新年将至,midwayJs 向大家献上贺礼。 之前我们向社区开放了我们的治理工具,也就是 Pandora.js 工具包,用于整个 Node.js 应用的监控和治理,我们承诺这不是结束,只是开源的开始。 随着内部全栈应用数的越来越多,以及阿里业务不断提升的复杂度,比如店铺,搭建以及渲染等服务,随着人员的不断调动,产品的结构,代码的层级都随着不断的调整,我们急需一个能降低代码复杂度的解决方案,帮助我们渡过人员寒冬,这就对...

    3
    24
    没有更多内容
    加载失败,请刷新页面
    点击加载更多
    加载中
    下一页
    发表了博客
    2020/12/16 09:46

    阿里 Midway 正式发布 Serverless v1.0

    Github:https://github.com/midwayjs/midway 去年阿里提出 Serverless 架构,并利用其新一代研发架构,减少了大量研发人员对基础设施和运维的关注。对前端开发者而言,他们只需写几个函数即可实现后端业务逻辑,推动业务快速上线,让整个前端研发效能提升 50%。 在过去的半年里,Midway FaaS 收获了很多同学的关注,也有不少大企业已经直接开始使用,在此感谢你们。今天,Midway FaaS 将演进为 Midway Serverless,并正式成为 ...

    0
    0
    发表于大前端专区
    2020/09/21 18:35

    云端一体,Midway 2.0 发布会邀约

    0
    0
    发表于大前端专区
    2020/07/09 17:54

    揭秘:Midway Serverless 如何让阿里前端提效 50%?

    本项目 Github: https://github.com/midwayjs/midway, 开源是为了给前端和 Node.js 的发展献一份力,还请到 Github 体验一下,并且帮忙点个 Star~ 🙇♂️ 感谢~ 上一篇大家对 50% 的数字有疑问,这一次作为后续,我们做一个回答和总结。 去年开始,阿里前端及集团多个团队联合开始了一项“秘密”任务,使用 Serverless 这一新一代研发架构,希望能大量减少研发人员使用基础设施和运维的成本。 为什么是 Midway Serverless? ...

    3
    4
    发表于大前端专区
    2019/12/04 21:25

    浅谈阿里 Node 框架 Midway 在企业产品中的应用实践

    什么是 Midway Midway(中途岛)品牌是淘宝技术部(前淘宝 UED)前端部门研发的一款基于 Node.js 的全栈开发解决方案。它将搭配团队的其他产品,Pandora 和 Sandbox,将 Node.js 的开发体验朝着全新的场景发展,让用户在开发过程中享受到前所未有的愉悦感。 Midway 基于 阿里 Egg.js 框架二开,将 IoC 引入到框架中,借鉴 Nest.js,引入丰富的装饰器方法,提升开发中的用户体验。 midway 的一些特性如下。 依赖注入( IoC ) 首...

    0
    0
    2020/07/06 13:28

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

    ![1.png](https://ucc.alicdn.com/pic/developer-ecology/72754ad2f2d34f19a7ecf92a07e60d20.png) > 开源为了前端和 Node.js 的发展,Github:[https://github.com/midwayjs/midway](https://github.com/midwayjs/midway),**点击直接跳转点 Star**。 去年阿里提出 Serverless 架构,并利用其新一代研发架构,减少了大量研发人员对基础设施和运维的关注。对前端开发者而言,他们只需写几个函数即可实现后端业务逻辑,推动业务快...

    0
    0
    2020/12/15 14:25

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

    ![1.png](https://ucc.alicdn.com/pic/developer-ecology/a2c23cc8a1054311b538bc5b43ced492.png) **Github:[https://github.com/midwayjs/midway](https://github.com/midwayjs/midway)** **开源为了前端和 Node.js 的发展,**[**点 Star**](https://github.com/midwayjs/midway)**!** 去年阿里提出 Serverless 架构,并利用其新一代研发架构,减少了大量研发人员对基础设施和运维的关注。对前端开发者而言,他们只需写几个函...

    0
    0
    发表于程序人生专区
    2020/07/03 19:30

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

    Github: https://github.com/midwayjs/midway, 开源为了前端和 Node.js 的发展,【阅读原文】直接跳转点 Star。 去年阿里提出 Serverless 架构,并利用其新一代研发架构,减少了大量研发人员对基础设施和运维的关注。对前端开发者而言,他们只需写几个函数即可实现后端业务逻辑,推动业务快速上线,让整个前端研发效能提升 50%。 在过去的半年里,Midway FaaS 收获了很多同学的关注,也有不少大企业已经直接开始使用,在此感谢...

    0
    0
    发表了博客
    2020/07/10 15:33

    阿里自研开源框架 Midway Serverless ,如何让前端提效 50%?

    云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! Midway Serverless Midway 之前是传统的 Web 栈框架,和业界现有的 EggJS,NestJS 等解决的是类似的问题,从中后台到移动端应用,前端都广泛采用了这些框架来构建自己的业务系统。阿里也不例外,Node.js 应用非常多,但是这些系统有一个共性,大多数服务器的 CPU 使用率非常低,这无疑是一种资源的巨大浪费。 这种资源浪...

    0
    0
    发表于程序人生专区
    2020/07/09 19:30

    阿里自研开源框架 Midway Serverless ,如何让前端提效 50%?

    作者 | 陈仲寅 策划 | 叶兰 *以下文章来源于“前端之巅“公众号,经原作者授权刊出(作者:陈仲寅,策划:叶兰)。 去年开始,阿里前端及阿里的多个团队联合开始了一项“秘密”任务,使用 Serverless 这一新一代研发架构,希望能大量减少研发人员使用基础设施和运维的成本。目前这一框架已经实现前端提效 50%,且已在 Github 开源,开源地址见文末。。 Midway Serverless Midway 之前是传统的 Web 栈框架,和业界现有的 EggJS,...

    0
    0
    2014/06/10 10:45

    测试 Services / Factories

    **测试目的** - 独立测试服务,找出 bug 和 error 。 - 测试不需要 stubbing 处理 XHR 请求。 ---------- 测试服务是最开心快乐的事情了。用单元测试或者 Midway 测试服务,因为你可以用各种姿势( 参数, 返回值, 异常,之类... )玩它。记住,单元测试和 Midway 测试在这个例子里面非常相似,但是如果你的服务有 XHR 请求,用到 $http 服务,然后你可以抓取这个请求,然后中断它,然后用 Mock 的模拟数据重写返回值,让单元测试...

    0
    0
    没有更多内容
    加载失败,请刷新页面
    点击加载更多
    加载中
    下一页
    发表于大前端专区
    2019/01/14 17:16

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

    双旦已过,新年将至,midwayJs 向大家献上贺礼,首先奉上地址: https://github.com/midwayjs/midway/,欢迎 star ✨✨✨。 之前我们向社区开放了我们的治理工具,也就是 Pandora.js 工具包,用于整个 Node.js 应用的监控和治理,我们承诺这不是结束,只是开源的开始。 随着内部全栈应用数的越来越多,以及阿里业务不断提升的复杂度,比如店铺,搭建以及渲染等服务,随着人员的不断调动,产品的结构,代...

    1
    1
    发表了问答
    2019/01/12 20:38

    【一周热点】调查显示 3% 开发者修仙 | 手脚数不过来,Linux 内核开始 5.x 系列

    回顾一周社区热门资讯与你的精彩留言~ 第【十】期:0105-0111 精彩回复 from: 8 年后重登王座,Python 再度成为 TIOBE 年度编程语言 --- from: walle 2.0.0 正式发布,可能是春节前最良心的免费开源部署工具 --- from: 欧盟百万欧元悬赏开源软件漏洞惹争议,被评本末倒置 --- from: PrimeNG 7.0.4 正式发布,强大的 Angular UI 组件库 --- from: 夜猫子福音,Android Q 有望推出全局黑暗模式 --- from: 微软真的拥抱开源了吗? ...

    3
    1
    没有更多内容
    加载失败,请刷新页面
    点击加载更多
    加载中
    下一页
    7 评论
    88 收藏
    分享
    OSCHINA
    登录后可查看更多优质内容
    返回顶部
    顶部