Strapi 踩坑

2024年8月23日 · 261 字 · 2 分钟 · CMS Strapi

Strapi 是一个无头 CMS,总体用下来70分,本文列一下使用 Strapi 遇到的问题。 版本是:V4,太不巧了,在项目完成后,刚好出了 v5 版本 优点 业务人员: admin 面板中的主体功能、基本操作都没有大问题,设计简洁大方,流程上手简单。 开发人员: 目录结构清晰,架构比较好 扩展功能方便,编写插件方便 其他 SSR 框架支持比较好,比如有 Nuxt Strapi 这种 module 生态还算不错,虽然没有特别要用的 plugin 就是了。 总的来说,文档也还不错,中度使用没问题。至少有些长久遗留的问题会在他们论坛会被骂,能被我索引到。 坑 数据迁移费老大劲。 Data Import 过慢,15Kb/s 的导入速度对于 2G 多的压缩包来说,根本传不完,Export 时关闭压缩和加密都没有效果,要不是不知道它的 Import 操作的传输 Upload 文件夹部分有什么副作用,我直接 Copy 文件夹过去算了。后续要不是 Data Transfer 在数次失败后传输速度突然飙到几百K并顺利完成了,那数据迁移工作算是功亏一篑彻底失败掉地上了,毕竟项目至少得在 CI/CD 测试环境中跑起来一次才好备份迁移啊。 Upload 功能不成熟。 在 Docker 中,尽量不要往项目运行时的代码目录下写东西,但大部分 CMS 的资源 LocalProvider 有写文件的操作,然而在 Upload 插件中没有办法配置文件目录到其他指定目录,导致 CI 需要做其他软链操作来确保服务的无状态。 存文件思路小学生水平:Media Library 中的逻辑文件夹未反应到文件系统中。很难想象一个正儿八经的 CMS 会把所有图片、视频、文档放到同一个文件夹下,后续文件数量上来后 fs 操作得有多慢。这点根本比不上 Wordpress 和 MediaWiki,前者是按日期分文件夹,后者是按文件名 Hash 分文件夹,而 Strapi 像是单人维护的练手项目一样(虽然事实上可能确实是)。 插件接口文档不全。我想在后台的 db lifecycles 中使用 upload 的相关功能来为当前的 entity (比如 blog)自动添加 cover, 但是文档中没有写怎么用,只有一个 Upload single file from an API controller 的 demo 。findOne 和 findMany 有没有、要传什么参数都不知道,经过调试才实现功能。我要做的操作也不算多么小众仅仅是在后台操作文件而已。 Upload API 不成熟。