java 调用js 解析yml_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;

相关参考资料

本文同步分享在 博客“雪域迷影”(CSDN)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475185.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java执行程序默认多线程吗_Java多线程 执行程序(1)

本文由作者收集整理所得,作者不保证内容的正确行,转载请标明出处。作者:关新全Java多线程执行程序(1)1.1Thread类static Thread.currentThread返回当前正在执行的线程对象的引用。join 等待线程终止。yield 暂停当前正在执行的线程对象&#…

LeetCode 531. 孤独像素 I

文章目录1. 题目2. 解题1. 题目 给定一幅黑白像素组成的图像, 计算黑色孤独像素的数量。 图像由一个由‘B’和‘W’组成二维字符数组表示, ‘B’和‘W’分别代表黑色像素和白色像素。 黑色孤独像素指的是在同一行和同一列不存在其他黑色像素的黑色像素。 示例: 输入: [[W,…

SSL证书配置指南

http://verisign.itrus.com.cn/html/fuwuyuzhichi/fuwuqizhengshuanzhuangpeizhizhinan/转载于:https://www.cnblogs.com/freeman-rain/archive/2012/04/27/2472856.html

LeetCode 533. 孤独像素 II

文章目录1. 题目2. 解题1. 题目 给定一幅由黑色像素和白色像素组成的图像, 与一个正整数N, 找到位于某行 R 和某列 C 中且符合下列规则的黑色像素的数量: 行R 和列C都恰好包括N个黑色像素。列C中所有黑色像素所在的行必须和行R完全相同。 图像由一个由‘B’和‘W…

简单的数据查询

简单查询的构成:由SELECT 子名 FROM 表 WHERE条件 ORDER BY 排序组成. 练习: 1.查询所有Inter的CPUSELECT * FROM sheet1$ WHERE c_name LIKE intel% 2.查询价格在100-200之间的金士顿内存SELECT * FROM sheet1$ WHERE c_money BETWEEN 100 AND 200 GROU…

java数组显示最大值,java 如何用方法在数组中找到最大值并显示他的名称?

public static void sub(int racetime[], String name[]) {int maxIndex 0; // 记录racetime最大值的下标for (int i 1; i if (racetime[i] > racetime[maxIndex]) {maxIndex i;}}System.out.println("Racetime最大的是" name[maxIndex]);}追问如何将 main和s…

Windows 8桌面的尴尬

刚出炉的Windows8可谓荣宠极致,此时却被指出存在问题,面临失宠的尴尬。到底是什么问题呢? Windows 8中新的用户界面,已被完全证明是两级分化日益严重。  混合操作系统是一个新的GUI概念,友好地触摸界面接口&#xff…

LeetCode 1101. 彼此熟识的最早时间(排序+并查集)

文章目录1. 题目2. 解题1. 题目 在一个社交圈子当中,有 N 个人。每个人都有一个从 0 到 N-1 唯一的 id 编号。 我们有一份日志列表 logs,其中每条记录都包含一个非负整数的时间戳,以及分属两个人的不同 id,logs[i] [timestamp,…

php管道的概念,让你的php命令行程序处理管道数据

linux下有一个强大的命令|(管道提示符).它的作用是将前一个命令的结果交给后一条命令并作为后一条命令的输入.而linux下的大多数命令也都支持这种方式.可是当笔者写完一个php的命令行小程序以后,对于怎样获得前一个命令的结果却陷入了僵局.难道php不支持这样的操作?于是又开始…

【转载】世界各地对BI的应用状况

欧美企业对商务智能的应用 商务智能活动在美国和欧洲比在世界上任何其他地区都要发达,商务智能已经由“旁门左道”转变为“主门正道”。欧美的企业已经认识到商务智能的重要意义,因而对它寄予很高的期望,希望能够通过商务智能充分利用企业以往…

php gearman 扩展,Ubuntu 12.04 安装 gearman 以及php扩展安装脚本

#!/usr/bash#create by lhb#date 2014-05-07#desc install gearman and php extension for Ubuntu 12.04.4 LTS PHP 5.5apt-get update#安装依赖库apt-get install libboost-all-dev gperf libevent1-dev libcloog-ppl0mkdir -pv /home/lhb/software && cd /home/lhb/s…

LeetCode 379. 电话目录管理系统(哈希set)

文章目录1. 题目2. 解题1. 题目 设计一个电话目录管理系统,让它支持以下功能: get: 分配给用户一个未被使用的电话号码,获取失败请返回 -1check: 检查指定的电话号码是否被使用release: 释放掉一个电话号码,使其能够重新被分配 …

数据异构

当下数据系统纷杂,每个公司都可能有多种多样的系统,然而每个系统都可能有部分业务数据可供外部使用。然后,貌似总能听到这个系统与那个系统进行交互的时候,开发人员总是在激烈的讨论如何互相开放API接口。但是这样的API接口真的够…

php sem acquire,PHP | 关于php中sem_get failed for key no space left on device问题的解决方案...

有时我们在处理并发操作时会使用信号量做进程同步,如下一个php应用的例子$sem_id sem_get($id,1,0666,true);sem_acquire($sem_id);...sem_release($sem_id);我们release了资源,但是系统没有真正的释放资源 通过 [rootlocalhost ~]# ipcs -s------ Semaphore Arrays -------- …

LeetCode 250. 统计同值子树(递归)

文章目录1. 题目2. 解题1. 题目 给定一个二叉树,统计该二叉树数值相同的子树个数。 同值子树是指该子树的所有节点都拥有相同的数值。 示例: 输入: root [5,1,5,5,5,null,5]5/ \1 5/ \ \5 5 5 输出: 4来源:力扣(LeetC…

开启MySQL远程访问权限 允许远程连接

1、登陆mysql数据库 mysql -u root -p 查看user表 mysql> use mysql;Database changedmysql> select host,user,password from user;---------------------------------------------------------------| host | user | password …

php 函数报错,PHP报错函数error_reporting()怎么用?

PHP中,报错函数error_reporting()用于规定应该报告何种PHP错误,语法“error_reporting(level)”;使用该函数可以设置在脚本运行时的错误级别,如果没有设置可选参数level,则仅返回当前的错误报告级别。推荐:…

LeetCode 426. 将二叉搜索树转化为排序的双向链表(BST中序循环遍历)

文章目录1. 题目2. 解题1. 题目 将一个 二叉搜索树 就地转化为一个 已排序的双向循环链表 。 对于双向循环列表,你可以将左右孩子指针作为双向循环链表的前驱和后继指针,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。 …

ASP.NET中Request.IsAuthenticated和Request.User.Identity.IsAuthenticated的区别

Reflector 查看 System.Web.dll 中 HttpRequest.cs 的代码: public bool IsAuthenticated {get{return (((this._context.User ! null) && (this._context.User.Identity ! null)) && this._context.User.Identity.IsAuthenticated);} }所以说这两者…

LeetCode 285. 二叉搜索树中的顺序后继(中序遍历)

文章目录1. 题目2. 解题1. 题目 给你一个二叉搜索树和其中的某一个结点,请你找出该结点在树中顺序后继的节点。 结点 p 的后继是值比 p.val 大的结点中键值最小的结点。 示例 1: 输入: root [2,1,3], p 1 输出: 2 解析: 这里 1 的顺序后继是 2。 请注意 p 和…