Vuex:为什么我们用大写写突变,动作和getter?

时间:2017-06-15 15:54:34

标签: vue.js vuejs2 vuex

我想知道为什么我们用大写的方式编写突变,动作和getter的函数名?这个惯例来自哪里?

export default {
  SOME_MUTATION (state, payload) {

  },

  ANOTHER_MUTATION (state, payload) {

  },
}

2 个答案:

答案 0 :(得分:7)

以全部大写形式写出常量是long standing coding style

来自Vuex documentation

  

这是一种常见的模式,可以将常量用于突变类型   各种Flux实现。这允许代码利用   像linters这样的工具,并将所有常量放在一个文件中   允许您的协作者一目了然地查看哪些突变   可以在整个应用程序中使用

因此,它实际上只是遵循了大部分以大写命名常量的悠久传统。这不是必需的。

  

是否使用常量在很大程度上是一种偏好 - 它对于许多开发人员的大型项目很有帮助,但如果你不喜欢它们,它是完全可选的

答案 1 :(得分:7)

Bert接受的答案有点误导。传统上,常量变量用大写字母表示,但是在问题中使用常量的方式并不能使其成为常量。

  

这允许代码利用像短绒棉一样的工具

Vue.js官方文档recommends using all caps,但作为附加文件中的变量。这样就可以在其他文件中要求可用的功能名称,并使用自动完成功能。

mutation-types.js:

export const SOME_MUTATION = 'SOME_MUTATION'

store.js:

import Vuex from 'vuex'
import { SOME_MUTATION } from './mutation-types'

const store = new Vuex.Store({
  state: { ... },
  mutations: {
    // we can use the ES2015 computed property name feature
    // to use a constant as the function name
    [SOME_MUTATION] (state) {
      // mutate state
    }
  }
})

请在此处注意不同的书写方式(计算属性名称带有方括号):

[SOME_MUTATION] (state) { }

如果仅以大写形式编写函数名称(即SOME_MUTATION(state) { }),则唯一的好处就是视觉上的区别,将vuex函数与其他函数分开,但是我认为这没有多大意义。坚持使用经过计算的属性名称([SOME_MUTATION] (state))来获得所有好处。