函数性纯UI组件:morphonent - DEV社区

19-12-31 banq
                   

面对大量的用户交互和体验,构建应用变得越来越具有挑战性。用户现在需要自然而又快速的丰富交互,并且需要可靠的应用程序。

现在,为了构建这些复杂应用程序时的需求,我们拥有最先进的库和框架,例如ReactVueSvelteAngular等。

此外,我们还面临着这样的情况:应用程序状态管理本身就是一个挑战,社区为之建立了不同的解决方案,仅举几个例子,我们有reduxMobX。当我们还具有对后端的HTTP请求的异步状态时,此问题将变得非常复杂。

我个人对分布式体系结构和模式感兴趣,但是,我发现对系统前端进行编程的复杂性也很有趣,因为它是用户固有的需求。当我们在每分钟处理大量请求的后端中时,我们每分钟交换数千兆的信息,很容易忘记用户而将重点放在开始考虑系统本身。

与以前相比,今天构建UI更加容易,便宜和自动化。尽管如此,大多数用户界面对于用户(对于单个网页下载的javascript数量)还是对开发人员而言都是昂贵的,因为一旦构建网页就很难更改其结构。

我一直在研究如何使UI的更改成本更低,可组合且更易于测试。我得到了以下结论,这些结论将使UI易于更改:

  • 应用程序需要像粘土一样可成型。
  • 过渡必须合理且易于跟踪。首选1-1转换,避免尽可能fan-out。
  • 默认情况下,异步是真正的快速异步代码。
  • 自动测试应用程序应该与在浏览器中呈现应用程序一样容易。

因此,基于敏捷和XP,我对允许更便宜的UI的库或框架有以下要求:

  • 为了使应用程序可成型,需要经常更改其结构。
  • 要使过渡自然,过渡应该是应用程序工作原理的基本组成部分。
  • 库应该以相同的方式理解异步和同步业务逻辑。
  • 应用程序的每个组件都应该可以独立且快速地进行测试。

我写了一个名为的库morphonent来实现这些想法。但是,我认为,这些模式和设计决策(如果有用)可以建立在其他更健壮且防弹的库(例如上述库)的基础上。这里重要的不是库(我为启用这些模式而构建的库),而是模式本身。