用 TypeScript 作为一个后端开发,需要哪些技术栈?

2019-07-04 18:17:22 +08:00
 yuankui
8487 次点击
所在节点    程序员
23 条回复
cubecube
2019-07-04 18:29:26 +08:00
何必为难自己
Oktfolio
2019-07-04 18:55:57 +08:00
Koa2 MongoDB Express MySQL
ruyuejun
2019-07-04 18:56:01 +08:00
后端开发相较于前端来说,并不受语言本身的制约,顶多会因为该语言的生态而使开发变得困难抑或简单。
所以我个人认为更合理的提问应该是后端的技术栈包含什么,这个问题的答案处处皆是。
楼主也有可能问的是类似:TypeScript 在后端开发场景中有哪些常见框架与技术?
这就很难回答了,换做 Java,立刻能回答出:SSM,Springboot,Netty。
TS 目前在并不能作为一个独立意义的语言,最终仍然被编译为 JS,也即题目的最终结果变成了 NodeJS 在后端开发中,有哪些技术栈?
答案:
express,koa,egg,nest,midway,
他们都可以使用 ts 进行开发并编译为 js,但是 nest 本身基于 TS,可以直接使用 TS 开发;
最后可以关注下 deno,内置了 ts 的运行时,未来如果诞生基于 deno 的一系列开发框架,才算是真正意义上的 TS 技术栈
Cbdy
2019-07-04 19:05:58 +08:00
Koa,Linux,Sequelize,MySQL,Docker,Nginx,Node.js
impl
2019-07-04 19:14:49 +08:00
deno 撸起
love
2019-07-04 19:41:13 +08:00
用 typescript 做后端比 python/ruby/php 这种没类型检查的舒服得多,和 java 比也更轻量简单,有些人不知道在酸什么
shawndev
2019-07-04 19:44:31 +08:00
一个 nodejs 版本。
一个后端框架。koa/express
一个 web 服务器。nginx
一个数据库。mongodb/mysql
Torpedo
2019-07-04 20:40:47 +08:00
中间件不熟悉,那还是 express 开始。
熟悉即可以 express,还能 nestjs
ntop
2019-07-04 21:34:01 +08:00
写后端用 ts 太为难了,有大把好用的语言可以选,java/go/pyhton... 都不错. 用 ts 有点非主流的感觉.
yuankui
2019-07-05 09:21:40 +08:00
@ruyuejun 不要在意这些细节,你懂我就行😆
yuankui
2019-07-05 09:23:01 +08:00
@cubecube 你不懂用 Java 写个高并发,多么为难自己吗?
协程多爽,不知道?
yuankui
2019-07-05 09:34:40 +08:00
Java:netty 虽然能写出高并发的网络程序,但是始终不如协程这种顺序编码范式可读性好。
Go:他的语法,错误处理,类型系统设计的不是很符合我个人的审美标准,用着难受。。虽然协程写起来很爽
python:好几次放弃是因为集合处理不太符合我的审美,依我看,scala 那种的集合框架设计得是最优雅的。比如要把一个 list<object>转成 map<id, object>,java-stream 就能很好,顺畅,不打嗝的完成,scala 更不用说。
dart:我觉得还是有一线希望的。毕竟他就是 Java+协程的结合体。如果自省能整好一点,写个跟 spring-boot 类似的框架,不会太难。
js/ts:协程整的很爽啊,事件循环机制,ts 包装下的 js,更加符合 java 的审美,又有类型系统,代码提示,编译时错误检测也更加智能。而且,在能保证安全的前提下,可以放弃类型检测。( dart 应该是从这里学来的?还是 obj-c ?)

php ??是最好的语言,不想解释,反正我不用。

欢迎指正。
ericgui
2019-07-05 09:55:28 +08:00
ts 有 js 的灵活,又有大型应用该有的东西,为什么很多人 diss 呢

无非是工作量不饱和罢了
yuankui
2019-07-05 10:01:21 +08:00
@Torpedo 刚刚大致看了下,跟 nestjs 有点 spring-mvc 的影子。。感觉设计的还很不错,可以深入研究学习下。
ciki
2019-07-05 10:52:18 +08:00
说到协程,kotlin 了解一下
silentt
2019-07-05 12:51:44 +08:00
恕我直言,nodejs 搞后端就是纯垃圾,完整的事务解决方案没有,分布式领域没任何建树,v8 虚拟机和 jvm 比就是个大玩具。
yuankui
2019-07-05 15:09:44 +08:00
donlxn22
2019-07-05 15:10:35 +08:00
我在微软使用 TypeScript 开发了 Azure Storage JS SDK,SDK 可以在前端浏览器环境中使用,或者后端 Node.js 使用。

说实话,一旦开始使用 TS,就很难再回到 JS。尤其是需要多人协作的大型项目。无论 JS 前端还是 Node.js 后端,TS 可以避开很多 JS 的坑。比如 TS 编译可以选择输出的 ECMA 版本,以及输出的 JS 模块规范。结合 Visual Studio Code 对 TS 完美支持,开发过程还是很不错的。

我现在正在做一个基于 Node.js 的轻量化开源的 Azure Storage 实现[Azurite]( https://github.com/azure/azurite),使用 TypeScript。线上的 Azure Storage 对象存储服务是一个典型的分布式系统,而 Azurite 第一个 preview 版本则是 Node.js 典型单进程架构,但得益于 Node.js 高效的 IO 性能,测试中数据上传下载最高可以到达 250MB/s,此时单核 CPU 已经被吃满。

由于整个系统的瓶颈在于 CPU,现在正在做分布式化的探索,但可能会遇到不同节点的竞争问题,比如同时访问并修改同一个 blob 的属性。现在初步预计的方向有三种,1) 分布式锁 2) 数据库事务 3) 通过优化数据结构避免竞争。基本上这三种都有成熟的第三方库。有兴趣的同学可以一起讨论或贡献代码。
donlxn22
2019-07-05 15:12:34 +08:00
修正:

https://github.com/azure/azurite
基本上这三种都有成熟的第三方库 -> 基本上前两种都有成熟的第三方库
kasora
2019-07-05 17:50:48 +08:00
目前生产环境用的 egg+ts,体验还行。

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

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

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

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

© 2021 V2EX