【问题标题】:What are the benefits of React's keyMirror?React 的 keyMirror 有什么好处?
【发布时间】:2015-09-29 12:09:19
【问题描述】:

我最近学习了许多 React 教程,特别是那些使用 Flux 架构的教程。所有这些教程都以各种形式使用了react/lib/keymirror

我了解它的作用,但我不相信我完全了解它提供的好处。但是,这可能表明我对它所做的 的理解并不完全正确!

我的理解是:

  1. 它产生一个enumerable
  2. 枚举通常用于函数式语言,但在object-orientated code 中也很有用。
  3. 虽然minification 有好处,但我不确定在这种情况下我是否完全理解这些。
  4. Bill Fisher 指出使用字符串代替常量并不是不合理的,当您拥有大量常量时,真正的好处就来了。

我想问题是,在中小型应用程序中,与仅在操作中引用的字符串相比,是否在 keyMirror 中定义一次常量,然后在两个不同的位置(操作和存储)要求和引用它们提供任何切实的好处和商店?

如果像比尔所说的那样,在一个地方查看常量列表会有所帮助,那么只保留一个包含字符串常量的 txt 文件的代码仍然会更少。

【问题讨论】:

    标签: javascript facebook enums reactjs


    【解决方案1】:

    您必须等待 React 团队的某个人来确认这一点,但我猜一个原因是因为他们的样式指南不鼓励业务逻辑中的常量字符串文字。在许多开发人员处理相同代码的情况下,如果逻辑是通过设置和检查硬编码字符串来构建的,那么去哪里查找任何术语的来源就不太明显了。

    第二个原因是相关的,但某些 IDE 会让您自动查找、完成或重构属性名称,但不能自动查找、完成或重构属性名称。将字符串定义在一个地方会使这些工作流程变得更加容易。

    最后,更好的优化是可能的,因为所有可枚举的引用都可以由 UglifyJS 处理,它可以将符号重命名为更短,而不会影响开发代码的易读性或任何引用的健壮性。

    所以我想说,除了小型短期应用程序之外,将文字字符串移动到组织良好的常量对象中是一个好主意。 KeyMirror 只是保证属性值与键匹配的一种助手。我相信这是为了让您可以重新使用任何属性的值作为有效键。

    【讨论】:

    • 谢谢。那里有一些好的想法。我没有考虑过的事情。
    • 如果我错了,请纠正我,但我很确定 uglify 只会重命名局部范围的变量名之类的东西......而不是对象属性。如果 uglify 开始重命名对象属性,那么任何曾经使用过 myObj['property'] 的人都会立即被破坏......即一半的网络。
    • @JimboJonny 是的,这可能是真的。我发誓我听说过一个工具(闭包编译器?)解析和内省代码以检查它是否可以缩短属性,但我不确定。到那时你会认为编译器也可以找到并替换冗余的字符串文字。
    • 我可以确认,当 ctrl + 单击时,Webstorm 找到了他的方式 - 这似乎是一个很高的价值,当您希望位于一个文件中的某些代码基于另一个文件中定义的变量工作时..
    • 周到的回答。非常感谢。
    猜你喜欢
    • 2020-05-31
    • 2015-09-03
    • 2020-01-14
    • 2017-11-14
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    相关资源
    最近更新 更多