js 装饰器_Midway 1.0正式发布:Node.js写法Java化

c5c12d9f73dc57c832984b028ccf0428.png

ES(据说是12,我以为是6)引入了Decorator这项功能,很早之前 Babel 转码器已经支持Decorator,简单来说,Decorator“装饰”了类、方法、访问器、属性和参数——“它”是指类装饰器、方法装饰器、访问器装饰器、属性装饰器和参数装饰器。

下面代码中,@testable就是一个修饰器。它修改了MyTest这个类的行为,为它加上了静态属性isTestable

```

@testable

class MyTest {

// ...

}

function testable(target) {

target.isTestable = true;

}

MyTest.isTestable // true

```

如果大家写过Java Web开发,尤其是用过Spring的同学,就会知道这种写法和Java Annotation(注解)一模一样。在ts里有更进一步的增强:Class Descriptor 和 Element Descriptor,以及对 Private Fields 的访问支持等。

如果说,只有注解,那py里也有,不算什么。如果再加上ioc呢?

年底最大的瓜,大概是淘宝Node.js团队开源的https://github.com/midwayjs/midway/。Midway 正式发布1.0,将 IoC 引入到了框架中,同时学习了 NestJs ,引入了不少自定义的装饰器,增强开发体验,也将搭配团队的其他产品,Pandora.js 和 Sandbox,将 Node.js 的开发体验朝着全新的场景发展,让用户在开发过程中享受到前所未有的愉悦感。

下面来介绍新版本 midway 的一些特性。

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

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

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

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

得益于 Typescript 对 ES6 的良好支持,提供了一种为类声明和成员添加注释和元编程语法的方法。装饰器作为TypeScript的实验性功能能够让我们在开发中简化代码。虽然是语法糖,但是带来的好处却不少。

我们拿一个简单的例子,从 Controller 一步步经过 Service/Manager 向数据库拿数据,在多层的架构体系下,以往的代码大概率需要 new 出不同的实例,并且需要绑定到路由层,这边为了方便理解,代码放到了一起。

```

export = (app) => {

const home = new HomeController();

app.get('/', home.index);

}

class HomeController extends Controller {

reportService: IReportService;

constructor() {

this.reportService = new ReportService();

}

async index(ctx) {

ctx.body = await this.reportService.getReport();

}

}

class ReportService implements IReportService {

reporter: IReportManager;

constructor() {

this.reporter = new ReporterManager();

}

async getReport(id: number) {

return await this.reporter.get(id);

}

}

class ReporterManager implements IReportManager {

db;

constructor() {

this.initDB();

}

initDB() {

// open connection

}

async get() {

// return data from db;

}

}

```

面向对象,注解,ioc,接口,所有的这些表现都越来越贴近Java企业级编程。我的感觉是喜忧参半,写法上贴近也许是好事,能够简化开发,同时吸引一部分Java同学。但缺点也是比较明显的,对开发技能要求相对有一定要求,与Java同质化过于明显,到底能吸引多少人呢?

无论如何,前端TS化已经确定了,Node.js服务端也必然会跟上,我还是更愿意相信,Midway是新年里一个极好的开始。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值