2.0.1 • Published 3 years ago

dom-data-bridge v2.0.1

Weekly downloads
4
License
ISC
Repository
github
Last release
3 years ago

dom-data-bridge

核心功能:解析string格式json数据

安装

// npm 
npm install dom-data-bridge  // 装载
npm update dom-data-bridge   // 更新

// yarn
yarn add dom-data-bridge     // 装载
yarn upgrade dom-data-bridge // 更新

// Browserify(https://github.com/songyijian/dom-data-bridge)
<script src="../dist/index.js"></script> 

引入

import {
  DataDridge,
  parseMuster,
  superParse,
  domDataDridge,
} from 'dom-data-bridge'

domDataDridge

// domDataDridge会过滤: data-dridge 属性的dom ; data-dridge="key" ,把dom内容作为 val

<textarea data-dridge=array id="array" rows="2">
[ '1',2]
</textarea>


let demo = domDataDridge()
    // demo === retrun mew DataDridge(creatfilter)
    // demo.push() === new DataDridge.push()
    // demo.get() === new DataDridge.get()

    // creatfilter push 前的回调
    function creatfilter({key,val}) {
      if (key === ''){
        key = 'object'
        val = 'data-dridge, key为空被creatfilter过滤处理'
      }
      return {key, val}
    }

DataDridge

整理解析不标准数据,按照规则读取。 更多细节见demo/index

var globalConfig = { // 全局配置
  risk:  false, // <superParse> 接受风险解析非标准json
  filter: a => a  // 过滤函数
}

const demo = new DataDridge(globalConfig) demo.dataMap = {} // 原始数据源 demo.config = globalConfig // 全局排除规则

/**

  • @Description: 插入数据
  • @param {object|'{}'|key} wkey 【json|‘{}’】会被解析成对象合并到dataMap,【string】生成{wkey:val}
  • @param {*} val 当wkey=‘{}’时val必填
  • @param {} risk wkey=‘{}’ 是否利用superParse解析 / demo.push( wkey, val = '', risk = globalConfig.risk ) // demo.push( '{"a":1}') // yes // demo.push( 'a', '1',) //yes // demo.push( '{a:1}', '', true) //yes // demo.push( {a:1}, '',fasle) //error // demo.push( '{a:1}', '') // error // demo.push( '[]', '', true) //error

/**

  • @Description: 根据(解析|验证规则)获取数据
  • @param {object} schema {filter:function,risk:boolean,type:,default} 解析|验证规则
  • @param {boolean} risk parseMuster规则
  • @return {object} schema 验证通过的{} */ get(schema, risk = globalConfig.risk)

    schema = { key:{ filter:(a)=>a, risk:false, type: "Object|Array|String|Boolean|Number|RegExp", // parseMuster| RegExp正则验证 default:2 // 默认值 } }

    // 数据处理流程 // filter > type( Object|Array ? risk) > default

### parseMuster
> superParse > parseMuster ,DataDridge 内的解析(验证)规则
```js
let {Object, Array, String, Boolean, Number} = parseMuster;

/**
 * @Description: 解析验证数据类型
 * @param {Object, Array, String, Boolean, Number} a 要解析的'{字符串}'对象, 不可‘[]’
 * @param {boolean} risk 利用eval可以解析一些不规范的{json}
 * @throw {Error} 解析+验证 失败
 */
parseMuster[key](a,risk) // Object&Array == <superParse>

  // Object {}
  parseMuster.Object('{a:1}') // Error
  parseMuster.Object('{a:1}',true) // {a:1}
  parseMuster.Object('{"a":1}') // {a:1}
  parseMuster.Object({a:1},true)  // {a:1}

  // Array []
  parseMuster.Array('{a:1}',true) // Error
  parseMuster.Array('[{a:1},2]') // Error
  parseMuster.Array('[{a:1},2]',true) // [{…}, 2]

  // Number 对NaN做了处理
  parseMuster.Number == Number() 
  parseMuster.Number(NaN) //Error

  parseMuster.String === String()
  parseMuster.Boolean === Boolean()

superParse

superParse 字符串json解析,可针对非标准的数据字符串开启风险解析,

/**
 * @Description: 支持高风险的json字符串解析
 * @param {string} strs 要解析的'{字符串}'对象, 不可‘[]’
 * @param {boolean} risk 利用eval可以解析一些不规范的{json}
 * @return {object} 
 */
superParse(string,risk)
  // string : '{}' | '[]'
  // risk :true = 可以解析一些不规范的{json} 但是存在风险,谨慎使用

superParse('{a:1}') // Error superParse('{"a":1}') // {a:1} superParse('{a:1}',true) // {a:1} superParse('{a:1},2') // Error superParse('{a:1},2',true) // {…}, 2