V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yuankui
V2EX  ›  程序员

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

  •  
  •   yuankui · 2019-07-04 18:17:22 +08:00 · 8423 次点击
    这是一个创建于 1963 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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
        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   ·   实用小工具   ·   5587 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 08:51 · PVG 16:51 · LAX 00:51 · JFK 03:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.