- 授权协议: MIT
- 开发语言: TypeScript
- 操作系统: 跨平台
- 软件首页: https://github.com/midwayjs/midway
- 软件文档: https://github.com/midwayjs/midway
- 官方下载: https://github.com/midwayjs/midway
软件介绍
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 等好用的装饰器。
UNIX编程艺术
[美] Eric S. Raymond / 姜宏、何源、蔡晓骏 / 电子工业出版社 / 2012-8 / 99.00元
《UNIX编程艺术》主要介绍了Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验,由公认的Unix编程大师、开源运动领袖人物之一Eric S.Raymond倾力多年写作而成。包括Unix设计者在内的多位领域专家也为《UNIX编程艺术》贡献了宝贵的内容。《UNIX编程艺术》内容涉及社群文化、软件开发设计与实现,覆盖面广、内容深邃,完全展现了作者极其深厚的经验积累和领域智慧。一起来看看 《UNIX编程艺术》 这本书的介绍吧!
