TieJS: 一个基于 TypeScript 的个人级 Node.js 框架

2021-05-18 11:45:47 +08:00
 forsigner

这个一个我个人开发 Node.js 框架,一个基于 TypeScript 的 Node.js 框架,底层基于 Koa 和 TypeDI,核心特性是使用依赖注入组织应用代码。

项目地址: https://github.com/forsigner/tie

为什么开发 TieJS,我刚开始用了两年多 Egg.js ,但是由于其对 TypeScript 支持过于弱(还有其他原因略过),放弃 Egg.js 了,尝试使用了一个月 NestJS,由于其概念过于多、使用繁琐等原因也放弃了,所以开发了 TieJS,前后大概开发和维护了一年多时间。

我自己是 TypeScript 和 GraphQL,并且相比 Express,我更喜欢 Koa 的中间件系统,所以开发了 TieJS,核心特性是使用依赖注入组织应用代码,还有一个就是内置 GraphQL 的支持。

Tie 意为绳子,在 TieJS 中,最核心的单元是一个个 Injectable 的模块,通过依赖注入这根绳子,你可以有序地组织一个复杂的项目。也放弃了 NestJS 引入 Node 社区所有复杂的概念。

一些特性

TypeScript, 全面拥抱 TypeScript 依赖注入,易于编写可维护、可测试的代码 基于 Koa,易于可以复用 Koa 中间件生态 开箱即用,零配置开始项目 插件体系, 易于扩展

核心技术

TieJS 使用下面这些开源技术:

这个框架因为个人原因,特性更新的比较慢,欢迎有兴趣的人一起维护和开发,如果有人有兴趣,我会把代码库转移到一个 Github 组织,并且开放开发权限,可以加我微信:ziyi-314,当然加微信普通交流也可以 哈哈

3055 次点击
所在节点    程序员
33 条回复
forsigner
2021-05-18 16:35:37 +08:00
@agdhole 跑不了,实际只是 koa 的上层封装而已
forsigner
2021-05-18 16:38:15 +08:00
@yoa1q7y 不会,Guards 、Pipes 、filters 等东西在中间件处理已经很优雅,也很好理解,没必要创建那么多概念,而已它们之间还有功能交集,很容易让人困惑
yoa1q7y
2021-05-18 16:45:16 +08:00
@forsigner 然而 nest.js 官方文档对于每个概念也给出了充足的解释为什么要这么划分,每个概念有不同的使用场景。这么做确实提高了使用门槛和加大了理解难度,但是对于大型项目和多人合作项目,nest 这么做应该是有好处的
chogath
2021-05-18 17:38:05 +08:00
@forsigner 个人用的,不就是玩具么 - -
EPr2hh6LADQWqRVH
2021-05-18 17:53:08 +08:00
挺好,我大概三年前也是和你类似的想法。

但我现在根本不拘泥于 HTTP 了,大家都只是 RPC 。

所以 Nest.js 和你这个我觉得都存在一个问题,只是程度不一样,就是太 HTTP 了。

抛弃掉路径的概念,整个过程更简单,更适合装饰器和类写法。

我现在用得最爽的是参数类,运行时自动类型检查和过滤。
chogath
2021-05-18 17:56:06 +08:00
@avastms +1,所以用 go 写了 😺
soshao1188
2021-05-20 10:11:36 +08:00
我准备入坑你这个框架,搞个群大家多交流下。有问题也好解决啊
soshao1188
2021-05-20 16:22:25 +08:00
@forsigner 请问在吗?
forsigner
2021-05-20 19:23:37 +08:00
@yoa1q7y 所以每个人偏好不一样,就像有人喜欢 React,接受不了 Angular
forsigner
2021-05-20 19:24:34 +08:00
@chogath 个人用的也可以不是玩具 哈哈 不过请忽略标题...
forsigner
2021-05-20 19:25:27 +08:00
@avastms web 项目大部分还是只能 http
forsigner
2021-05-20 19:26:18 +08:00
@soshao1188 可以啊,那我建个群
forsigner
2021-05-20 19:32:36 +08:00
@soshao1188 群有了,看文字结尾

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/777644

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX