egg.js真的就不考虑用ts重写,对ts做更进一步的支持吗?
发布于 5 年前 作者 darrenliuwei 8014 次浏览 来自 问答

最近开始入手typescript,感觉是真的香,然后也开始用ts版的egg,但是感觉好像对ts不是特别的友好。

很多人一直都说nest对ts支持最好了,然后我也看了下nest.js,但是感觉还是更喜欢egg.js的风格。

真希望egg.js能对ts的支持更进一步。

17 回复

@czy88840616 出来科普了

A future-oriented web framework based on IoC and use Typescript to Improve the efficiency of full stack application development https://midwayjs.org/midway/

https://github.com/midwayjs/midway/

重写是不可能的,这辈子都不可能重写的。 自己重写没钱没kpi,就是打打补丁才能维持的了生活这样子。 用js就像回家一样,any就是一把梭,写得又漂亮,我超喜欢的!

@i5ting 简单看了下midway,感觉用midway还不如用nest,而且midway的文档看着真的好难受~

@darrenliuwei 他是基于egg生态的,再细细看看他的依赖模块

@darrenliuwei midway 目前是基于 egg + ioc 的组合模式,目前也在探索其他方面(faas,orm) 的可能性,如果有问题,可以加我微信 (czy88840616,文档难受也可以反馈一下,我看看怎么优化)

midway 对ts支持很不错了

复议,用ts重写是大势所趋。

@HelTi 基本不可能啦。 egg那种框架用ts重写估计很痛苦,直接用 midway 吧

egg虽然没有用ts重写。但是你可以选择ts模式开发啊。 不过实话说ts也没那么爽。日常用起来问题也挺多

如果是为了ts开发,egg完全没必要重写,从egg刚有不久到现在,还真没用过原生js写过egg。egg提供的ts工具很完善啊,代码提示已经不是两年前什么都缺什么都any了。

其实我是没明白,Egg 本身内部代码用不用 TS 写,有什么问题么?收益是什么? 是大家都在给 Egg 提交 PR 代码,想参与到 Egg 内部代码维护,发现维护性不行,希望 Egg 是 TS 写的?

Egg 本身用 TS 写,和你用 TS 写 Egg 应用,是两件事来着,后面那个一直都是支持的。

当然,我猜测题主的意思是,应用开发层用 TS 来写 Egg 应用。那这块目前有什么问题么?

  • 如果是觉得官方插件的 tsd 不全,这块欢迎大家提下 PR。
  • 或者只是因为少了上层的装饰器?这块社区也有一些如 Midway 的实践,直接用不就好了?
  • 或者自己封装下 decorator 就好了吧?这块大家的口味都不一样,不一定要追求官方出的。有信心的同学完全可以写一个 npm 包来成为事实标准的。

Egg 的定位就是框架的框架,它只是定义了一套 Loader 规范,然后附带了一些常用的插件而已。我们提供了上层框架封装机制,它本身也是为了方便团队架构师封装上层框架出出现的,所以大家完全可以类似 midway 那样定制自己的框架的。就像 nest 也不会要求它底层依赖的所有模块,包括 Koa 和 Express 重构为 TS 写的吧?

实际日常 issue 咨询中,其实我遇到更多的是,不熟悉 TS 的,完全没了解 TS 装饰器也不了解 declare merging 原理的同学,来写 TS。老实说,即使不写 Egg,写其他框架,一样会遇到问题。用 TS 写 egg 的前提是,你必须掌握 TS 的基础知识。我想,TS 粉不会追求所有的肉眼可见的东西都同化为 TS 写的吧,不然就原旨主义了。

另外,多说两句。

我们本身其实是 2 个角色的,一个是 Egg 官方维护者,一个是 Egg 社区生态插件维护者。

前者主要是维护 Egg 核心部分,这块上面也说了,主要是 Loader 规范,这个其实没那么复杂,已经很稳定了。后续会在 Serverless 这种新场景下的一些进程模型等方面做一些优化。

后者,我们跟大家是一个角色的,都是社区的一份子,来贡献插件。我们写的插件有好有坏,有一些经过历史验证发现不适合我们,或者我们日常工作用不上,那也会放弃维护。这就是开源社区的运行规则,我们并不比社区的同学们高贵,我们跟大家一样遵循同样的原则和约束 。

PS:最近会少参与一点社区,一方面是回馈有点少牛皮癣有点多,性价比不高;另一方面是 SFF 结合 Egg 这个领域有太多要做的事,忙不过来,还是专心沉淀。就像 Egg 当年也是内部实践了几年后才放出来的最佳实践。

不理解为啥 Egg 用 TS 重写,说了半天没说出任何理由。

@liangtongzhuo 准确来说是趋势吧。 前端来说,不论 angular,还是vue3 ,或者 react (那时候还没ts,所以flow),增强了可维护性,提示也会更加丰富。 后端来说,其实更需要 ts,比如 adonisjs 都开始用 ts 重写了,比如 loopback4 也用 ts 重写了,又比如最近增长非常迅猛的 nest.js ,最起码说明,大家还是需要 类似spring 这样的重型框架的,也一定程度上说明,ts 的好处显而易见。

换句话说,就是 AOP 面向切面编程思想,只有在 ts 加持后,才能体现得淋漓尽致。 当然,AOP 也并不一定适合小项目或小的团队,也不是所有人喜欢这套编程思想,并不是银弹。

我自己用起来是觉得eggjs的ts支持够用了. 该有的基本都有. 所以楼主还是具体说说哪方面支持不够吧?可能已经有轮子了

@zuohuadong 我也在用 nest 其实 ts 用起来也不错。 Egg 虽然是 js 写的框架,但是用 ts 写应用也没有问题,提示都有。

如果 Egg 要上 AOP,那大概率上 TS 重写。目前来说完全够用,就因为应用 ts 写的,框架就上 ts 理由太牵强了。

回到顶部