Coder Social home page Coder Social logo

x-chain's Introduction

X-Chain

JS链式操作基础库,支持将纯函数快速接入链式操作,支持一维链、多维链、节点配置、整链配置。

示例

    // 工具包根入口
    U()
    // FIXME 示例1
    F()
        // 链的数据操作
        .action1(val)
        // 链的取值
        .valueOf()
    
    // FIXME 示例2
    F()
        // 链的配置
        .setConfig('key', {
            k1: 'v1',
            k2: 'v2'
        })
        // 链的数据操作
        .action1(val)
        .action2()
        .action3()
        // 链的取值
        .valueOf()
    
    // FIXME 示例3
    F()
        // 链的配置
        .setConfig('action1', {
            k1: 'v1',
            k2: 'v2'
        })
        // 链的数据操作
        .action1(val)
        // 链的配置
        .setConfig('action2', {
            k1: 'v1',
            k2: 'v2'
        })
        .action2()
        // 链的配置
        .setConfig('action2', {
            k1: 'v1',
            k2: 'v2'
        })
        .action3()
        // 链的取值
        .valueOf()
    
    // FIXME 示例3等价
    // 链的配置
    F({
        action1: {
            k1: 'v1',
            k2: 'v2'
        },
        action2: {
            k1: 'v1',
            k2: 'v2'
        },
        action3: {
            k1: 'v1',
            k2: 'v2'
        }
    })
        .action1(val).action2().action3().valueOf()
    
    // FIXME 示例3等价
    // 链的配置
    F({
        action1: {
            k1: 'v1',
            k2: 'v2'
        },
        action2: {
            k1: 'v1',
            k2: 'v2'
        },
        action3: {
            k1: 'v1',
            k2: 'v2'
        }
    })
        .action1(val, {
            k1: 'v3',
            k2: 'v4'
        })
        .action1({
            k1: 'v3',
            k2: 'v4'
        })
        .action2({
            k1: 'v5',
            k2: 'v6'
        })
        .action3({
            k1: 'v7',
            k2: 'v8'
        })
        .valueOf()
    
    
    // FIXME 示例4
    // 链的配置
    F({
        action1: {
            k1: 'v1',
            k2: 'v2'
        },
        action2: {
            k1: 'v1',
            k2: 'v2'
        },
        action3: {
            k1: 'v1',
            k2: 'v2'
        }
    })
        .action1(val).action2().action3()
        .setConfig({
            action1: {
                k1: 'v9',
                k2: 'v10'
            },
            action2: {
                k1: 'v9',
                k2: 'v10'
            },
            action3: {
                k1: 'v9',
                k2: 'v10'
            }
        })
        .action1().action2().action3()
        .setConfig('action1', {
            k1: 'v9',
            k2: 'v10'
        })
        .action1({
            k1: 'v9',
            k2: 'v10'
        })
        .valueOf()
    
    
    // 链示例
    // 一维链
    F().chain([
        ['action1', val, config],
        ['action2'],
        ['valOf']
    ])
    // 等价于
    F().action1(val, config).action2().valOf()
    
    // 二维链
    F().chainTree([
        [
            'action1',
            val,
            config,
            // 子链
            [
                ['action2']
            ]
        ],
        ['valOf']
    ])
    // 等价于
    F().action1(val, config, actions2()).valOf()
    
    // 异步链
    F().asyncAction1(val, config).action2().valOf()
    
    // 链核心
    // 链基类 function T
    // 配置基类 function C
    // 节点基类 function N
    // 实例 function F = new T()
    // 注册节点方法 function T.prototype.registerNode
    // 设置节点配置 function
    T.prototype.setConfig
    // 一维链 function
    T.prototype.chain
    // 多维链
    T.prototype.chainTree
    // 异步链

x-chain's People

Contributors

oxoyo avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.