Feathers.js + Sequelize 轻量后台实践
· 阅读需 2 分钟
如果把 2021 年我最看重的 Node.js 后端关键词挑几个出来,Feathers.js 和 Sequelize 都会在里面。一个擅长把服务边界收清楚,一个擅长把关系型数据操作写得更稳,把这两个放在一起,其实很适合做轻量后台。
为什么这两个组合起来顺手
Feathers.js 负责的是:
- service 组织方式
- hook 扩展机制
- 接口与实时能力
Sequelize 负责的是:
- 模型定义
- 关联关系
- 查询与事务
前者解决“接口层怎么组织”,后者解决“数据层怎么落地”,组合起来正好。
一个很典型的后台场景
比如文章管理后台,通常需要这些能力:
- 文章增删改查
- 分类和标签关系维护
- 登录鉴权
- 列表筛选与分页
Feathers 可以把 /posts、/categories、/tags 这些都组织成 service;Sequelize 则负责底层的表结构和查询。
app.use('/posts', new PostsService({
Model: app.get('models').Post,
}));
app.service('posts').hooks({
before: {
all: [authenticate('jwt')],
create: [attachAuthor()],
},
});
const Post = sequelize.define('Post', {
title: DataTypes.STRING,
slug: DataTypes.STRING,
status: DataTypes.STRING,
publishedAt: DataTypes.DATE,
});
这种组合最适合什么项目
我觉得特别适合下面这类场景:
- 管理后台
- CMS
- 中小型业务系统
- 需要较快验证的内部平台
因为这类项目最需要的是“边界清晰、迭代快”,而不是过度厚重的框架体系。
需要注意的点
这套方案虽然顺手,但也别神化。真正落地时要注意:
- hook 别写成第二业务层
- Sequelize 查询别无限
include - 认证和权限边界要早点定清楚
只要这几个地方守住,整体维护体验会相当不错。
小结
Feathers.js + Sequelize 并不是为了追求技术搭配好看,而是因为它们刚好分别解决了 Node.js 后台里最常见的两类问题:接口层边界和数据层边界。对 2021 年很多追求效率的团队来说,这是一套很有实战价值的组合。
