我是在 2020 年 5 月体验的 3.0.0-beta 版。
使用流程
用 strapi 的 CLI 生成一个项目后运行它。在 Content-Types Builder 建立一些模型:
建立时,strapi 后台做了这样的事情:
- 为你的 content-type 生成一系列的代码,比如 model 定义文件、API 路由、OpenAPI 文档等
- 重启自己
下面这张图中的 api
目录,即是 strapi 用来存放生成的文件:
然后它自动提供了最基础的 RESTful 接口,以及可以使用 GraphQL 进行查询。
它也有素材管理的功能(Media Library),但我使用下来觉得 功能太简单了,连建目录、选 tag 都做不了,别说对素材做版本管理了。
好处与不足之处
对于 Content-Types Builder:
- 优点:
- 简单易用,不需要手写代码就可生成 models
- 内置了富文本编辑器
- 关系的指定非常简单明了
- 缺点:
- 字段的类型不够多,比如 Django 提供了
DurationField
来表示时长,strapi 就没有;意味着你需要用数字来存储时长,并且写额外的代码将其序列化成00:01:32
格式 - 能配置的数据格式校验不多,可能需要额外写代码实现
- 字段的类型不够多,比如 Django 提供了
对于 RESTful API:
- 优点:自动生成 API endpoint 及文档
- 缺点:默认的 RESTful 只会输出一层的关系,如果要实现多层关系一起输出,或者额外的逻辑,可能需要写代码
对于素材管理(Media Library):
- 优点:上传界面简单直观
- 缺点:
- 没有提供第三方存储(如 Amazon S3、各种云服务对象存储)的选择,目前只能存在 strapi 服务器的
uploads
目录中 - 功能太简单了,无法建目录、无法标 tag,更没有版本管理
- 没有提供第三方存储(如 Amazon S3、各种云服务对象存储)的选择,目前只能存在 strapi 服务器的
对于用户注册、登陆:
- 优点:
- 提供了现成的 API 去注册和登陆
- 可以与社交网络账号关联,比如 Google、Facebook
- 提供了注册时邮箱确认、重置密码时邮箱找回的能力
- 缺点:
- 整套流程过于简单,真实的账号系统可能会更复杂
- 可扩展性差,比如如果你想在注册时显示一验证码,那并不是很容易在这里做到
权限管理:跟 Django 差不多,可以针对不同的 model 做细分的操作权限设置。
总结
如果你的产品是内容型的,并且内容生产是站方提供而不是用户提供,那么 strapi 可能是个不错的选择,毕竟你不需要花太多心思就能构建一个可发布内容的后台系统,而不太需要考虑新增内容时的字段校验。如果涉及到用户提供内容,那你可能需要写额外的代码逻辑去处理(比如格式校验、文件上传等等),这使得它跟其他的 web 框架没太多区别。