weex-x
v0.1.2
Published
Flux-inspired-Architecture-Vuex-inspired-Architecture for Weex.
Readme
Weex-x
Flux-inspired-Architecture-Vuex-inspired-Architecture for Weex.
note: this repo only works well with Weex JS Framework v0.16.x and higher.
Install
npm install weex-xUsage
First you need to create a new Store with some options.
state: the real JSON data work in the background.getters: you can define some getters whose value depends on the state.mutations: you can not modify the state directly but can define some mutations to dispatch anytime.actions: you can also define some functions to dispatch those mutations.
For example:
import { Store } in 'weex-x'
const store = new Store({
state: { firstName: 'Jinjiang', lastName: 'ZHAO' },
getters: { fullName: state => `${state.firstName} ${state.lastName}` },
mutations: {
setFirstName (state, name) {
state.firstName = name
},
setLastName (state, name) {
state.lastName = name.toUpperCase()
}
},
actions: {
setFirstName: ({ commit }, payload) => commit('setFirstName', payload),
setLastName: ({ commit }, payload) => commit('setLastName', payload),
setFullName({ commit }, payload) {
const result = payload.split(' ', 2)
commit('setFirstName', result[0])
commit('setLastName', result[1])
}
}
})And then just set store to the top Vm options with the store you created and set init to each Vm options. You can access the store by $store in Vms.
import { Store, init } in 'weex-x'
const store = new Store({...})
export {
store,
init,
}If your Vm already has init in its options. You can use it like this:
import { Store, init } in 'weex-x'
const store = new Store({...})
init = init(function () {
// todo
})
export {
store,
init,
}At last you can quickly define more Vm options with some helpers:
import { Store, init, mapGetters, mapActions } from 'weex-x'
const store = new Store({...})
export {
store,
init
}
export const computed = mapGetters([
'firstName',
'lastName',
'fullName'
])
export const methods = mapActions([
'setFirstName',
'setLastName',
'setFullName'
])Examples
See examples for more.
Contribution
npm run buildto build generated javascript code to./dist/npm run devto watch the./src/*changes to run the build processnpm run testto run test cases- in
./examples/you cannpm i && npm run buildto build all examples to./examples/dist/ - also in
./examples/you cannpm run devto watch changes of all examples to run the build process
