Vuex:为啥我们用大写字母编写突变、动作和吸气剂?

Posted

技术标签:

【中文标题】Vuex:为啥我们用大写字母编写突变、动作和吸气剂?【英文标题】:Vuex: Why do we write mutations, actions and getters in uppercase?Vuex:为什么我们用大写字母编写突变、动作和吸气剂? 【发布时间】:2017-11-18 05:02:58 【问题描述】:

我想知道为什么我们把突变、动作和吸气剂的函数名写成大写?这个约定从何而来?

export default 
  SOME_MUTATION (state, payload) 

  ,

  ANOTHER_MUTATION (state, payload) 

  ,

【问题讨论】:

【参考方案1】:

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

这允许代码利用像 linter 这样的工具

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)) 以获得所有好处。

【讨论】:

【参考方案2】:

long standing coding style 常量全部大写。

来自 Vuex documentation:

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

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

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

【讨论】:

感谢您的详细解释。 这个答案实际上具有误导性,如下面的@Pwdr 答案所述 @pawel 帮助我理解。您是否认为这具有误导性,因为您认为答案是输入全部大写的名称会使它们保持不变? @Bert 我相信 Vuex 文档的附加部分并不表示突变函数名称应该用大写字母书写。实际上,您链接的页面上的示例显示了以小写字母编写的突变名称,例如'增量'。确实,用大写字母编写常量是一种流行的编码风格,但那是另一回事了。我相信对 OP 问题的正确答案是:“我们没有用大写字母编写突变函数名称”。 @pawel 我明白你的意思。我以不同的方式阅读了这个问题。具体来说,问题是“这个约定从何而来?”而不是“我应该这样做吗?”。我认为 pwdr 的答案更多地是将名称定义为常量的优点,它们是否大写并不重要。

以上是关于Vuex:为啥我们用大写字母编写突变、动作和吸气剂?的主要内容,如果未能解决你的问题,请参考以下文章

Vuex 更新状态

javascript vuex状态和吸气剂

javascript Vuex101:吸气剂

VueJS - 未定义 Vue

测试 VueX 商店

为啥 TForm.Handle 是一个吸气剂而不是一个字段?