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

2022-03-28 17:48:16 +08:00
 Chism
之前一直做前端,没用过 nodeJS 后端框架

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

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

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

选 node 不选 php 原因:npm 比 composer 丰富;很久没碰 php ;对 js 语言足够熟练
15336 次点击
所在节点    Node.js
75 条回复
golangLover
2022-03-28 17:53:10 +08:00
nest.js
iwdmb
2022-03-28 17:54:09 +08:00
需求不複雜的話:Express.js

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

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

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

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

后台管理网页可以像 PHP 那样使用模板机制渲染,如 EJS 模板引擎,或者 PUG 模板引擎;也可以考虑做成前后端分离的方案,比如另起一个前端项目用 React 或 Vue 写。
indo
2022-03-28 19:10:25 +08:00
express 挺舒服的。B 端管理随便用 react 或者 vue 撸一个然后 express 的 statics 暴露下打包好的目录就好了
catinsides
2022-03-28 19:13:37 +08:00
nestjs, nextjs, nuxtjs, 看你会哪个前端框架
acthtml
2022-03-28 19:20:03 +08:00
熟悉 typescript:midwayjs, nestjs 。
不熟悉:eggjs 。
gouflv
2022-03-28 19:28:15 +08:00
首先排除 nestjs ,thinkjs 可以考虑
edward1987
2022-03-28 19:38:38 +08:00
eggjs, 用不用 ts 都支持
sgiyy
2022-03-28 19:43:48 +08:00
@gouflv #10 thinkjs 一年多了作者自己都不咋维护了
ysc3839
2022-03-28 19:57:44 +08:00
项目不复杂的话我会选择 Koa ,访问数据库用 TypeORM ,如果需要后端渲染的话用 ejs 模板引擎
前面有人提到 Express.js ,但是这个库在配合 async function 时有坑(不是不兼容 async function ,而是会遇到一些问题,要额外写代码解决)
angrylid
2022-03-28 19:59:54 +08:00
laravel 不考虑下吗。
Chism
2022-03-28 20:02:40 +08:00
@angrylid 放弃 php 了
shuimugan
2022-03-28 20:07:41 +08:00
快速出活而且维护频率低的用 https://github.com/directus/directus ,设计好表结构一天出成果
不断迭代的用 nest.js
iwdmb
2022-03-28 20:40:23 +08:00
@Chism
>> Express 配合 mongodb 好还是 mysql ?
這是一個可大可小的問題,如果你不確定怎麼選的話:MySQL
有個久經考驗的 Transaction 必要的時候可以幫助你
meteor957
2022-03-28 20:54:46 +08:00
nest
mikurasa
2022-03-28 20:57:36 +08:00
可以试试 Serverless ,出活比 mvc 框架快多了 推荐 faas.js
shiny
2022-03-28 21:19:40 +08:00
fastify ,adonisjs

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

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

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

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

© 2021 V2EX