Sails.js 知识框架整理
一、Sails.js 基础
1. 核心概念
-
基于 Express 的 MVC 框架
-
遵循"约定优于配置"原则
-
实时功能集成 (WebSockets)
-
自动生成的 RESTful API
-
数据库无关的 ORM (Waterline)
2. 项目结构
-
api/
: 核心应用代码-
controllers/
: 控制器 -
models/
: 数据模型 -
services/
: 可重用服务 -
policies/
: 访问控制策略 -
responses/
: 自定义响应 -
helpers/
: 工具函数
-
-
config/
: 配置文件 -
views/
: 视图模板 (如使用) -
assets/
: 静态资源 -
tasks/
: Grunt 任务 (可选)
二、核心组件
1. 控制器 (Controllers)
-
动作方法 (Action)
-
自动路由绑定
-
请求生命周期
-
响应方法 (
res.ok()
,res.serverError()
等) -
自定义响应
2. 模型 (Models)
-
Waterline ORM
-
属性定义
-
关联关系 (一对一、一对多、多对多)
-
生命周期回调
-
自定义方法
-
查询构建器
-
-
适配器配置
-
数据库迁移
3. 服务 (Services)
-
单例服务
-
全局可用性
-
业务逻辑封装
-
辅助功能实现
三、请求处理流程
1. 路由系统
-
自动路由 (蓝图 API)
-
自定义路由 (
config/routes.js
) -
路由参数
-
HTTP 方法处理
-
路由目标 (控制器动作/视图)
2. 中间件
-
内置中间件
-
自定义中间件
-
中间件顺序配置
-
策略 (Policies) 作为特殊中间件
3. 请求生命周期
-
接收请求
-
应用中间件
-
执行策略检查
-
运行控制器动作
-
发送响应
四、实时功能
1. WebSockets 集成
-
Socket.io 集成
-
客户端连接
-
服务端广播
-
房间管理
-
事件处理
2. 实时模型更新
-
自动发布创建/更新/删除事件
-
客户端订阅模型
-
自定义发布逻辑
-
性能考虑
五、配置与定制
1. 配置文件 (config/
)
-
app.js
: 应用基础配置 -
routes.js
: 路由配置 -
policies.js
: 策略配置 -
models.js
: 模型设置 -
datastores.js
: 数据存储配置 -
bootstrap.js
: 启动脚本 -
环境特定配置 (如
production.js
)
2. 定制化
-
覆盖默认响应
-
自定义钩子 (Hooks)
-
修改蓝图路由
-
扩展核心功能
六、数据管理
1. Waterline ORM
-
支持的数据库 (MySQL, PostgreSQL, MongoDB 等)
-
连接配置
-
模型定义
-
关联关系
-
查询方法 (
.find()
,.create()
,.update()
等) -
事务支持
2. 高级查询
-
条件查询
-
分页与排序
-
聚合操作
-
原生查询
-
性能优化
七、安全与认证
1. 安全措施
-
CSRF 保护
-
CORS 配置
-
请求验证
-
安全头设置
-
速率限制
2. 认证授权
-
会话管理
-
Passport 集成
-
JWT 支持
-
策略 (Policies) 实现访问控制
-
角色基础权限
八、生产部署
1. 准备生产
-
环境配置
-
日志管理
-
错误处理
-
性能优化
-
健康检查
2. 部署选项
-
PM2 进程管理
-
Docker 容器化
-
云平台部署 (AWS, Heroku 等)
-
负载均衡考虑
-
零停机部署
九、扩展与集成
1. 钩子系统
-
内置钩子
-
自定义钩子开发
-
钩子生命周期
-
社区钩子
2. 第三方集成
-
邮件服务
-
支付网关
-
社交媒体 API
-
消息队列
-
缓存系统
十、测试与调试
1. 测试策略
-
单元测试 (模型/服务)
-
控制器测试
-
API 测试
-
实时功能测试
-
测试覆盖率
2. 调试技巧
-
日志记录
-
Node 调试器
-
Sails 命令行工具
-
性能分析
-
常见问题排查
十一、最佳实践
1. 项目组织
-
大型应用结构
-
代码拆分
-
服务层设计
-
配置管理
2. 性能优化
-
数据库查询优化
-
缓存策略
-
资源压缩
-
连接池管理
-
负载测试
3. 维护建议
-
版本升级
-
依赖管理
-
文档编写
-
团队协作规范
这个知识框架涵盖了 Sails.js 从基础到高级的主要内容,包括其核心概念、MVC 架构、实时功能、数据库集成以及生产部署等方面。Sails.js 特别适合构建数据密集型的实时 Web 应用和 API 服务。