1
1
考虑构建富动态Web UI需要解决哪些问题,以及库/层通常为您处理这些问题。 1。DOM事件(单击等)需要触发状态更改 这相对容易。DOM节点公开了基于回调的侦听器API,它可以直接适应任何体系结构。 2。状态更改需要触发对dom节点的更新 这是更棘手的,因为它需要完成 有效地 在一个 可维护的 态度。您不希望在整个组件的状态发生变化时从头开始重新呈现它,也不希望编写大量jquery风格的意大利面代码来手动更新DOM,因为即使在运行时效率很高,也很容易出错。 这个问题主要是为什么像react这样的库会存在,它们将这个抽象到虚拟DOM之后。但是你也可以在没有虚拟DOM的情况下抽象出来,就像我自己的一样 Laminar 图书馆确实如此。 放弃这个问题的库解决方案只对更简单的应用程序有效。 三。组件应该能够读/写 全球的 状态 这是助焊剂/还原剂解决的部分。具体来说,这些都是问题1和2,除了适用于全局状态,而不是组件状态。 4。高速缓存 缓存很难,因为缓存需要 失效的 在某一点上,在上面的所有事情之上。 助焊剂/还原剂对这一点毫无帮助。其中一个有帮助的库是 Relay 它与您提出的解决方案非常相似,只是更为详细,并且位于react和graphql之上。阅读它的文档将帮助您解决问题。如果您不需要整个react/graphql包,但需要了解现有技术,那么您一定可以在plain scala.js中实现中继功能的一小部分。 5。序列化和类型安全 这就是 只有 此列表中的问题与scala.js相关,而不是一般的javascript和spa。 scala对象需要序列化才能在网络上传输。进入JSON、Protobufs或其他任何系统,但是您需要一个不涉及容易出错的手工工作的系统。有许多scala.js库可以解决这个问题,例如upickle、autowire、endpoints、sloth等。关键词:“scala json library”或 scala类型安全RPC “,取决于您需要哪种解决方案。 我希望这些原则足以作为答案。当您理解这些问题时,您的解决方案是否适用于给定的用例应该是显而易见的。实际上,您没有描述解决方案如何解决问题2、4和5。您可以使用我提到的一些库,或者使用类似的思想/算法实现您自己的解决方案。
在一个次要的技术说明中,考虑为缓存层实现一个异步的、基于未来的API,以便它返回
|
BADRUM · 执行两个获取功能后,如何导航回页面? 1 年前 |
Anaya Ammar · 渲染后未显示的值 1 年前 |
Zemelon · -moz背面可见性不适用于顺风css 1 年前 |
Mark C. · 制作一个可松开的单选按钮[关闭] 1 年前 |