nodejs库yaml读取yml或yaml配置文件
时间:2022-07-22
本文章向大家介绍nodejs库yaml读取yml或yaml配置文件,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最近在使用TypeScript编写后台接口时,需要读取yaml配置文件,使用到了yaml这个nodejs库,其npm官网地址为:https://www.npmjs.com/package/yaml,github源代码地址为:github.com/eemeli/yaml 比如有如下的config.yaml配置文件:
rxmqtt:
host: 127.0.0.1
port: 11883
user: testuser
pwd: "123456"
id: "this_is_test_2000804_nodejs_water"
clean: true
dbsql:
host: 127.0.0.1
port: 3306
user: root
pwd: "123456"
database: testdb
redis:
host: 127.0.0.1
port: 7001
pwd: 123456
index: 0
http: 8088
rpcUrl: 127.0.0.1:18885
enableMqtt: true
enableDB: true
enableRedis: true
enableWS: true
enableRPC: false
offlineTimeout: 90000
cacheInterval: 10000
使用typescript针对上述config.yaml文件编写对应的config.ts文件如下:
import YAML = require('yaml')
import fs = require('fs')
declare interface MqttConnOpt{
host: string;
port: number;
user: string;
pwd: string;
clean: boolean;
id: string;
}
declare interface DBConnOpt{
host: string;
port: number;
user: string;
pwd: string;
database: string;
}
declare interface RedisConnOpt{
host: string;
port: number;
pwd: string;
db: number;
}
export {
MqttConnOpt,
DBConnOpt,
RedisConnOpt,
Config,
}
class Config {
rxmqtt: MqttConnOpt;
dbsql: DBConnOpt;
redis: RedisConnOpt;
/**
* http 端口
*/
http: number;
/**
* rpcUrl 服务器地址
*/
rpcUrl: string;
/**
* 是否启用mqtt
*/
enableMqtt: boolean;
/**
* 是否启用mariadb
*/
enableDB: boolean;
/**
* 是否启用redis
*/
enableRedis: boolean;
/**
* 是否启用websocket
*/
enableWS: boolean;
/**
* 是否启用RPC
*/
enableRPC: boolean;
/**
* 离线超时时间, 毫秒
*/
offlineTimeout: number;
/**
* 缓存存储间隔, 毫秒
*/
cacheInterval: number;
constructor(){
try{
let buffer = fs.readFileSync('config.yaml', 'utf8');
let config = YAML.parse(buffer);
this.rxmqtt = config['rxmqtt'];
this.dbsql = config['dbsql'];
this.redis = config['redis'];
this.http = config['http'];
this.rpcUrl = config['rpcUrl'];
this.enableMqtt = config['enableMqtt'];
this.enableDB = config['enableDB'];
this.enableRedis = config['enableRedis'];
this.enableWS = config['enableWS'];
this.enableRPC = config['enableRPC'];
this.offlineTimeout = config['offlineTimeout'];
this.cacheInterval = config['cacheInterval'];
}catch(err){
console.log(err)
}
}
/**
* save
*/
public save() {
try{
fs.writeFileSync('config.yaml', YAML.stringify(this))
}catch(err){
console.log(err)
}
}
}
对应的config.js文件如下所示:
"use strict";
exports.__esModule = true;
exports.Config = void 0;
var YAML = require("yaml");
var fs = require("fs");
var Config = /** @class */ (function () {
function Config() {
try {
var buffer = fs.readFileSync('config.yaml', 'utf8');
var config = YAML.parse(buffer);
this.rxmqtt = config['rxmqtt'];
this.dbsql = config['dbsql'];
this.redis = config['redis'];
this.http = config['http'];
this.rpcUrl = config['rpcUrl'];
this.enableMqtt = config['enableMqtt'];
this.enableDB = config['enableDB'];
this.enableRedis = config['enableRedis'];
this.enableWS = config['enableWS'];
this.enableRPC = config['enableRPC'];
this.offlineTimeout = config['offlineTimeout'];
this.cacheInterval = config['cacheInterval'];
}
catch (err) {
console.log(err);
}
}
/**
* save
*/
Config.prototype.save = function () {
try {
fs.writeFileSync('config.yaml', YAML.stringify(this));
}
catch (err) {
console.log(err);
}
};
return Config;
}());
exports.Config = Config;
相关参考资料
- https://www.npmjs.com/package/yaml
- https://github.com/eemeli/yaml
- 使用node解析yaml文件
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 处理Sprint Boot与Storm1.2.2日志实现的冲突,使用logback记录日志
- Docker 命令总结
- python主题LDA建模和t-SNE可视化
- cannot import name ‘imresize‘ from ‘scipy.misc‘
- 一分钟基础:计算机为什么使用二进制?
- 使用hibernate validate做参数校验
- Leetcode No.4 寻找两个正序数组的中位数
- R语言 RevoScaleR的大规模数据集决策树模型应用案例
- 快速学习-sentinel控制台
- 快速学习-sentinel注解支持
- Java工具集-验证码工具类
- RocketMQ 零基础 集群及控制台部署
- Python连接Mariadb数据库
- Linux查看文件,去掉注释行和空白行
- SSH框架分层功能区分