Home

Awesome

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-x

Usage

First you need to create a new Store with some options.

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