java 调用js 解析yml_nodejs库yaml读取yml或yaml配置文件
最近在使用TypeScript編寫(xiě)后臺(tái)接口時(shí),需要讀取yaml配置文件,使用到了yaml這個(gè)nodejs庫(kù),其npm官網(wǎng)地址為: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針對(duì)上述config.yaml文件編寫(xiě)對(duì)應(yīng)的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 服務(wù)器地址
*/
rpcUrl: string;
/**
* 是否啟用mqtt
*/
enableMqtt: boolean;
/**
* 是否啟用mariadb
*/
enableDB: boolean;
/**
* 是否啟用redis
*/
enableRedis: boolean;
/**
* 是否啟用websocket
*/
enableWS: boolean;
/**
* 是否啟用RPC
*/
enableRPC: boolean;
/**
* 離線超時(shí)時(shí)間, 毫秒
*/
offlineTimeout: number;
/**
* 緩存存儲(chǔ)間隔, 毫秒
*/
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)
}
}
}
對(duì)應(yīng)的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;
相關(guān)參考資料
本文同步分享在 博客“雪域迷影”(CSDN)。
如有侵權(quán),請(qǐng)聯(lián)系 support@oschina.cn 刪除。
本文參與“OSC源創(chuàng)計(jì)劃”,歡迎正在閱讀的你也加入,一起分享。
總結(jié)
以上是生活随笔為你收集整理的java 调用js 解析yml_nodejs库yaml读取yml或yaml配置文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Oracle数据库物理存储结构管理遇到的
- 下一篇: 建立一颗二叉排序树,并删除该二叉排序树上