dyc87112 / spring-cloud-config-admin

Spring Cloud Config的综合管理后台(简称:SCCA)
https://dyc87112.github.io/spring-cloud-config-admin-doc/
Apache License 2.0
658 stars 262 forks source link

关于存储配置是如何做到转换为YML模式和Property模式的? #79

Closed alliswellhuan closed 6 years ago

alliswellhuan commented 6 years ago

请教一个技术问题: 配置管理界面中关于配置存储有三种方式,一种是grid列表,一种是YML模式,一种是Property模式; 查看了源代码,这块的数据主要是通过查询数据库后返回Properties对象; 不明白这里Properties对象是如何转换为YML格式的文件和Property模式的文件,没有找到对应的代码

查看了前台js,存储配置是使用代码插件monaco editor来实现的,大致看了下js文件,没有找到yml格式和Property格式如何转换,难道是在js里面将Properties对象一个个字符串拼接?

实在困惑... ...

stone-jin commented 6 years ago

@alliswellhuan ,这个在前端的js里面,

主要是用了这个npm包。import * as yaml from 'js-yaml';做json到yaml的转换,yaml到json,到时展示上前端遍历做了下。 所以yml-->property,就是先yml--->json--->遍历keys,然后最终变成了对应的properties了

changeYamlPage(){
        let params = {}
        for (let i = 0; i < this.persistent.length; i++) {
            params[this.persistent[i].key] = this.persistent[i].value;
            if (
                this.persistent[i].key === '' ||
                this.persistent[i].value === ''
            ) {
                toastr.error('当前存储配置不能为空,请进行补全!');
                return;
            }
        }
        this.persistent = [];
        let keys = Object.keys(params);
        for (let i = 0; i < keys.length; i++) {
            this.persistent.push({
                key: keys[i],
                value: params[keys[i]],
            });
        }
        this.code = yaml.safeDump(this.translateToYaml(params));
        if(this.code.indexOf('{}') == 0){
            this.code = ''
        }
        $("#m_modal_yaml_editor").modal('show');
    }
changePropertyPage(){
        let params = {}
        for (let i = 0; i < this.persistent.length; i++) {
            params[this.persistent[i].key] = this.persistent[i].value;
            if (
                this.persistent[i].key === '' ||
                this.persistent[i].value === ''
            ) {
                toastr.error('当前存储配置不能为空,请进行补全!');
                return;
            }
        }
        this.persistent = [];
        let keys = Object.keys(params);
        for (let i = 0; i < keys.length; i++) {
            this.persistent.push({
                key: keys[i],
                value: params[keys[i]],
            });
        }
        this.code = yaml.safeDump(this.translateToYaml(params));
        this.code_properties = ``;
        keys.map(item => {
            this.code_properties +=
                item + '=' + params[item] + '\n';
        });
        $("#m_modal_property_editor").modal('show');
    }