TySheMo是一个前端数据(状态)管理工具。它面向复杂的前端数据管理,用于在前端结构化数据的不断变化中,清晰地控制数据变更,使数据变更不引发错误,而且方便表单数据的恢复、校验、格式化提交。html
在须要对数据类型进行校验,数据变更引起界面变更,数据校验,格式化后输出数据,保证数据运算时获得想要的结果等一系列复杂的数据变化需求,TySheMo能够在项目中发挥不错的的做用。虽然它不追求性能,可是在确保数据类型和格式安全上,它具备很是优秀的思想,让对数据有强烈依赖的业务能够在复杂的逻辑中保证不出错。前端
虽然咱们已经有typescript这样的类型检查系统,可是,typescript是在编译时进行类型检查的,在运行时,咱们须要对一些动态的数据(特别是从后台api返回的数据)进行类型和格式检查。在支持graphql的系统中彷佛没必要这么担忧,但目前大多数的restful应用,仍是须要有一个工具去作这样的一件事。vue
TySheMo将数据类型的检查抽象出三个层面的对象:原型、类型、规则。它们分别在原子、结构、逻辑层面对数据进行校验,并且是在运行时。若是校验失败,你还能够经过抛出的错误获得更为详细的信息。react
TySheMo内部提供了多个数据原型(相似基础数据类型)扩展,而且直接使用js标准库中的内置对象做为原型,免去须要用字符串来定义类型的麻烦。内置了Dict, List, Enum, Tuple, Range这几种类型。经过对后台api数据的检查,就能够即时避免因为api返回数据类型或结构引发的错误。同时,它还提供了更为丰富的类型检查规范,你能够阅读它的文档了解更多用法。
git
TySheMo提供了一种定义结构化数据的方式,用于对一个结构化数据进行规范化定义。数据模式是一个抽象的数据结构范型,它不是具体的数据,但规定了数据自己的结构规范。而且,做为工具库,TySheMo提供了Schema类,schema实例拥有根据定义规范数据的能力。github
更为重要的是Schema是一种数据结构和行为逻辑约束的范例。行业里有json schema这样的先驱,咱们在这些先行者的基础上,提炼出对业务有帮助的部分,造成一套相似后台数据库结构描述同样的定义语言,用以在前端去描述一个结构化,但随时变化的数据对象。typescript
它基于数据类型检查系统,你须要在type属性传入对应的类型。对于Schema实例而言,它是无状态的,它所提供的接口是纯粹的工厂,不会产生任何内部资源。这样的设计,使得Schema有可能成为规范,在开发中/测试中,确保业务中给的数据是按照规范给定的,不然,就会抛出错误。
数据库
TySheMo提供了基于Schema的数据模型Model,是一个管理状态数据的容器。数据被放在数据模型中管理时,因为Schema的约束,数据不得不按照规范运行。它提供了当代数据响应的特性,你能够观察数据变化,从而来决定如何变更界面。json
做为工具库,TySheMo从业务出发对数据模型的写做方式进行了约束。一个数据模型,是一个class,而且须要定义它的schema。要将数据放到模型中进行管理,你必须实例化模型,而且使用模型接口进行数据修改和格式化。但到最后,你会发现,模型的使用异常简单,真正复杂的部分,每每在于,如何经过Schema制定你的数据规范。api
这只是对Model的数据响应最简单的一个演示,你还能够经过Model提供的能力,完成更多的事情。你能够把它和react, vue, angular结合使用,你能够在任何应用中使用它。特别是在表单数据管理上,TySheMo能够作到很是出色。关于Model的细节和更多特性,你能够阅读使用文档了解。
TySheMo不解决全部问题,而是专一将一个应用中的某个局部的数据管理作到极致。你历来没有体验过,同一个表单的业务逻辑,你不须要修改业务逻辑代码部分,而只须要修改UI交互的逻辑,就能够彻底适应react, vue, angular。你也许不须要它,但也许也须要它,这取决于你如何在你但应用中管理你的数据。若是你对这个项目感兴趣,能够经过github参与项目。
(完)