Skip to content

DLS.JS

Dynamic Language Scope

扩展你自己的 领域驱动语法 ,让动态编程更简单


DLS.JS是一个通过 领域驱动语法 去处理 复杂结构数据 的JavaScript库。

我参考了 JSON Schema 的索引规范,通过 ES6Proxy 创建读写代理,支持了一种自定义读写语法;在那之后,我又围绕着这个语法,做了一些其他的工具函数,下面我会简单的介绍一下。

虽然你可能已经知道使用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)