1.0.0 • Published 4 years ago

tofu-master v1.0.0

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

Tofu

ES6模块化的提高前端开发效率的JS工具库 (持续开发中),

<!-- 将dist目录下的Tofu.js放入你的相应工程下,在需要的页面引入 -->
/***使用示例***/

//Node环境
const { Mock } = Tofu

//浏览器环境
const { Mock } = Tofu.default

现包含以下工具 :


Mock

可按照期望的格式随机生成假数据
/***
* 
* @params (props:Object,num?:Number)
* 1.字段名以及字段对应值的长度组成的键值对,以及可选值('img','address','id'),对应值为数组即随机抽取数组中其中一位,可传入深层对象
* 2.生成个数(可选),大于一将返回数组格式数据
*
* @methods 
* 1.add(propName:String,value:Any,start?:Boolean):给对应字段(propName)的首部或末尾(start?)添加指定字段(value)
* 
* ***/

const { Mock } = Tofu

//构造示例
const mockArticles = new Mock({
   title: 5,
   content: 20,
   detail_img: 'img',
   tid: 'id',
   user: {
       name: 3,
       sex: ['男', '女'],
       user_address: 'address',
   }
}, 5)

//原型方法 add() 示例
mockArticles.add('content', '这位作者说:', true)

Options

快速创建适用于options组件的每一项
/***
* 
* @params (labels:Array | String,starting?:Number | Array | Null,propName?:Object)
* 1.每一项的标签名
* 2.自增值的起始值(可选),默认从0开始,如传入null则其值等于其标签名,如传入数组则其值为数组对应项
* 3.统一的键值对字段名(可选),默认为'label -> value'需传入包含'value'和'label'的对象
* 
* ***/

const { Options } = Tofu

//构造示例
const payStatus = new Options('待付款,已付款,退货中,已退货')
//或
const signStatus = new Options(['未签到', '已签到'], 1, { label: 'key', value: 'val' })

Task

创建并立即执行批量定时执行的任务
/***
* 
* @params (fn:Function,num?:Number,delay?:Number,openLog?:Boolean)
* 1.需执行的方法
* 2.方法期望执行次数(可选),默认1次
* 3.每次执行任务的等待时间(可选),默认9秒
* 4.是否打印任务日志(可选),默认开启
*
* @methods 
* 1.stop():直接停止任务
* 
* ***/

const { Task } = Tofu

//构造示例
const showTimeTask = new Task(()=>{
   console.log(`当前时间戳为:${new Date().getTime()}`)
},100,3000)

//原型方法 stop() 示例
showTimeTask.stop()

Looper

快速创建一个环状的数据结构
/***
* 
* @params (...props:any)
* 任意参数,任意类型,将由每一项参数组成环形结构的数据
* 
* @methods 
* 1.reset():重置,将指针移到环的第一项
* 2.next():将指针移到下一位
* 3.prev():将指针移到上一位
* 
* ***/

const { Looper } = Tofu

//构造示例
const autoAnswerLoop = new Looper('emmm...', 'is ok', 'Hi')

//原型方法 next() 示例
autoAnswerLoop.next()

//原型方法 reset() 示例
autoAnswerLoop.reset()

//原型方法 prev() 示例
autoAnswerLoop.prev()

Meteor

创建一个即将消逝的数据
/***
* 
* @params (value:any,delay?:Number,fn?:Function)
* 1.即将消逝的数据
* 2.数据停留时间(可选),默认5秒
* 3.数据消逝后执行的回调(可选,回调参数中包含具体信息),默认为空函数
* 
* @methods 
* 1.wish(fn:Function):如果数据还没有消逝,则调用传入的回调函数(fn),并统计回调成功的次数
* 
* ***/

const { Meteor } = Tofu

//构造示例
const dataWillDie = new Meteor(
    { name: 'Met' }, 
    9000, 
    (res) => { 
        if(res.isCrashed){
            console.log(`
            消逝的数据是${JSON.stringify(res.crashedValue)}
            wish成功调用了${res.meteor.wishComeTrueTime}次
            `);
        }
    }
)

//原型方法 wish() 示例
dataWillDie.wish(val => console.log(`Hi, ${val.name}`))

Black8

