用 TypeScript 作为一个后端开发,需要哪些技术栈? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
yuankui
V2EX    程序员

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

  •  
  •   yuankui 2019-07-04 18:17:22 +08:00 9055 次点击
    23 条回复    2019-07-05 22:14:21 +08:00
    cubecube
        1
    cubecube  
       2019-07-04 18:29:26 +08:00 via Android   5
    何必为难自己
    Oktfolio
        2
    Oktfolio  
       2019-07-04 18:55:57 +08:00
    Koa2 MongoDB Express MySQL
    ruyuejun
        3
    ruyuejun  
       2019-07-04 18:56:01 +08:00   3
    后端开发相较于前端来说,并不受语言本身的制约,顶多会因为该语言的生态而使开发变得困难抑或简单。
    所以我个人认为更合理的提问应该是后端的技术栈包含什么,这个问题的答案处处皆是。
    楼主也有可能问的是类似:TypeScript 在后端开发场景中有哪些常见框架与技术?
    这就很难回答了,换做 Java,立刻能回答出:SSM,Springboot,Netty。
    TS 目前在并不能作为一个独立意义的语言,最终仍然被编译为 JS,也即题目的最终结果变成了 NodeJS 在后端开发中,有哪些技术栈?
    答案:
    express,koa,egg,nest,midway,
    他们都可以使用 ts 进行开发并编译为 js,但是 nest 本身基于 TS,可以直接使用 TS 开发;
    最后可以关注下 deno,内置了 ts 的运行时,未来如果诞生基于 deno 的一系列开发框架,才算是真正意义上的 TS 技术栈
    Cbdy
        4
    Cbdy  
       2019-07-04 19:05:58 +08:00
    Koa,Linux,Sequelize,MySQL,Docker,Nginx,Node.js
    impl
        5
    impl  
       2019-07-04 19:14:49 +08:00 via Android
    deno 撸起
    love
        6
    love  
       2019-07-04 19:41:13 +08:00   1
    用 typescript 做后端比 python/ruby/php 这种没类型检查的舒服得多,和 java 比也更轻量简单,有些人不知道在酸什么
    shawndev
        7
    shawndev  
       2019-07-04 19:44:31 +08:00
    一个 nodejs 版本。
    一个后端框架。koa/express
    一个 web 服务器。nginx
    一个数据库。mongodb/mysql
    Torpedo
        8
    Torpedo  
       2019-07-04 20:40:47 +08:00   1
    中间件不熟悉,那还是 express 开始。
    熟悉即可以 express,还能 nestjs
    ntop
        9
    ntop  
       2019-07-04 21:34:01 +08:00
    写后端用 ts 太为难了,有大把好用的语言可以选,java/go/pyhton... 都不错. 用 ts 有点非主流的感觉.
    yuankui
        10
    yuankui  
    OP
       2019-07-05 09:21:40 +08:00
    @ruyuejun 不要在意这些细节,你懂我就行
    yuankui
        11
    yuankui  
    OP
       2019-07-05 09:23:01 +08:00
    @cubecube 你不懂用 Java 写个高并发,多么为难自己吗?
    协程多爽,不知道?
    yuankui
        12
    yuankui  
    OP
       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
        13
    ericgui  
       2019-07-05 09:55:28 +08:00
    ts 有 js 的灵活,又有大型应用该有的东西,为什么很多人 diss 呢

    无非是工作量不饱和罢了
    yuankui
    nbsp;   14
    yuankui  
    OP
       2019-07-05 10:01:21 +08:00
    @Torpedo 刚刚大致看了下,跟 nestjs 有点 spring-mvc 的影子。。感觉设计的还很不错,可以深入研究学习下。
    ciki
        15
    ciki  
       2019-07-05 10:52:18 +08:00
    说到协程,kotlin 了解一下
    silentt
        16
    silentt  
       2019-07-05 12:51:44 +08:00 via iPhone
    恕我直言,nodejs 搞后端就是纯垃圾,完整的事务解决方案没有,分布式领域没任何建树,v8 虚拟机和 jvm 比就是个大玩具。
    yuankui
        17
    yuankui  
    OP
       2019-07-05 15:09:44 +08:00
    donlxn22
        18
    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
        19
    donlxn22  
       2019-07-05 15:12:34 +08:00
    修正:

    https://github.com/azure/azurite
    基本上这三种都有成熟的第三方库 -> 基本上前两种都有成熟的第三方库
    kasora
        20
    kasora  
       2019-07-05 17:50:48 +08:00
    目前生产环境用的 egg+ts,体验还行。
    coloz
        21
    coloz  
       2019-07-05 18:19:58 +08:00
    nestjs
    silentt
        22
    silentt  
       2019-07-05 20:38:47 +08:00 via iPhone
    @yuankui 你管这叫解决方案么
    yuankui
        23
    yuankui  
    OP
       2019-07-05 22:14:21 +08:00
    @silentt 兄弟你是杠精吗?
    底层的能力都给你了,你自己不会撸吗?
    还要别人给你撸好吗?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5284 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 06:53 PVG 14:53 LAX 22:53 JFK 01:53
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86