博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jscalpel A small feature library that makes it easier to manipulate objects
阅读量:5797 次
发布时间:2019-06-18

本文共 3773 字,大约阅读时间需要 12 分钟。

A small feature library that makes it easier to manipulate objects

Overview

It is tiny but very useful and can help you handle javascript native objects. Data-driven interface development is very common today, we are in the , , will encounter a lot of object processing, including set the default value, query, assignment, etc., is born for this scene.

jscalpel is little poor, gzip less than 3k, so a library you can use it anytime, anywhere without worrying about anything.

Document

View the document please visit

Installation

Install using npm

npm install jscalpel --saveyarn add jscalpel --save复制代码

Useage

Es6

import Jscalpel from 'jscalpel'复制代码

Include in html

复制代码

APIS

parameter type default value use isRequired required version
target string/object {} target true all
deep boolean false whether or not to copy the target object in depth false all
prefix string undefined public prefix, automatically added for the keys false all
success function function () {} The function that was called when the analysis was successful true ^0.6.2
error function function () {} The function that is called when the analysis fails. false ^0.6.2
path string/array/function [] path false ^0.6.2
plugins array [] A plug-in set, similar to the webpack plugins. false ^0.6.2

Code

1. simple pattern

// mock datavar data = {  status: '0',  data: {    response: {      code: 1,      msg: 'response msg'    }  }}// super easyjscalpel.get(data, 'data.response.code'); // return 1// bind datavar jscalpelIns = jscalpel({  target: data})jscalpelIns.get('data.response.code') // returned 1;jscalpelIns.set('data.response.code', 12);jscalpelIns.set({  'status': '1'})jscalpelIns.get('data.response.code') // returned 12jscalpelIns.get('status') // returned 1jscalpelIns.has('data.response.code') // returned truejscalpelIns.del('data.reponse.code') jscalpelIns.get('data.reponse.code') // returned undefined;jscalpelIns.has('data.reponse.code') // returned false;复制代码

2.advanced patterns

const res = {  data: {    article: [{      articleId: 0,        title: 'jscalpel'    }]  },  response: {    code: '0',    msg: 'success'  }}jscalpel({	target: res,  path: ['data.article.0', 'response.msg'],  success:  (article, msg) => {  	console.log('keys=>array=>output:', article, msg);  }})jscalpel({	target: res,  path: 'response.msg',  success:  (msg) => {  	console.log('keys=>string=>output:',msg);  }});复制代码

3.use prefix

jscalpel({	target: res,  prefix: 'response',  path: ['code', 'msg'],  success:  (code, msg) => {  	console.log('prefix=>output:', code, msg);  }})复制代码

4.dynamic path

jscalpel({  target: res,  path: () => ['code', 'msg'].map((key) => `response.${key}`),  success:  (code, msg) => {  	console.log('dynamic=>output:', code, msg);  }})jscalpel({	target: res,  deep: true,  prefix: 'response',  path: ['code', 'msg'],  success:  (code, msg, finalRes, keys) => {    console.log( finalRes === res);  	console.log('deep into callback:', code, msg, finalRes, keys);  }});复制代码

5.use plugins

const logicMap = {  'code': {    match: ({value, name}) => value === '0',    success: ({value, name}) => {      console.log('logicPlugin', value, name);    }  }}jscalpel({  target: res,  deep: true,  prefix: 'response',  path: ['code', 'msg'],  plugins: [jscalpel.jscalpelType, jscalpel.jscalpelLogic(logicMap)],  success: (code, msg, finalRes, keys) => {    console.log( finalRes === res);  	console.log('deep into callback:', code, msg, finalRes, keys);  }})复制代码

Related projects

It is convenient for you to extract the required fields from one object to generate another object.

Changelog

2017.9.14

Add jscalpelLogic plugin, reduce ifelse, make run logic configurable

2018.3.08

add orm

2018.9.04

add get method

import { get } from 'jscalpel';// get(data, path ,defaultValue);复制代码

License

.

转载地址:http://hnsfx.baihongyu.com/

你可能感兴趣的文章
CentOS 6.6 FTP install
查看>>
C#------判断btye[]是否为空
查看>>
图解Ajax工作原理
查看>>
oracle导入导出小记
查看>>
聊一聊log4j2配置文件log4j2.xml
查看>>
NeHe OpenGL教程 第七课:光照和键盘
查看>>
修改上一篇文章的node.js代码,支持默认页及支持中文
查看>>
Php实现版本比较接口
查看>>
删除设备和驱动器中软件图标
查看>>
Android studio开多个窗口引起的问题
查看>>
第四章 TCP粘包/拆包问题的解决之道---4.1---
查看>>
RedisRepository分享和纠错
查看>>
第二十篇:类操作符重载的相关规定与具体实现示例
查看>>
html语言
查看>>
Unity接入谷歌支付
查看>>
laravel 使用 vue (gulp)
查看>>
QT 信号槽connect中解决自定义数据类型或数组作为函数参数的问题——QT qRegisterMetaType 注册MetaType——关键:注册自定义数据类型或QMap等容器类...
查看>>
HTTP之二 http 301 和 302的区别
查看>>
从源码看集合ArrayList
查看>>
浅解.Net分布式锁的实现
查看>>