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

网友投稿 790 2022-10-24

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

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

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:数据结构排序系列之插入排序(一)
下一篇:Orbited- 浏览器间的实时通讯框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~