CNode

egg.js真的就不考虑用ts重写,对ts做更进一步的支持吗?

问答
Ddarrenliuwei发布于6 年前最后回复6 年前17 回复9544 浏览0 收藏

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

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

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

查看回复

回复 (17)

J
justjavac#1·6 年前

手动 @atian25

I
i5ting#2·6 年前

@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/

Y
yviscool#3·6 年前

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

D
darrenliuwei#4·6 年前
引用 i5ting@czy88840616 出来科普了 A future oriented web framework based on IoC and use Typescript to Improve th...

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

I
i5ting#5·6 年前
引用 darrenliuwei@i5ting 简单看了下midway,感觉用midway还不如用nest,而且midway的文档看着真的好难受

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

C
czy88840616#6·6 年前

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

W
waitingsong#7·6 年前

midway 对ts支持很不错了

H
HelTi#8·6 年前

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

W
waitingsong#9·6 年前
引用 HelTi复议,用ts重写是大势所趋。

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

G
Gitforxuyang#10·6 年前

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

H
HobaiRiku#11·6 年前

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

A
atian25#12·6 年前

其实我是没明白,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 写的吧,不然就原旨主义了。

A
atian25#13·6 年前

另外,多说两句。

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

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

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

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

L
liangtongzhuo#14·6 年前

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

Z
zuohuadong#15·6 年前
引用 liangtongzhuo不理解为啥 Egg 用 TS 重写,说了半天没说出任何理由。

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

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

A
abiuDoIT#16·6 年前

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

L
liangtongzhuo#17·6 年前
引用 zuohuadong@liangtongzhuo 准确来说是趋势吧。 前端来说,不论 angular,还是vue3 ,或者 react (那时候还没ts,所以flow),增强了可维护性,提示也会更加丰富。 后端来...

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

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

参与回复
登录后即可参与回复。登录