位置: 编程技术 - 正文

搞定immutable.js详细说明

编辑:rootadmin

推荐整理分享搞定immutable.js详细说明,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

什么是Immutable Data

Immutable Data是指一旦被创造后,就不可以被改变的数据。

通过使用Immutable Data,可以让我们更容易的去处理缓存、回退、数据变化检测等问题,简化我们的开发。

js中的Immutable Data在javascript中我们可以通过deep clone来模拟Immutable Data,就是每次对数据进行操作,新对数据进行deep clone出一个新数据。

deep clone

当然你或许意识到了,这样非常的慢。如下图,确实很慢

主角immutable.js登场

immutable.js是由facebook开源的一个项目,主要是为了解决javascript Immutable Data的问题,通过参考hash maps tries 和 vector tries提供了一种更有效的方式。

简单的来讲,immutable.js通过structural sharing来解决的性能问题。我们先看一段视频,看看immutable.js是如何做的

搞定immutable.js详细说明

当我们发生一个set操作的时候,immutable.js会只clone它的父级别以上的部分,其他保持不变,这样大家可以共享同样的部分,可以大大提高性能。

为什么你要在React.js中使用Immutable Data

熟悉React.js的都应该知道,React.js是一个UI = f(states)的框架,为了解决更新的问题,React.js使用了virtual dom,virtual dom通过diff修改dom,来实现高效的dom更新。

听起来很完美吧,但是有一个问题。当state更新时,如果数据没变,你也会去做virtual dom的diff,这就产生了浪费。这种情况其实很常见,可以参考flummox这篇文章

当然你可能会说,你可以使用PureRenderMixin来解决呀,PureRenderMixin是个好东西,我们可以用它来解决一部分的上述问题,但是如果你留心的话,你可以在文档中看到下面这段提示。

PureRenderMixin只是简单的浅比较,不使用于多层比较。那怎么办??自己去做复杂比较的话,性能又会非常差。

方案就是使用immutable.js可以解决这个问题。因为每一次state更新只要有数据改变,那么PureRenderMixin可以立刻判断出数据改变,可以大大提升性能。这部分还可以参考官方文档Immutability Helpers

总结就是:使用PureRenderMixin + immutable.js

参考

React.js Conf - Immutable Data and React

Immutability Helpers

PureRenderMixin

immutable-js

JS基于clipBoard.js插件实现剪切、复制、粘贴 摘要:最近做了一个项目,其中有这样一需求:实现一个点击按钮复制链接的功能,通过网上找相关资料,找到了几个插件,ZeroClipboard是通过flash实现

深入浅析Bootstrap列表组组件 Bootstrap,来自Twitter,是目前最受欢迎的前端框架。Bootstrap是基于HTML、CSS、JAVASCRIPT的,它简洁灵活,使得Web开发更加快捷。列表组是灵活又强大的组件,

原生JS封装Ajax插件(同域、jsonp跨域) 抛出一个问题,其实所谓的熟悉原生JS,怎样的程度才是熟悉呢?最近都在做原生JS熟悉的练习。。。用原生Js封装了一个Ajax插件,引入一般的项目,传

标签: 搞定immutable.js详细说明

本文链接地址:https://www.jiuchutong.com/biancheng/369934.html 转载请保留说明!

上一篇:Immutable 在 JavaScript 中的应用

下一篇:JS基于clipBoard.js插件实现剪切、复制、粘贴(js基于什么语言)

  • 建筑业挂靠企业所得税如何收取
  • 税务现金流量表怎么填
  • 30人以上的企业有哪些
  • 公司合并是不是先变更股权
  • 预提佣金会计分录是什么
  • 固定资产的确认条件是什么
  • 公司收到银行承兑汇票怎么做分录
  • 印花税缴款了发现报错了怎么办?
  • 货发出款未收的会计分录怎么做?
  • 应收账款贷方余额怎么处理
  • 营改增后房地产开发税费一览表
  • 小规模纳税人计提增值税账务处理
  • 代销方式的特点
  • 购买办公桌椅属于什么费用
  • 企业所得税三项费用扣除
  • 无偿划拨的资产怎么做资产卡片账簿
  • 个体户生产经营所得怎么报税
  • 增值税普通发票有什么用
  • 专项应付款会计科目代码
  • 质押已至票据到期日
  • 废品回收企业回收的废品都是怎么处理
  • 如何更换电脑开机动画
  • 路由器密码忘了怎么查到
  • linux块设备驱动详解
  • 存货包括生产成本,在资产负债表中表示
  • 土地使用税怎么交税
  • 完美解决索尼电视arc无声音
  • php生成html
  • php-fig
  • 餐费发票怎么做账务处理
  • 免税的农业企业可以抵扣专票吗
  • 计提房产税会计分录怎么做账
  • php pdo类
  • 顺流交易合并抵消
  • 300秒带你手写一首诗
  • 平常心下一句该怎么说
  • ussd命令
  • 品牌代理费计入什么费用
  • 长期股权投资入账价值
  • php headers
  • 房产税从租和从价哪个税金高
  • 员工误餐费是否缴纳个人所得税
  • 如何核算小企业成本
  • 缴纳增值税附加税
  • 发票还没认证可以报销吗
  • 承兑汇票到期取现手续费
  • 弥补以前年度亏损后缴纳所得税
  • 会计原材料的账怎么记账
  • 给员工发中秋福利的用词
  • 员工异地工作
  • 关于外贸企业出口的规定
  • 异地缴纳增值税和附加税的区别
  • 计提工会经费如何扣除
  • 在途物资材料采购原材料的区别
  • 固定资产包括哪些东西
  • sql server常用管理工具中,用于访问
  • win7小技巧
  • win8 设置
  • centos中rpm包怎么安装
  • centos 怎么用
  • 重装xp系统进不去
  • windows开机显示正在清理
  • windowsxp的开始菜单
  • nginx文件服务器
  • win8系统关机在哪
  • windows10不能装windows7
  • win8分屏快捷键
  • shadersmod
  • js必学知识点
  • listview的item
  • jQuery中$.ajax()方法参数解析
  • node怎么用
  • python写抢购教程
  • Python中Collections模块的Counter容器类使用教程
  • 国家扶贫项目有循环卡吗
  • 长春购房契税税率
  • 纳税申报指什么意思
  • 宝鸡新车交易市场
  • 江苏社保缴费基数是什么意思
  • 地方财政税收的组成
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设