strapi实践

strapi 是一套用于图形化构建和管理后端数据的平台,同时也是基于前端技术的内容管理工具CMS,可以实现RESTful和GraphQL无缝接入。
下面就是我的新手引导的记录。

安装

按照官方说明,使用下列命令:

1
yarn create strapi-app <project-name>

会有两种安装方式:快速和自定义,其实就是数据库的选择。在这里我使用mysql配置下来(注意使用数据库mysql时,要求5.7及以上版本才行),安装依赖结束后启动。

1
yarn develop

即可。

按照官方的新手引导即可完成内容的类型创建和添加。

使用 Graphql

strapi使用Graphql 也十分方便。

1
yarn strapi install graphql

使用图片服务端

七牛云、阿里云、腾讯云都有相应的npm插件包(strapi-provider-upload-qiniu,strapi-provider-upload-oss 和 strapi-provider-upload-tencent),安装即可。这些适应器以 strapi-provider-[type] 来区分, typeupload, email, 可直接在npm官方搜索到。
之后我们就可以在 插件 -> FILES UPLOAD — 多媒体档案管理 右侧配置按钮即可进入配置项。

多数据库 😣

./config/environments/**/database.json 中,可以添加多个数据库,然而在图形化添加数据类型时,没有选择数据库的选项,而在添加完后在相应的目录下 modules/[name].settings.json中有相应的字段connection;

*** 临时更改默认连接数据库

database.json 中配置多个数据库后, 临时更改 defaultConnection 再去创建类型模型即可.
网上说在选择内容类型名称时会看到要使用的连接的下拉列表,然而我一直没找到.

*** 利用 hook 来使用 redis 数据库

官方 strapi 规定 strapi-hook-[name] 的npm模块包会自动引入 hook 系统;
因此安装npm i strapi-hook-redis, 然后启用: config/hook.json 添加:

1
2
3
4
5
6
{
...
"redis": {
"enable": true
}
}

然而,根据strapi-hook-redisindex.js 文件说明, 在database.json中添加如 connector: 'strapi-hook-redis' 的数据库字段,却无法跑起来去❌,难😣!

policies 使用

policies 是用来处理路由请求的规则,可以做校验或对其他的接口操作(如定时器,logger等)。

CLI工具

如果是全局安装了 strapi, 则直接使用;
局部安装可执行 .\node_modules\.bin\strapi

自定义二级域名

  1. 使用 nginxproxy_pass 来代理, 如 /api/ 配置到 http://127.0.0.1:1337/
  2. 更改页面的js为相对路径,在 build 目录下的 index.html 文件,如 /admin/runtime~main.08b11d8f.js 改成 ./admin/runtime~main.08b11d8f.js
  3. 更改config/environments/相应环境/server.json 中的 host 为你的子目录地址,如 leeapps.cn/api/

实际使用

  1. 首次安装使用mysql数据库时,必须yarn develop来运行才能创建管理员登陆帐号
  2. 进入管理页会加载比较久,主要资源js文件太大,在build目录下有个8.5M的js文件,(启用gzip后为5.66M, 在````./config/environments/**/response.json`````````)而安装更多其他插件时则不太影响,整个build目录足足28M多(未启动gzip压缩);
  3. 角色和权限 可以配置所有接口的使用权限
  4. 目测 strapi 提供的 第三方用户授权是面向接口内容的用户的,可以在角色和权限中的提供者内配置或添加自己的第三方用户授权,注意不是管理员用户。