node.js API框架寻找
这篇文章大体上符合我的预期. API框架应该包括用户认证和数据库连接, 而不是自己去做这些. 数据库是关系型的, 而不是mongodb这种的.
一些概念:
knex.js 是一个SQL query的构建工具, node是其主要目标. 除了连接和支持不同的SQL数据库外, 使用JS语法而不是组装query字符串去查询数据库.
ORM: :Object Relational Mapping, 对象关系映射, 解决程序中的对象与数据库中的数据相互映射的方法.
bookshelf.js 是基于knex.js的ORM, 用处理json对象的方式处理数据库中的条目, 而不必直接和数据库打交道了. 差不多一个数据库的表对应一个js类, 一条记录对应一个对象, 这有个中文教程讲得算是比较清楚的.
objection.js, 另一个基于knex的ORM
sequelize还是一个ORM, 不过似乎不是基于knex的.
Swagger 是一个和语言无关的API工具, 主要是在编写API代码的时候可以自动从代码生成文档, 并且文档自带API的测试.这儿是它基于Java的中文介绍, 这是一个基于node的示例. Swagger也是规范, 后来更名为OpenAPI规范.
文中推荐框架:
Loopback. 我总记得我曾经稍微用过这个框架, 似乎功能强大但有些复杂? 文中说这个框架适合在node上运行静态类型, 不太明白什么意思; 也说到loopback有些自以为是, 死板和封闭.
feathersjs的作者David Luecke写了一篇《现代WEB API的设计模式》并基于这个文章写了这个feathers. 文中比较推崇feathers, 说其开始写的代码可能有些多, 但以后维护起来写的代码旧比较少了.
Nest.js, 文中说Nest至于TypeScript就像Spring Boot之于Java Enterprise. Spring我知道是java的著名后台框架了. Nest基于Spring Boot和Angular的很多逻辑构建, 并且TS是其一等公民, 作者推荐用作微服务.
文中如何评价其他的所谓框架?
下面这些, 作者都认为不是框架而是库, 大概因为其功能不太完善, 还需要很多库组合起来,而且还要写一些胶水代码.
Express.js, 是web应用框架
Koa.js, 常被当成Express的有力竞争者
restify, 快速提供REST
HAPI, 似乎也是个Web应用框架