Nodejs 框架选型或包推荐
Nodejs 框架选型或包推荐
后端萌新,前端干过两年,算刚入门吧,换了传统行业小公司,就我一个 IT ,没人请教,因为对 JS 比较熟所以选了 Node,希望能够集思广益找一些符合下面要求的解决方案。
背景:
公司用 Zoho 这个 SaaS 平台,虽然是低代码平台但是因为功能限制,需要搭个服务器接收 /返回信息。
需求&问题:
1. 目前想要实现的是从 Zoho 获取发票的图片,转成 base64 ,然后发给腾讯的发票识别 OCR 接口,拿到信息再回填到 Zoho ,以及对接钉钉群机器人,获取指令,在 Zoho 里 CURD 数据。这类中间件(不确定,或者应该叫接口转发?)。暂时不考虑做 Web 之类的服务。
2. 然后是最基础的 token 问题,因为没有(学习)数据库,而且因为是直接在服务器端做开发和测试,服务会经常被 ctrl + c ,所以 refresh-token 之类的凭据是不是要保存到服务器本地的文件?或者有没有什么包能够对多个平台的 token 进行简单的管理和更新?
3. 还是 token 的问题,后端一般如何处理 token 过期?我自己看了一圈 API ,想到的是根据 expiry 来判断然后提前更新,但是因为会重启服务器,所以 expiry 信息写到数据库是最优解?有没有我这种场景下其他的解决方案?
4. 目前用的是腾讯国内的轻量云服务器,只用上面这些功能的话服务器需不需要备案?( Zoho 用的是国际版,API 服务器的物理地址应该是在美国)
希望能够不吝赐教。
token 直接发内存里得了,启动服务的时候请求一下 token 接口,过期了就再请求一次。
反正是公司用,服务商说要备案就备案呗,听服务商的
Node 框架的话,用的比较多的有 KOA ,egg.js 等。
[KOA]( https://koa.bootcss.com/)比较轻量需要自己安装各种中间件,不过还是挺完善的,可以参考下这个[搭建好的 server 服务]( https://github.com/pwstrick/shin-server)。
[egg.js]( https://www.eggjs.org/zh-CN)就比较全,常用的功能都包含了,不用自己安装中间件。
node-red
2 & 3 : 低频操作 token 一般可以直接存 db , 每次校验直接查 db ,高频上缓存。 如何处理过期,最简单的加个过期时间戳,每次 verify token 之后比对过期时间。不用 db 的方案是中心化的 redis, 自动加 expire 机制。
4: 据我所知,腾讯云的服务器是不用备案的
单人小项目 koa
多人大项目 nestjs
不解释。
如此轻量化的需求,koa +1
小项目直接 fastify ,如果不能满足需要不要 nestjs 直接 Spring boot 走起
fastify 比较简单容易上手
nestjs + fastify + mikro-orm + graphql 目前我正在用的,哈哈,我不急,慢慢学,在这上面做个脚手架。
midway 传统应用、serverless 、 前后端一体都支持
nestjs 。如果你啥都不知道的话,用 koa 那就是不知从哪下手
小项目为啥都推 koa ,不用 express 么。。。
express 配合 async function 有些坑,koa 没有
这类东西连框架都不用。一般就是几个云厂商的函数计算服务,例如 aws lambda 写几个简单逻辑扔上去就可以
nestjs
express 选择框架 选择好用的,熟悉的,库多的。koa2 固然简洁,新人别碰。 作为老人写了一次,还是用 express 了
其实前端转 node 新人我是推荐 koa 的, 不适合一上来就搞很重 /结构规范度高的框架,特别是作为胶水层的 CURD 场景,框架越干净越容易在迭代中逐步理解后端程序的运行机制
新人还是上原生的基础库比较好,逐步过渡;
简单的项目 express
负责的项目 eggjs
estjs,nustjs 做的都比较重了,适合原来开发 java 的入手。对于前端程序员来说,转后端按前后端分离的原则分开学习,前端部分完全不用变,后端部分重点学下如何 curd, 配套的 数据库、缓存、服务器知识。
在Node.js框架选型时,需要考虑项目的具体需求、团队的技术栈以及个人偏好。以下是一些流行的Node.js框架及其特点,并附上简短的代码示例:
-
Express
Express是Node.js社区最受欢迎和广泛使用的框架之一,轻量级且灵活,适用于各种规模的项目。
const express = require('express'); const app = express(); app.get('/', (req, res) => { res.send('Hello World!'); }); app.listen(3000, () => { console.log('Server is running on port 3000'); });
-
Koa
Koa由Express的原班人马打造,更轻量级且基于ES6的async/await语法,使异步编程更加简洁。
const Koa = require('koa'); const app = new Koa(); app.use(async ctx => { ctx.body = 'Hello World!'; }); app.listen(3000, () => { console.log('Server is running on port 3000'); });
-
NestJS
NestJS是一个用于构建高效、可扩展的Node.js服务器端应用的框架,基于TypeScript,适合大型项目的结构组织和维护。
(NestJS代码示例较复杂,这里不展开,但通常涉及Controller、Service、Module等概念。)
综上所述,Express适合快速开发和小型项目,Koa适合追求代码简洁性和现代JavaScript特性的开发者,NestJS则适合大型项目的结构组织和维护。