- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我开始成为 David Nolen 的 Om library 的粉丝。
我想在我们的团队中构建一个不太大的 Web 应用程序,但我无法真正说服我的团队成员切换到 ClojureScript。
有没有一种方法可以使用 om 中使用的原则,但在 JavaScript 中构建应用程序?
我在想这样的事情:
最佳答案
2015 年 7 月编辑 :目前最有前途的基于不变性的框架是 Redux!看一看!它不像 Om 那样使用游标(Om Next 也不使用游标)。
游标并不是真正可扩展的,尽管使用了下面描述的 CQRS 原则,它仍然在组件中创建了太多的样板,难以维护,并且当您想在现有应用程序中移动组件时会增加摩擦。
此外,许多开发人员不清楚何时使用和不使用游标,我看到开发人员在不应该使用的地方使用游标,这使得组件的可重用性不如采用简单 Prop 的组件。
Redux 使用 connect()
,并清楚地解释了何时使用它(容器组件),何时不使用(无状态/可重用组件)。它解决了将光标向下传递到树的样板问题,并且在没有太多妥协的情况下表现出色。
我写过不使用 connect()
here 的缺点
尽管不再使用游标,但我的大部分答案仍然有效恕我直言
我自己在我们的启动内部框架中完成了 atom-react
JS 中的一些替代方法是 Morearty 、 React-cursors 、 Omniscient 或 Baobab
当时还没有immutable-js
,我也没有做迁移,仍然使用普通的JS对象(卡住)。
我不认为使用持久数据结构库真的是必需的,除非你有非常大的列表,你经常修改/复制。当您注意到性能问题时,您可以使用这些项目作为优化,但似乎不需要实现 Om 的概念来利用 shouldComponentUpdate
。有趣的一件事是 immutable-js
中关于批处理突变的部分。但无论如何,我仍然认为这是优化,而不是使用 Om 的概念在 React 中获得非常好的性能的核心先决条件。
您可以在此处找到我们的开源代码:
它具有 Clojurescript Atom 的概念,它是对不可变对象(immutable对象)的可交换引用(与 DeepFreeze 卡住)。它还具有事务的概念,以防您希望以原子方式更新状态的多个部分。并且您可以监听 Atom 更改(事务结束)以触发 React 渲染。
它有 cursor 的概念,就像在 Om 中一样(就像一个功能镜头)。它允许组件能够呈现状态,但也可以轻松修改它。这对于表单很方便,因为您可以直接链接到游标以进行 2 路数据绑定(bind):
<input type="text" valueLink={this.linkCursor(myCursor)}/>
shouldComponentUpdate
,它足够快,我什至可以在用户在文本输入上按下新的键盘键或用鼠标悬停按钮时重新渲染完整的应用程序。甚至在手机上!
Sebastien-L
in
#reactjs
。
React.addons.Perf
关于reactjs - Om 但在 javascript 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25791034/
我对 Java 中的 Web 服务还很陌生。我开始的项目已经实现,并且有很多对 org.apache.axiom.om 命名空间的引用。 om 代表什么? 最佳答案 我猜它代表对象模型,因为它在Axi
我正在尝试执行以下操作。 OMElement soapEnvelope = new StAXOMBuilder(soapEnvelopXMLFilePath).getDocumentElement()
是否可以编写一个不渲染任何内容的组件,例如,如果其游标数据为空? 我不能做 (defn count-or-nothing [list-cursor owner] (reify om/IRe
我在 Om 中显示一个菜单,使用这样的组件和子组件: (def app-state (atom {:location "" :menuitems [["Pa
我正在继承现有的 Sitecore 实现,该实现具有全部使用相同模板的大型内容文件夹。一些文件夹包含数以百计的文章。不同类型的角色应该对不同的文件夹感兴趣。我不想逐篇为每个页面设置角色和配置文件属性。
我们使用 Azure OMS 来监控许多本地服务器。 使用 LogicalDisk(*)\% 可用空间性能计数器时,存在一些不存在的实例名称,例如 HarddiskVolume170、Harddisk
我正在经历这个OM tutorial但我不清楚何时使用 OM 组件与普通函数(尤其是 om/component 宏)。 教程写道: The first argument is a function t
我正在努力理解 om 如何使用 apply 来渲染列表项,如下面摘自 Om 教程页面的示例所示。 (om/root (fn [data owner] (om/component
我试图了解何时必须取消引用游标以获取其值。 在 om cursors wiki它指出 事件处理程序不被认为是渲染阶段的一部分,因此处理程序中的游标应该被删除。 同样显示在 Basic-tutorial
我有一个包含不同页面的 ClojureScript Om 应用程序,这些页面实际上只是同一个应用程序中的不同组件,每个页面可以有一些具有不同样式表的不同组件。其中一些样式表非常复杂,可以相互覆盖。在
我一直在关注 om 教程。我使用 Light Table 来设置外部浏览器连接。此外,在我的 clojurescript 代码中,我正在调用 (enable-console-print!)将我的 pr
我正在更新我的一个突变中的状态,其中一部分未被该组件使用,但被另一个组件使用。当我执行 mutate 时,我看到应用程序状态在 repl 中更新,如果我由于其他原因导致组件重新渲染,它会正确显示,但我
我正在尝试学习 Om,但遇到了一些我不明白的事情。我期望这段代码 (defn search-page-view [app owner] (reify om/IRender (rende
我已经阅读了 David Nolen 的基本 Om 教程,但我仍然对应用程序状态和组件本地状态之间的区别感到有些困惑。当引用游标时,它是否也引用了其中之一或两者? 最佳答案 据我了解: 应用程序状态是
我在将 OMS(操作管理套件)代理连接到 Azure 时遇到问题。它报告“代理发生了未知的故障 12019”。我确信这是一个网络问题,但我无法检测到原因。 最佳答案 也许会晚一点,但可能会帮助别人。
我正在通过 Terraform 部署 AKS 集群。 我在我的 aks 资源 block 中设置了 oms_agent block : resource "azurerm_kubernetes_clu
我有以下内容: (ns commentz.client (:require [om.core :as om :include-macros true] [om.dom :a
我有以下代码,我认为我做了一些根本错误的事情。 (defn world-view [data owner opts] (reify om/IInitState (init-st
Om 是 React 的 clojurescript 包装器,据说速度非常快,因为它利用了不变性。我不明白持久数据结构在这里有何帮助。 我所理解的是应用程序状态是一个原子。该状态被传递给返回虚拟 DO
我正在通过 Terraform 部署 AKS 集群。 我在我的 aks 资源 block 中设置了 oms_agent block : resource "azurerm_kubernetes_clu
我是一名优秀的程序员,十分优秀!