nodejs的配置中心
Switch branches/tags
Clone or download
Latest commit 7f6cffd Dec 17, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
config add Nov 14, 2018
doc 完成tcp部分 Dec 15, 2018
lib 添加mq队列 Dec 12, 2018
public add layui Dec 11, 2018
src 完成tcp部分 Dec 15, 2018
test 添加mq队列 Dec 12, 2018
views 添加mq队列 Dec 12, 2018
. npmignore add npm Nov 14, 2018
.gitignore 去掉lock文件 Nov 19, 2018
LICENSE Initial commit Nov 13, 2018
README.md add data md Nov 20, 2018
index.d.ts 添加接口文件 Nov 21, 2018
index.js 添加客户端 Nov 14, 2018
package.json 添加扩展 Dec 17, 2018
pm2.json add pm2 Nov 14, 2018

README.md

node-config

nodejs的配置中心

启动配置中心并存储本地配置,客户端通过连接配置中心获得实时的配置更新。

说明

  1. 启动server,即可启动配置中心以及一个简单的配置管理网站。
  2. 启动client,自动根据参数链接配置中心。本地可以使用一份默认配置,也可以使用远程配置。

示例地址

server

下载

将项目下载本地。可以从github上下载。下载地址

启动

node lib/server.js或者npm run start

也可以使用pm2来启动,项目根目录下提供了一份启动配置。使用pm2 start pm2.json可以启动。

使用配置管理界面

  1. 打开当前ip加端口3000的网址:127.0.0.1:3000。这个端口是可以自己修改的。
  2. 添加或者修改配置。
  3. 已连接的客户端会自动更新最新的配置。

修改本地配置

本地配置在config/default.js文件中,也可以根据当前的NODE_ENV创建一个对应的配置文件:developement.js等。

修改配置让项目更合适你的需要。

module.exports = {
    //项目名称
    name: "node-config",
    //中心端口
    port: 3000,
    //调试
    debug: true,
    //返回对象
    body: {},
    //api的前缀
    prefix: "",
    //心跳检测的配置
    heart: {
        //端口
        port: 8000,
        //令牌
        token: ""
    }
}

client

执行npm install --save tcp-node-config引入客户端库。

启动

客户端需要实例化,传入服务端的地址和创建成功的可执行方法。

const node_config = require("tcp-node-config");
const Client = node_config.Client;
const client = new Client({}, function () {
    console.log("已连接")
});

也可以使用自定义的配置启动客户端。

const cfg={
        //远程地址
        host: "127.0.0.1",
        //心跳服务端口
        port: 8000,
        //接口所在的端口
        server_port: 3000,
        //验证用到的令
}
const client = new Client(cfg, function () {
    console.log("已连接")
});

使用

获取对应的配置,自动更新远程数据。如果不存在返回null。

let data = await client.config("def", "a")
    console.log(data)

监听

可以监听数据变化或者服务停止等方法。

//监听数据变化
client.on("data", function (namespace,key) {
    console.log(key)
})
client.on("end", function () {
    console.log("结束")
})
client.on("error", function (err) {
    console.log("错误")
})

存储协议

init(),存储库的初始化方法。在项目启动的时候会第一时间调用。

list(),获取命名空间列表。这里使用命名空间区分不同的配置文件。这里默认使用def来保存第一个文件。

all(namespace = "def"),获取对应命名空间下的配置内容。

update(namespace, txt),更新一个命名空间的所有配置。这里传入的是字符串,保存的也是字符串。

get(key, namespace = "def"),获取对应命名空间下的某个字段的内容。这里需要警惕,配置不一定是json对象的。

set(key, val, namespace = "def"),设置对应命名空间下的某个字段的值。

login(user, pwd),登录判断,目前返回true或者false就可以了。

可期待的特性

  1. 多级配置自由获取
  2. 使用sql、nosql数据库保存信息
  3. 更完善的权限管理
  4. 更好看的界面