Chism
V2EX  ›  Node.js

请教 Node.js 后端框架的选择

  •  
  •   Chism · Mar 28, 2022 · 18445 views
    This topic created in 1693 days ago, the information mentioned may be changed or developed.
    之前一直做前端,没用过 nodeJS 后端框架

    目前需求是这样:
    1. 后端数据库存储数据,同时给 C 端前端提供 api 进行 curd
    2. 后端需要对接第三方 api
    3. 给 B 端提供后台管理网页

    哪个框架满足上述需求并且易于上手?

    背景:有 thinkphp 开发后端的经验、有简单的 nodejs 脚本开发经验

    选 node 不选 php 原因:npm 比 composer 丰富;很久没碰 php ;对 js 语言足够熟练
    Supplement 1  ·  Mar 30, 2022
    express 据说基于 es5 ,不支持 await 等新特性
    KOA 基于 es7
    这两个框架是同一个作者
    75 replies  •  2022-10-28 10:41:12 +08:00
    golangLover
    golangLover
    Mar 28, 2022 via Android❤️4
    1
    nest.js
    iwdmb
    iwdmb
    Mar 28, 2022
    2
    需求不複雜的話:Express.js

    https://github.com/expressjs/express
    Chism
    Chism
    OP
    Mar 28, 2022
    3
    @iwdmb
    周下载量 24,602,530 ,这个绝对可以
    awesomes
    awesomes
    Mar 28, 2022
    4
    express 和 koa 是偏底层的,nestjs 和 egg 是高一层的,刚刚恰好在看 nestjs ,很完善很强大,不过可能不适合你入门
    Chism
    Chism
    OP
    Mar 28, 2022
    5
    @iwdmb
    Express 配合 mongodb 好还是 mysql ?
    libook
    libook
    Mar 28, 2022❤️4
    6
    Express 用户量最大,本身包含一些组件(中间件)可以较快速搭建出一个 web 服务出来。
    koa 也是比较主流的框架,采取微内核的设计,主体只包含 web 服务核心部分,需要其他功能可以自己找相应的组件(中间件)进行搭配。

    因为很多框架提供的组件都适用于通用的业务,无法满足特定特殊业务场景,所以我使用最多的是 koa ,有现成的组件可以拿来用就用现成的,没有能直接用的就自己写一个。

    当然前面楼提到的其他的框架也可以看看,就是复杂度可能会比这两个高一些,有些是从其他语言的框架思想借鉴过来的。

    一般 Node.js 的教程会推荐使用 MongoDB ,因为从服务程序到数据库操作都是使用 JS/JSON 这一套的,实际上没有所谓搭配哪个好、搭配哪个不好。
    用什么数据库取决于你的数据特征,比如树状结构的数据可能适合非关系型数据库,而实体间关系较多的适合关系型数据库。每种数据库可能为 Node.js 提供了驱动包可以直接用,或者使用 sequelize 之类的 ORM 。

    后台管理网页可以像 PHP 那样使用模板机制渲染,如 EJS 模板引擎,或者 PUG 模板引擎;也可以考虑做成前后端分离的方案,比如另起一个前端项目用 React 或 Vue 写。
    indo
    indo
    Mar 28, 2022❤️1
    7
    express 挺舒服的。B 端管理随便用 react 或者 vue 撸一个然后 express 的 statics 暴露下打包好的目录就好了
    catinsides
    catinsides
    Mar 28, 2022
    8
    nestjs, nextjs, nuxtjs, 看你会哪个前端框架
    acthtml
    acthtml
    Mar 28, 2022
    9
    熟悉 typescript:midwayjs, nestjs 。
    不熟悉:eggjs 。
    gouflv
    gouflv
    Mar 28, 2022 via iPhone
    10
    首先排除 nestjs ,thinkjs 可以考虑
    edward1987
    edward1987
    Mar 28, 2022
    11
    eggjs, 用不用 ts 都支持
    sgiyy
    sgiyy
    Mar 28, 2022
    12
    @gouflv #10 thinkjs 一年多了作者自己都不咋维护了
    ysc3839
    ysc3839
    Mar 28, 2022 via Android
    13
    项目不复杂的话我会选择 Koa ,访问数据库用 TypeORM ,如果需要后端渲染的话用 ejs 模板引擎
    前面有人提到 Express.js ,但是这个库在配合 async function 时有坑(不是不兼容 async function ,而是会遇到一些问题,要额外写代码解决)
    wakarimasen
    wakarimasen
    Mar 28, 2022 via Android
    14
    laravel 不考虑下吗。
    Chism
    Chism
    OP
    Mar 28, 2022 via Android
    15
    @angrylid 放弃 php 了
    slowgen
    slowgen
    PRO
    Mar 28, 2022❤️1
    16
    快速出活而且维护频率低的用 https://github.com/directus/directus ,设计好表结构一天出成果
    不断迭代的用 nest.js
    iwdmb
    iwdmb
    Mar 28, 2022
    17
    @Chism
    >> Express 配合 mongodb 好还是 mysql ?
    這是一個可大可小的問題,如果你不確定怎麼選的話:MySQL
    有個久經考驗的 Transaction 必要的時候可以幫助你
    meteor957
    meteor957
    Mar 28, 2022
    18
    nest
    mikurasa
    mikurasa
    Mar 28, 2022
    19
    可以试试 Serverless ,出活比 mvc 框架快多了 推荐 faas.js
    shiny
    shiny
    Mar 28, 2022
    20
    fastify ,adonisjs
    musi
    musi
    Mar 28, 2022
    21
    小项目 express ,koa
    大项目 nest egg
    hhhanako
    hhhanako
    Mar 28, 2022
    22
    next + prisma
    Rocketer
    Rocketer
    Mar 28, 2022 via iPhone
    23
    上 Serverless 吧,省钱还省工作量,反正都是新学一个框架
    mashirozx
    mashirozx
    Mar 29, 2022 via Android
    24
    nest.js 可能是最成熟的 node 后端框架了吧
    joyqi
    joyqi
    Mar 29, 2022
    25
    koa + typeorm
    ericls
    ericls
    Mar 29, 2022 via iPhone
    26
    scyuns
    scyuns
    Mar 29, 2022
    27
    推荐 nestjs
    linkopeneyes
    linkopeneyes
    Mar 29, 2022
    28
    学了 nestjs 差不多就顺手大概会了 angular 何乐不为呢
    star7th
    star7th
    Mar 29, 2022❤️4
    29
    作为一个 php 跟 nodejs 都熟悉的人,个人猜测你问出这个问题,应该不是高手,所以我推荐你使用易上手的 eggjs 框架。不使用 Express 和 koa 是因为这两个框架太基础,很多东西要你手动再写。不使用 midwayjs, nestjs 是因为它们的概念理解对新手会造成更多心智负担(指的是相比 eggjs ),且中文文档不够丰富。
    leisure
    leisure
    Mar 29, 2022
    30
    strapi 考虑下? 上个 pg 做数据库挺好用的
    pkoukk
    pkoukk
    Mar 29, 2022
    31
    koa 和 express 都可以,但是 db 千万不要用 mongo ,辣鸡
    horizon
    horizon
    Mar 29, 2022
    32
    nestjs , 原生支持 ts 很重要
    Chism
    Chism
    OP
    Mar 29, 2022
    33
    @pkoukk
    考虑 mongo 因为数据结构跟 json 兼容,方便处理
    hotsymbol
    hotsymbol
    Mar 29, 2022
    34
    deno
    scr
    scr
    Mar 29, 2022
    35
    nestjs 。
    还要再快的话,试试 strapi ,外包利器。
    terranboy
    terranboy
    Mar 29, 2022
    36
    nest.js
    leoskey
    leoskey
    Mar 29, 2022❤️1
    37
    koa.js 和 express.js 最大区别在于处理网络请求处理模型,前者为洋葱模型,后者为管道。
    nest.js 这类有控制器、中间件、过滤器等概念,更符合 Java 、C# 开发逻辑。
    要说新手容易上手,还得是 express.js ,概念较少,官方轮子够多
    santom
    santom
    Mar 29, 2022
    38
    nestjs 感觉不错
    lmshl
    lmshl
    Mar 29, 2022❤️5
    39
    作为一个老 Node.TS 开发者,给你些框架选型建议
    NestJS:不建议裸用 koa/express ,他们是底层框架,在其上实现拦截器 /身份认证 /三方登录等需要花费的时间要多很多。
    Prisma2: 作为 TypeORM 早期贡献者,我不推荐你在 2022 年的今天还使用 TypeORM ,Prisma2 的工具链和开发体验都非常流畅。

    你还可以考虑下 postgresql ,既可以用 JSONB 存储,又不丢失 ACID 的所有好处
    lmshl
    lmshl
    Mar 29, 2022
    41
    再给你一个我自己的热身项目,就是用我上面说的技术栈,并且还支持 Serverless 部署。
    guanhui07
    guanhui07
    Mar 29, 2022
    42
    koa2
    boxz
    boxz
    Mar 29, 2022
    43
    nestjs ,要 crud 搭配 nestjs-query ( graphql )或 @nestjsx/crud ( restful )
    gstarcad
    gstarcad
    Mar 29, 2022
    44
    轻量底层框架:fastify 、express
    上层框架:NestJS

    其它观点同#39 楼
    qq30545
    qq30545
    Mar 29, 2022
    45
    我也新手
    推荐 Fastify + Cloud Run
    Express 就算了吧
    1543544726zy
    1543544726zy
    Mar 29, 2022
    46
    koa + mogoose
    byte10
    byte10
    Mar 29, 2022
    47
    目前需求是这样:
    1. 后端数据库存储数据,同时给 C 端前端提供 api 进行 curd
    2. 后端需要对接第三方 api
    3. 给 B 端提供后台管理网页

    你直接上 koa2 ,吊打所有框架。这样的业务最好用 koa2 了,非常 nice 的一个框架,核心代码就 100 行,牛逼就是了。脚本语言简单。koa2 的比较基础,迁移到 serverless ,云函数,云小程序,都非常的方便。
    fstar
    fstar
    Mar 29, 2022
    48
    Nest.js

    Express 和 Koa2 就算了,过时了,过于底层,好比你用 jq 写网站一样过于简陋。社区也不活跃。
    qfdk
    qfdk
    PRO
    Mar 29, 2022❤️1
    49
    还是 Express 吧,说实话这个写起来还是很舒服的,我把公司 微服务都换成 Express 了。 还是 Express 好用,Nest.js 上层的东西太多了。 问题很大,如果搞不明白 Nest.js 里面的 运行原理 感觉就跟 Spring Boot 莫名其妙的的升个级就挂了。。。 用 Express 的话 逻辑大多都是自己的,然后项目结构合理,很方便的。
    daizige
    daizige
    Mar 29, 2022
    50
    @star7th 非常赞同
    jsq2627
    jsq2627
    PRO
    Mar 29, 2022
    51
    不妨试试 remix.js ,虽然比较新但是确实很棒
    terranboy
    terranboy
    Mar 29, 2022
    52
    @jsq2627 REMIX.RUN 吗 他算是个全栈框架 输出 API 不太适合,按照楼主的需求 简单点的 NEXT.JS+PRISMA 就能胜任
    helloworld1024
    helloworld1024
    Mar 29, 2022
    53
    建议你放弃使用 nodejs 做后端
    zy445566
    zy445566
    Mar 29, 2022
    54
    用 express ,其实不如用 koa 更现代一点点。不过要大而全集成可以试试 nest.js 。用 node.js 后端开发 5 年了,很爽
    LawlietZ
    LawlietZ
    Mar 29, 2022
    55
    egg
    OxO
    OxO
    Mar 29, 2022
    56
    原是 Javaer ,不喜欢在 node 系也使用 Spring 注解那一套东西,目前在用 koa2 + mongoose + ts ,挺喜欢的。
    vincentxue
    vincentxue
    Mar 29, 2022
    57
    我同意 #29 的观点。

    最适合你的框架应该就是 egg.js ,因为它足够简单但是功能又很强,已经封装了绝大多数日常需要的功能。底层就是 koa ,如果你要从 koa 或者 express 这些起步,光是搭架子都得很久。用 egg 的话新建一个项目就可以直接开撸了,cluster 啥的也都帮你弄好了,你只需要一句命令的的事。orm 用 sequelize 之类的就好了。

    nest 那些是有学习成本的,你需要了解它的概念,还得自己搭架子等等。

    如果你是开一个大的长期的项目,那可以考虑用 nest ,毕竟是流行趋势,趋势不可挡。

    db 用什么是跟你的业务有很大关系的,如果你不知道选什么,就选 mysql 好了。
    pkoukk
    pkoukk
    Mar 29, 2022
    58
    @Chism pg 也支持 json 。
    但是一般不需要存 raw json 进去,找一些 orm 框架更合适。
    存一堆 json 进 mongo 里,最常见到的事情就是里面有一大堆奇怪的数据,一会儿这条缺字段,一会儿那条字段数据格式不对,处理数据处理到头秃
    immortalz
    immortalz
    Mar 29, 2022 via Android
    59
    eggjs ,正如 57 楼说的一样,eggjs 约定式的方式,很多东西都不用纠结中间件怎么技术选型,不同中间件之间混搭踩坑之类的
    Chism
    Chism
    OP
    Mar 29, 2022
    60
    @pkoukk
    确实有这个问题,我还遇到过 input 标签的数字直接插入导致 mongo 里本来放 number 的一部分是 string
    HanMeiM
    HanMeiM
    Mar 29, 2022
    61
    话说 egg 是阿里开源的吗?阿里的开源软件敢用吗?
    ychost
    ychost
    Mar 29, 2022
    62
    koa 用过最好用的,想怎么扩展加中间件就好了,用起来爽的一笔,node 不是 JAVA 没必要用注解,即使 node 按 java 一样规范了,后期维护还是比较困难
    cutchop
    cutchop
    Mar 29, 2022
    63
    koa 啊,js 不就是怎么爽怎么来吗,不要搞 java 那一套
    bthulu
    bthulu
    Mar 29, 2022
    64
    @lmshl nestjs 底层 HTTP 框架选啥呢, platform-express 还是 platform-fastify?
    inhal
    inhal
    Mar 29, 2022 via Android
    65
    AdonisJS ,你会找到 Laravel 的感觉
    ccraohng
    ccraohng
    Mar 30, 2022
    66
    koa express 不是 demo 产生器吗?求求不要推荐害人了
    或者你要自己根据这两个当作底层写框架?
    agileago
    agileago
    Mar 30, 2022
    67
    express,koa,eggjs 写完会让你产生在写玩具的感觉,很脆弱,现在写 Node 后端无脑 nestjs
    eephee
    eephee
    Mar 31, 2022
    68
    nest.js 有公司招人吗?前后端都会点
    chenyu0532
    chenyu0532
    Apr 1, 2022
    69
    现在正在用 egg ,我感觉很不错。
    阿里为数不多的良心产品
    chenyu0532
    chenyu0532
    Apr 1, 2022
    70
    作为一个前端仔,没有后端经验,对 js 很熟 的人的建议
    magicdawn
    magicdawn
    Apr 2, 2022
    71
    TypeScript 如日中天, 不支持 ts / 支持不好, 就等着被淘汰吧~
    目前来看 nest 比较好用.

    关于 express / koa, express 多少年了还在 4.x
    koa 太薄了, 很多东西要新写, 不用 ts 的话可以试试我移植的 impress-router / impress-router-table
    https://magicdawn.github.io/common-docs/docs/impress-router
    https://github.com/magicdawn/impress-router-table
    zhennann
    zhennann
    Apr 3, 2022
    72
    express 、koa 、nest 、egg ,都属于工具框架,都好学,但是用于业务开发都不容易,因为账户体系、权限体系、数据管理体系、审批工作流、消息推送,等等,所有与业务相关的工作都需要自己做
    强烈建议了解一下 CabloyJS 开源全栈框架,这是一款教科书级的 NodeJS 框架,内置工作流引擎,内置大量业务组件,开发 CRUD 、开发中后台,都很方便,而且还不仅仅是这些
    yafoo
    yafoo
    Apr 23, 2022 via Android
    73
    试试我开发的 mvc 框架 jj.js ,语法跟 thinkphp 相似,你会很快上手的。
    humbass
    humbass
    Sep 5, 2022
    74
    也是 PHP 出身,之前转 nodejs 用的是 thinkjs ,不过有段时间没有维护了
    目前在用 eggjs ,也挺顺手。
    moose123
    moose123
    Oct 28, 2022
    75
    可以了解下 feathersJS
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   974 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 131ms · UTC 22:54 · PVG 06:54 · LAX 14:54 · JFK 17:54
    ♥ Do have faith in what you're doing.