Dynamic Language Scope
扩展你自己的 领域驱动语法 ,让动态编程更简单
DLS.JS是一个通过 领域驱动语法 去处理 复杂结构数据 的JavaScript库。
我参考了 JSON Schema 的索引规范,通过 ES6 的 Proxy 创建读写代理,支持了一种自定义读写语法;在那之后,我又围绕着这个语法,做了一些其他的工具函数,下面我会简单的介绍一下。
虽然你可能已经知道使用Proxy意味着什么,但我还是要强调一下。这个函数不支持IE11浏览器。
js
import {RW} from 'dlsjs'
// 比如获取到一个对象,它的内容不固定
let ticketData = {}
// 现在需要给他的某个深层属性赋值,这就可以用到我们的 RW 函数
RW(ticketData)['#/assignInfo/assignUser/name'] = 'Tom'
// 上面这行语法等价于
if(!ticketData.assignInfo) ticketData.assignInfo = {}
if(!ticketData.assignInfo.assignUser) ticketData.assignInfo.assignUser = {}
ticketData.assignInfo.assignUser.name = 'Tom'
借助这个特性,或者说类似的设计模式,我还提供了很多常用函数,比如:
- 🕒 不改变内存地址的赋值 (deepAssign, deepMerge)
- 💪 深度对比数据的不同属性 (deepDiff)
- 🔥 链式操作语法驱动 (Chain)
- 🌐 领域JSON解析 (deepConvert)
- 📦 树,表,维表 快捷操作 (list2Tree, treeFind, treeForEach)
- 👫 值判断与特征判断 (isRangeIn, matchRules)