创建一个很容易报错的数据
/***
* 
* @params (obj?:any,deep?:Boolean)
* 1.数据源(可选),任意类型,推荐为键值对,如果不是键值对将自动匹配为value属性的值
* 2.是否进行深度构建(可选),默认为关闭,开启后所有的子对象都会转化为Black8的实例
* 
* @methods 
* 1.boom(msg?:String):直接抛出错误信息为(msg)的异常,并对错误信息进行统计
* 2.getErrorInfo(reason?:String):返回对应原因(reason)的错误统计信息,无参数时返回所有统计信息
* 
* ***/

const { Black8 } = Tofu

//构造示例
const userData = new Black8(
    {
        name: 'tony',
        id: 1,
        info: {
            grade: 7,
            sex: 'male',
            borther: {
                name: 'jake',
                grade: 6
            }
        }
    },
    true
)
//或
const dataBetterJustRead = new Black8('you better use me carefully')

//原型方法 boom() 示例
userData.boom('grade should bigger than 1')
//原型方法 getErrorInfo() 示例
console.table(userData.getErrorInfo())

Chaos

创建一片混沌
/***
* 
* @params (length?:Number)
* 1.长度(可选),默认为1,将返回对应长度的混乱的可遍历数组
* 
* @methods 
* 1.evolution(time?:Number):将数组中所有数据进行(time,默认为1)次的随机类型转化或序列化处理
* 
* ***/

const { Chaos } = Tofu

//构建示例
const chaos = new Chaos(100)

//原型方法 evolution() 示例
chaos.evolution(1000)

Cleaner

快速清理一份数据
/***
* 
* @params (obj?:Object,rules?(target,smart,special):Object)
* 1.数据源(可选),要清理的数据,会对对象属性以及子对象都进行深度清理,
* 2.清理规则(可选,{ target?:any,smart?:Boolean,special?:Object }),
*       target:每个属性被清理后的值,默认为undefined
*       smart:是否开启智能模式,即按照属性类型清理为合适的值,默认关闭
*       special:特殊处理组,如数据源中包含对应属性,将按照键值对的值赋给对应属性,默认空对象
* 
* @methods 
* 1.clean():按照规则(构造时传入的rules)执行一次清理(构造函数创建也会自动执行一次)
* 2.setCleanRules(rules?:Object):将实例的规则覆盖为对应的规则(传入的属性才覆盖)
* 
* ***/

const Cleaner = { Tofu }

//构造示例
const userForm = new Cleaner(
    {
        name: 'tony',
        age: 12,
        detail: {
            sex: 'male',
            like: ['singing', 'swimming'],
            borther: {
                age: 10,
                name: 'Jake'
            }
        }
    },
    {
        target: null,
        special: { age: 100 }
    }
)
//或
const initData = new Cleaner();

//原型方法 setCleanRules() 示例
userForm.setCleanRules({ smart: true, special: { age: 13 } })

//原型方法 clean() 示例
userForm.clean();

Snapshot

创建一个保存某个数据的快照的容器
/***
* 
* @params (obj:Object | Array,...props?时间点(1000=1秒))
* 1.数据对象,快照的参照对象
* 2.时间点(可选,可直接传入一个数组,或参数依次传入),将在每个时间点拍下一份快照并保存在容器中
* 
* @methods 
* 1.kaca(sign?:any,once?:Boolean):直接拍下一份标识为sign(默认为'default sign')的快照,
*   如果once为true则此标识的快照只保存一次
* 2.get(sign?:any):获取标识为sign(默认为'default sign')的快照
* 3.timeTravel(sign?:any):将快照的参照对象回溯到对应标识(默认为'default sign')的状态
* 
* ***/

const { Snapshot } = Tofu

//构造示例
let data = { num: 0 };         
const dataStates = new Snapshot(data);
//或
let arr = [1, 2, 3];
const arrStates = new Snapshot(arr, 1000, 2000, 3000, 5000, 6000);

//原型方法 kaca() 示例
dataStates.kaca('init data');

data.num++;

dataStates.kaca('num++');

//原型方法 get() 示例 
console.log(dataStates.get('init data'));

//原型方法 timeTravel() 示例 
data.num += 5;
dataStates.timeTravel('num++');
console.log(data);
1.0.0

4 years ago