JsonUtil将vue文件转换成字符串 - 戴向天

51 篇文章 0 订阅
33 篇文章 0 订阅

大家好!我叫戴向天

QQ群:602504799

import jsPlugIn from './js-plugIn'

/**
 * Author:戴向天
 * createdTime: 2020-09-04
 * 
 * 创建该文件的目的是为了将vue文件进行相对应的转换成字符串
 * 然后通过解析字符串来进行生成vue文件
 * 
 * 因为有些机制的传输数据格式必须为字符串形式
 * 所以可以通过jsonUtils来进行操作编译和反编译
 * 
 */

const jsonUtils = window.JSON

jsonUtils.JsonValToString = function (obj = {}) {
    const resObj = {}
    for (let key in obj) {
        if (jsPlugIn.getType(obj[key], 'function')) {
            resObj[key] = obj[key].toString();
        } else if (jsPlugIn.getType(obj[key], 'json')) {
            resObj[key] = jsonUtils.JsonValToString(obj[key])
        } else {
            resObj[key] = obj[key]
        }
    }
    return resObj
}

jsonUtils.JsonValToJson = function (obj = {}) {
    const resObj = {}
    for (let key in obj) {
        if (jsPlugIn.getType(obj[key], 'string') && !obj[key].indexOf('function')) {
            const arr = obj[key].split(' ')
            arr.shift()
            const funName = arr.join('').split('(')[0]
            if (['String', 'Number', 'Array', 'Boolean', 'Object', 'Function'].indexOf(funName) >= 0) {
                resObj[key] = eval("(" + funName + ")")
            } else {
                resObj[key] = eval("(" + obj[key] + ")")
            }
        } else if (jsPlugIn.getType(obj[key], 'json')) {
            resObj[key] = jsonUtils.JsonValToJson(obj[key])
        } else {
            resObj[key] = obj[key]
        }
    }
    return resObj
}

jsonUtils.JsonToString = (obj = {}) => jsonUtils.stringify(jsonUtils.JsonValToString(obj))

jsonUtils.StringToJson = (str = '') => jsonUtils.JsonValToJson(jsonUtils.parse(str))

export default jsonUtils

测试:

cmpName:组件名称
component:导入的vue文件

Vue.component(cmpName, JsonUtils.StringToJson(JsonUtils.JsonToString(component)));
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值