1.2.1 • Published 3 years ago

vue-injection-helper v1.2.1

Weekly downloads
36
License
MIT
Repository
github
Last release
3 years ago

vue-injection-helper

help you deal with injection problem

getMockInstance

const mock = getMockInstance(SomeService)
function AnotherService(value: typeof mock){
    // ...
}

const value = SomeService()
AnotherService(value)

Generate a mocked instance of Service (you can call it composition function or just service) so that it would be very simple to use with Typescript

getInjectionToken

const token = getInjectionToken(SomeService)
const token = getInjectionToken(SomeService,'name')

Make it easy to get injection token, with certain type support

hideProvider

setup(){
    const service = inject(token, defulatValue)
    hideProvider(token)
}

Hide the provider service, so the subtree of current components will not get undefined

defineModule

setup(){
    const defaultService = SomeService()
    const {innerContext:moduleContext, token] = defineModule(defaultService,'inner-token')
    const [innerContext:moduleContextOutOfModule, token:contextTokenInModule] = defineModule(defaultService,'inner-token','outer-token')

Generate a Module, with inner or outside context

Return the context service and the inner token

Set up a module

Isolating the attention

aggregateEvent & aggregateRef

setup(){
    const aggregation = {
        // aggregateEvent will get the function for boardcast
        // you shoud assing the type of it
        change: aggregateEvent<()=>void>('service-in-module-token',['change'])
        // ref agent part of the service
        model: aggregateRef('service-in-module-token',['model','value','name'],"")
    }
    // you can also set up a new module with it
    const subModule = defineModule(aggregation,'sub-context-token')
}

use it within a module

why vue-injection-helper is better

// if you use vuex
const service = {
    state:{
        name:'',
        password:'',
    },
    mutations:{
        changeName(){},
        changePassword(){}
    }
}
// when you want to add some logic
const service = {
    state:{
        name:'',
        password:'',
        newState:''
    },
    mutations:{
        changeName(){},
        changePassword(){},
        changeNewState(){}
    }
}
// you need to handle two different zone of service
// and type definition is too hard to management

// when you use vue-injection-helper
const aggregation = {
    name: aggregate("service-token",['model','value','name'],'')
    password:aggregate("service-token",['model','value','password'],'')
    newState: ref('')
}
// if this logic is not part of upper service
// you can just define a ref here

// meanwhile
// you can just annouce a aggregation, and link it later
const aggregation = {
    name: aggregate('',[],'')
    password:aggregate('',[],'')
}
// or just use ref instead
const aggregation = {
    name:ref('')
    password:ref('')
}

With such tools accelerating your development ——

HaveFun!

1.2.0

3 years ago

1.2.1

3 years ago

1.1.8

3 years ago

1.1.7

3 years ago

1.1.6

3 years ago

1.1.5

3 years ago

1.1.4

3 years ago

1.1.3

3 years ago

1.1.2

3 years ago

1.1.1

3 years ago

1.1.0

3 years ago

1.0.7

3 years ago

1.0.6

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago