跳到主要内容

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 年很多追求效率的团队来说,这是一套很有实战价值的组合。