有些人总是说:“ React适合中型和大型项目,Vue更适合中小型项目”,但没有人总是解释原因,所以我以前曾经忽略过这种言论。我正在研究如何改善项目的维护,发现VUE设计的脆弱性会破坏一个通道数据流。如果据说Vue不适合大型项目,那么它几乎无法将其附加起来。
为了澄清,作者没有任何赞美的趋势,甚至在情感上倾向于在情感上更加疲倦,因此每个人都客观地对待这个问题。
这就是为什么状态被呼叫或封装的原因。除了拥有并设置它的组件外,任何组件都无法访问它。外观和设置其组件,无法访问其他组件。
请正确理解“访问”一词。实际上,更容易理解“修改”。所有人都可以用作子组件,并且也可以由子类使用,但不能修改。
这里还有另一个问题。显然,许多组件都可以修改父组件数据。最典型的形式是输入类组件。我们专门查看代码:
请注意,那些能够修改父组件的人是因为父组件将其传递给EMIT。它可以做的只是“使用”的方法。如果父组件没有给出类似的方法,则无法做到。任何修改操作。
这可以确保您在阅读代码时期望子组件的行为。更具体的是,如果我仅通过子植物,则不会传递,并且可以修改子批量。
为了加深印象,我们查看了另一个例子:
使用多个子类。如果对一个通道数据流有限制,我们可以确定仅修改它的能力。如果对一个路数据流不存在限制,我们如何定位我们修改了哪些组件?恐怕我会只能输入每个子组件的代码进行检查。如果这是一个更复杂的项目,这种情况将会出现“像婴儿”,这是对项目维护的灾难性的。
Vue强调了文档中一个通道数据流的重要性,但留下了一个漏洞,没有提供解决方案。
提示:请注意,JavaScript中的对象和数组是通过参考引入的,因此对于数组或对象类型Prop,更改此对象或子cutter中的数组将影响父部件的状态。
看一个示例:
如上面的示例所示,它可以“强行”打破一条路数据流,这是VUE中的漏洞。
没有绝对难以避免这种漏洞的方法,您只能尽可能多地避免使用工具。例如:
无论采用哪种方法,都需要一定的成本。幸运的是,依靠工具可以被视为“一项投资和生命的利益”。即使这样,除非Vue的更新机制发生了变化,否则这个问题也无法完全解决,这基本上是不可能的。
面对上述示例,应将正确的方法明确引入修改中,在克隆之后,应修改修改以确保不可变,如下:
有些人可能认为这是一个小主题,偶尔会破坏单向数据流,从而带来了操作的便利。什么是不可能的?
确实,对实际情况的讨论是流氓。如果您的项目不大,您将有几页,然后您需要参与CI/CD,并且有必要普及标准。ROI太低了。但是对于中型项目和大型项目,有必要保持绝对的通道数据流。如上所述,在复杂的项目中,一个小问题可能看起来像“婴儿”,然后带来灾难性的后果。
终于以一句名字结束:
“数千英尺的路堤被蚂蚁的孔破裂;一百英尺的房间用香烟燃烧。”- “汉·菲兹·尤尔”