Nodejs 框架选型或包推荐

发布于 1周前 作者 ionicwang 来自 nodejs/Nestjs

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 服务器的物理地址应该是在美国)

希望能够不吝赐教。


20 回复

token 直接发内存里得了,启动服务的时候请求一下 token 接口,过期了就再请求一次。
反正是公司用,服务商说要备案就备案呗,听服务商的


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 目前我正在用的,哈哈,我不急,慢慢学,在这上面做个脚手架。

  1. 你可以找下 zoho ,腾讯的 ORC ,跟钉钉有没有对应的 nodejs SDK ,如果有的话,可以直接拿来用,如果没有,也可以用 node 自带的 fetch 封装下再用。

    2,3. 可以存 redis 里或 sqlite 里

midway 传统应用、serverless 、 前后端一体都支持

nestjs 。如果你啥都不知道的话,用 koa 那就是不知从哪下手

小项目为啥都推 koa ,不用 express 么。。。

express 配合 async function 有些坑,koa 没有

这类东西连框架都不用。一般就是几个云厂商的函数计算服务,例如 aws lambda 写几个简单逻辑扔上去就可以

express 选择框架 选择好用的,熟悉的,库多的。koa2 固然简洁,新人别碰。 作为老人写了一次,还是用 express 了

其实前端转 node 新人我是推荐 koa 的, 不适合一上来就搞很重 /结构规范度高的框架,特别是作为胶水层的 CURD 场景,框架越干净越容易在迭代中逐步理解后端程序的运行机制

新人还是上原生的基础库比较好,逐步过渡;

简单的项目 express

负责的项目 eggjs


estjs,nustjs 做的都比较重了,适合原来开发 java 的入手。对于前端程序员来说,转后端按前后端分离的原则分开学习,前端部分完全不用变,后端部分重点学下如何 curd, 配套的 数据库、缓存、服务器知识。

在Node.js框架选型时,需要考虑项目的具体需求、团队的技术栈以及个人偏好。以下是一些流行的Node.js框架及其特点,并附上简短的代码示例:

  1. 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');
    });
    
  2. 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');
    });
    
  3. NestJS

    NestJS是一个用于构建高效、可扩展的Node.js服务器端应用的框架,基于TypeScript,适合大型项目的结构组织和维护。

    (NestJS代码示例较复杂,这里不展开,但通常涉及Controller、Service、Module等概念。)

综上所述,Express适合快速开发和小型项目,Koa适合追求代码简洁性和现代JavaScript特性的开发者,NestJS则适合大型项目的结构组织和维护。

回到顶部