Strapi 是一个 “无前端” Node CMS 框架,
他只关注后端数据层,并通过 “自动化” 的方式生成一个😍 非常强大 😍 并且完全可扩展的管理后台,
同时它采用了 ORM 的方式操作数据库,弱化后端。
我认为他是我迈入 “全栈工程师” 的一个很重要的框架,
关注了很长时间,随着版本的完善,社区也渐渐出现了各种好用的库。
PS: 国人用的较少…并且适合国人环境的现成解决方案较少…
相关链接
启用 Chrome –inspect 调试
创建启动文件 server.js,安装 nodemon
然后通过 nodemon –inspect server.js 启动即可
const strapi = require('strapi')
strapi(/* { ... } */).start();
PS:使用该方式,无法通过管理面板管理模型字段。
翻译管理后台左侧的侧边栏
需要修改并重新打包管理后台 admin 目录
- 在项目根目录创建目录 admin/src/translations
- 将 strapi-admin/admin/src/translations 中的 en.json(必须有), zh-Hans.json(或其他语言) 复制过来
- 将字段显示的!!复数!!名字复制到 en.json 和 zh-Hans.json 中的 key,value 写需要翻译显示的名字
- strapi develop –watch-admin(开发管理界面模式看下结果)
- 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 即可。
缺陷
- 无法从 header jwt 中判断用户,只能通过传递 authorUser 参数确定用户。
- 用户点赞后,无法记录点赞的用户,并且无法取消点赞。
导入导出配置(酷库)
导入导出前一定记得备份,并不是很稳定。
Github
导入导出内容(酷库)
导入导出前一定记得备份,并不是很稳定。