介绍

官方文档:https://ext.dcloud.net.cn/plugin?id=4425

痛点

实际开发中很多插件需要配置文件才可以正常运行,如果每个插件都单独进行配置的话(每个云函数要创建自己的配置.json),就会如下面图:

UniCloud模块 - Uni-config-center 配置中心 - 图1

改善

uni-config-center就是用了统一管理这些配置文件的,使用uni-config-center后的目录结构如下

UniCloud模块 - Uni-config-center 配置中心 - 图2

好处(官方说的)

1、配置文件统一管理,分离插件主体和配置信息,更新插件更方便
2、支持对config.json设置schema,插件使用者在HBuilderX内编写config.json文件时会有更好的提示(后续HBuilderX会提供支持)

======================

创建

建议直接通过引入 uni-admin 的方式创建,这个是整合了 Uni-config-center 配置中心 + Uni-id 用户体系,组成的注册、修改信息、停用启用、删除、角色管理、权限管理的框架。
https://uniapp.dcloud.io/uniCloud/admin

直接在 HBuilderX 中创建 uniCloud admin 项目即可
image.png
创建后,会自动把配置中心,放在公共模块里面;并且配置中心已经集成了uni-id 的基本配置。
image.png

创建配置

image.png
参考 uni-id 的方式,在 uni-config-center 配置中心文件夹下创建文件夹,然后创建 config.json 文件,里面编写json即可。

使用配置

某个云函数中使用配置:

  1. // 1、先通过后端NodeJS 的 CommonJS 的方式引入 配置中心
  2. const createConfig = require('uni-config-center')
  3. // 2、通过 createConfig 创建某个插件的配置,参数是一个对象
  4. const uniIdConfig = createConfig({
  5. // 必要属性,插件名,同uni-config-center下的目录名,表示这个配置是哪个插件的
  6. pluginId: 'uni-id',
  7. // 非必要属性,在这个云函数中,可以自定义默认配置,也可以在 uni-config-center 配置中心文件夹下的 config.json 里面配置
  8. defaultConfig: {
  9. tokenExpiresIn: 7200, // 全平台token过期时间(秒),未指定过期时间的平台会使用此值
  10. tokenExpiresThreshold: 600, // checkToken时如果token有效期小于此值则自动获取新token
  11. },
  12. // 非必要属性,自定义默认配置(上面的defaultConfig属性) 和 用户配置(config.json)的合并规则,若不设置,会对默认配置和用户配置进行深度合并
  13. customMerge: function(defaultConfig, userConfig) {
  14. // defaudltConfig 是 默认配置
  15. // userConfig 是 用户配置
  16. // 这里 Object.assign 是 自定义默认配置 和 用户配置 合并,用户配置去 覆盖 自定义配置(Object.assign() 函数的设定)
  17. return Object.assign(defaultConfig, userConfig)
  18. }
  19. })
  20. // 假设 config.json 有以如下配置
  21. // {
  22. // "tokenExpiresIn": 7200,
  23. // "passwordErrorLimit": 6,
  24. // "bindTokenToDevice": false,
  25. // "passwordErrorRetryTime": 3600,
  26. // "app-plus": {
  27. // "tokenExpiresIn": 2592000
  28. // },
  29. // "service": {
  30. // "sms": {
  31. // "codeExpiresIn": 300
  32. // }
  33. // }
  34. // }
  35. // 3、获取配置的值
  36. let all = uniIdConfig.config() // 获取全部配置,注意:uni-config-center 内不存在对应插件目录时会返回空对象
  37. let a = uniIdConfig.config('tokenExpiresIn') // 指定键值获取配置,返回:7200
  38. let b = uniIdConfig.config('service.sms.codeExpiresIn') // 指定键值获取配置,返回:300
  39. let c = uniIdConfig.config('tokenExpiresThreshold', 600) // 指定键值获取配置,如果不存在则取传入的默认值,返回:600
  40. // 4、获取文件绝对路径
  41. let d = uniIdConfig.resolve('custom-token.js') // 获取uni-config-center/uni-id/custom-token.js文件的路径
  42. // 5、引用文件(require)
  43. let e = uniIdConfig.requireFile('custom-token.js')
  44. // 使用require方式引用uni-config-center/uni-id/custom-token.js文件。
  45. // 文件不存在时返回undefined,文件内有其他错误导致require失败时会抛出错误。
  46. // 6、判断是否包含某文件
  47. let f = uniIdConfig.hasFile('custom-token.js') // 配置目录是否包含某文件,true: 文件存在,false: 文件不存在