Strapi 是一个 “无前端” Node CMS 框架,
他只关注后端数据层,并通过 “自动化” 的方式生成一个😍 非常强大 😍 并且完全可扩展的管理后台,
同时它采用了 ORM 的方式操作数据库,弱化后端。

我认为他是我迈入 “全栈工程师” 的一个很重要的框架,
关注了很长时间,随着版本的完善,社区也渐渐出现了各种好用的库。

PS: 国人用的较少…并且适合国人环境的现成解决方案较少…

相关链接

启用 Chrome –inspect 调试

创建启动文件 server.js,安装 nodemon
然后通过 nodemon –inspect server.js 启动即可

const strapi = require('strapi')

strapi(/* { ... } */).start();

PS:使用该方式,无法通过管理面板管理模型字段。

翻译管理后台左侧的侧边栏

需要修改并重新打包管理后台 admin 目录

  1. 在项目根目录创建目录 admin/src/translations
  2. 将 strapi-admin/admin/src/translations 中的 en.json(必须有), zh-Hans.json(或其他语言) 复制过来
  3. 将字段显示的!!复数!!名字复制到 en.json 和 zh-Hans.json 中的 key,value 写需要翻译显示的名字
  4. strapi develop –watch-admin(开发管理界面模式看下结果)
  5. npm run build(翻译成功后,打包管理员界面)

en.json

{
  "Categories": "Categories",
  "Restaurants": "Restaurants"
}

zh-Hans.json

{
  "Categories": "餐厅分类",
  "Restaurants": "餐厅"
}

PS:
en.json 一定要复制并填值, 因为 admin/components/LeftMenuLink/index.js 中是根据 en.json 进行判断是否有无 key 值, 若没有就不走国际化流程了。

禁止在后台中修改删除模型字段

通常在做插件时会用到,在模型配置中(xxx.settings.json)
给指定的字段 configurable 属性设置为 false 即可。

阻止填充响应中的关联字段

模型默认的增删改查接口,都会将相关联的字段填充完整后,再返回。
但是大部分时候我们只想要一个的 id,就可以了。
解决办法是给需要的字段加上 autoPopulate = false 即可。

{
  "category": {
    "model": "category",
    "via": "articles",
    "autoPopulate": false
  }
}

隐藏管理后台的左侧指定模型

负责可视化管理数据的插件是 strapi-plugin-content-manager 这个包
在其 services/ContentTypes.js 中重写 HIDDEN_CONTENT_TYPES 常量即可实现

  • 首先你要有一个项目,并且有自定义的模型字段
  • 在项目根目录 extensions 文件夹中创建 content-manager/services/ContentTypes.js 文件
  • 复制 node_modules/strapi-plugin-content-manager/services/ContentTypes.js 中的代码
  • 黏贴到 extensions/content-manager/services/ContentTypes.js 中
  • 修改 ContentTypes.js 中的依赖包的路径,使其路径正确,下面有例子
  • 找到 HIDDEN_CONTENT_TYPES 常量,新增需要隐藏的模型,下面有例子
/** 修改依赖路径 **/
const storeUtils = require('strapi-plugin-content-manager/services/utils/store')
const { pickSchemaFields } = require('strapi-plugin-content-manager/services/utils/schema')
/** 重写需要隐藏的模型 **/
const HIDDEN_CONTENT_TYPES = [
  /** 原有的 **/
  'strapi::admin',
  'plugins::upload.file',
  'plugins::users-permissions.permission',
  'plugins::users-permissions.role',
  
  /** 以下是新增的 **/
  'plugins::config.config',
  /** application 代表项目中创建的模型 **/
  'application::house.house'
]

Html 编辑器(酷库)

后台默认的编辑器都是 markdown 语法。

Github

使用

ckeditor5 编辑器有官方提供的默认样式
前端可以拷贝使用即可,链接如下

评论系统(酷库)

通常用于文章讨论等功能,还算比较完善。

Github

使用

只列举理解起来较为困难的参数,其他的看文档吧
PS: 安装 1.0.0 版本,其他的 beta 版本的无法正常使用

authorUser
用户 id,这个值要在请求体里传递,目前无法从 header 中动态提取。

threadOf
通过这个参数实现评论回复,值为需要回复的评论 id,顶级为 null 即可。

缺陷

  1. 无法从 header jwt 中判断用户,只能通过传递 authorUser 参数确定用户。
  2. 用户点赞后,无法记录点赞的用户,并且无法取消点赞。

导入导出配置(酷库)

导入导出前一定记得备份,并不是很稳定。

Github

导入导出内容(酷库)

导入导出前一定记得备份,并不是很稳定。

Github