让真实世界变得更真实(2.0?)
过去的一年,我尝试了许多不同的前端库,很高兴发现了这个项目和围绕它的社区。我一直在考虑发布这条评论,因为我注意到这些库有一个基本的设计差异,RealWorld 在目前的形式中没有考虑到:模块化和重用。看起来,前端库分为两类 - 它们要么支持某种架构,用于模块化重用(通常是一个状态组件概念),要么不支持。根据当前规范,Conduit 前端不提供任何适用于任何类型的 UI 控件的用例,其中没有内部/偶然的状态 - 尽管这对于一些简单的应用来说可能是现实的,但根据我的经验,这对于更大、更复杂的应用来说是不够的。几乎每个真实世界(duh)应用都具有某种重复的 UI 控件,这些控件具有某种状态,在控件显示时才具有相关性。让我举出几个例子来解释我所指的内容。我最喜欢的例子是一个下拉式日期选择器。它具有选定日期状态,这对应用程序来说是有意义的,因此通常会绑定到应用程序状态,而不是存储在控件实例内部。但它还具有指示控件当前是否打开、当前显示的月份等状态 - 我将这种状态称为偶然状态,因为它通常与应用程序无关,并且只有在控件可见时才具有相关性。另一个例子是自动完成输入。它具有与应用程序相关的选定值。但也可能具有 XHR 实例、值列表、列表中的当前 Cursor 位置等 - 所有这些都是偶然的,与应用程序无关,并且只有在显示时才具有相关性。这并不是说这些类型的控件不能使用无状态组件/视图来实现,当然可以 - 但应用程序需要在某个地方维护所有这些无关的状态,并且需要手动跟踪可见的控件等,以便例如在 UI 中切换到不同的选项卡时,正确清除当前打开的日期选择器的状态,因为用户可能会发现返回到之前的选项卡并发现一个(他们刚才没有点击的)已经打开的日期选择器很混乱。实现所有这些状态管理和编程都有时会在不提供任何模块化重用概念的前端库中变得困难甚至不可能。几乎每个主要的 React、Vue 或 Angular 项目都使用了第三方或内部组件/控件,这些组件/控件具有偶然的状态,因此我认为这似乎是很有意义的。也许在 v2.0 中需要考虑一下?
内容来源: realworld-apps/realworld