知识和条件

任何现代网站或浏览器应用程序(SPA,PWA,任何其他三个字母)的核心都是其状态。


我们可以任意争论哪个更好-React,Vue,Svelte,Angular,我们可以继续使用jQuery,但实际上并不是那么重要。这是我们看到的应用程序的一部分-它的“肌肉”和“皮肤”。但是,您的思维方式-使用什么术语,使用什么机制甚至在您的头脑中可视化数据在应用程序中的“流动”方式-都来自其框架。来自国家经理。


还记得几年前,我们厌倦了JavaScript吗?现在,我看到大量的人对州管理人员感到厌倦。Redux?是的是的是的RxJS?也是MobX?如果很简单-该死,为什么在文档中有trap.html页面


答案是“为什么对许多人这么难”,但是首先您需要准确地表述问题。


选择州经理-我们选择一种思维方式。现在有很多选择,但是最受欢迎的方法分为三类:


  • 助焊剂/类似Redux的:具有操作和减速器的全局存储库。有相当多的人,但我会提到终极版效应Storeon未说明,并Reatom自己这些不是“最好的最好的”,而是“最多样化的”。列表中的所有解决方案都具有独特之处和不寻常之处,您可以从中获得各种有趣的想法。


    这种方法主要是必须的(Thuring-complete)和全局的


  • 观测物和管道。该组中当今最受欢迎的解决方案是RxJSMobX。鲜为人知的-开菲尔(Kefir)培根(Bacon)CycleJS顺便说一句,斯维尔特(Svelte)也属于此列表。它们在开发人员经验方面都非常不同,但是从根本上讲,它们仅在一件事上有所不同:MobX,Svelte等可以用通常的“触发什么”图在拓扑方面进行描述,但是RxJS不是,它的图是多维和“奇怪的循环”可能会出现在其中在可观察物中传输可观察物。一方面,它使其功能更强大,另一方面,其功能也更加复杂。剧本也有类似的故事。他们发现他的类型系统是Thuring-complete。接下来的唯一事情是它可能在验证步骤中冻结,并且他们为工作增加了时间限制。


    这听起来可能很奇怪,但是总的来说,这类解决方案往往是局部的,即席的声明性的 -但不会切断使用任意逻辑的能力。


    , - , , , , “” . , Lodash, Ramda, io-ts. - LISP JS, — -- “”, , .


  • GraphQL . Apollo Relay — , . Falcor — GraphQL Netflix, GunDB PouchDB. , Redux, MobX, RxJS . “” GraphQL. , . 100% ( )



, . — , ; , - . .


FluxGraphQL
Observables?????

: “” “” 100% : redux- , , RxJS — . JS , , .


: - ID ID, — . (), — .



. - . , , , "state of js” .


.


.

, , . , — , . , .

— , , . , , — GraphQL . , , .

, - .


SPA , : , , SQL- ; .


Rails, , .


, , ( ) — API , .


:


  • : . , , , .
  • : statechart. — . — observables (RxJava, RxRuby, RxSwift, RxBrainfuck — ) . — - , , - .


. , , . — . , , , , — . , , - . — , .


— - , . - , . — , , , .


. , , , corrupted. : , DTO. . — LISP-. : , .


— . , — , , , — - , . , , . : - — , . , , CRDT-. — .


:


.


— , , — , , . , . , , . await getBlogPost(id), : @gql("blogPost(id){...}") class extends Component, — , .


. . ImmutableJS, Object.freeze, readonly Record & Tuple stage 1 proposal. . - shared worker.


, — , . XState , ( ), . , . .


这两个世界之间的任何交互都应该是显式的,并在代码中直接加以区分,以免在代码审查期间偶然发生,最重要的是-发生在用户域而不是库中。


您不应该选择特定的解决方案,但是对于我的新项目,我将使用GraphQL + Apollo来存储知识,对于状态管理-Xstate + RxJS,幸运的是,他们彼此是朋友


不必担心将所有内容塞入一个解决方案中。您不需要它。


All Articles