位置: 编程技术 - 正文

搞定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基于什么语言)

  • 业务招待费福利费怎么算超支
  • 小规模纳税人的账务处理
  • 公司的纳税人识别号怎么查询
  • 结转结余属于什么科目
  • 用友u8固定资产折旧怎么生成凭证
  • 质量扣款能按折扣计算吗
  • 计提业务提成怎么做账
  • 企业里面不征税的发票能报销吗
  • 商业折扣和销售折让计入财务费用吗
  • 建筑业工会经费0.12% 怎么来的
  • 住宿费进项税分录
  • 融资租赁如何确认收入
  • 电子承兑逾期提示付款说明怎么写
  • 增值税专用发票电子版
  • 固定资产造成的损失可以税前扣除吗
  • 现金收货款要填什么单子
  • 计提房屋折旧会计分录
  • 企业所得税怎么征收
  • 进口货物的增值税是进项税还是销项税
  • 软件开发的服务内容方式要求
  • 企业境外收入税率
  • 增值税普通电子发票
  • 电梯维护费怎么做账
  • 残保金所属期与税款所属期
  • 红冲发票显示发票状态不正常
  • 进货价加多少卖不亏增值税
  • 小规模税控盘服务费怎么填增值税申报表
  • 代收代付差额征税
  • 股东退股未分配股利
  • windows10如何关闭杀毒软件
  • 电脑显示器模糊不清晰是什么原因
  • 广告费和业务宣传费税前扣除基数
  • 母公司给子公司拨款要交税吗
  • php参数过滤封装类
  • php5.4+mysql
  • 企业分红的会计科目
  • 贷款损失准备是什么类科目
  • 蜡梅的养殖方法视频
  • 新产品研发费的会计分录
  • php 邮件发送
  • 报税货物范围包括
  • 增值税报表填报说明
  • 程序员才能看懂的梗
  • php web socket
  • 开发票时有哪些规定呢?
  • 小企业会计准则和企业会计准则的区别
  • mysql使用ssl连接
  • mongodb subtract
  • python 操作数据库
  • 担保公司代偿会上征信嘛
  • 单位购买预付卡可以用现金吗
  • 固定资产清理残料收入
  • 销售公司扣款制度合法吗
  • 实收资本印花税税率多少
  • 收到销项负数发票怎么做分录
  • 因为培训发生的事情
  • 对公账户分为几类
  • 红字发票是怎么开的
  • 如何更换会计账号
  • 一家企业至少要运转几个月以上
  • iis如何重新配置
  • ubuntu14.4安装教程
  • centos7 eth
  • Linux的bg和fg命令简单介绍
  • win10声音文件
  • form表单中input设置为readonly和disabled的区别
  • 安卓骰子游戏
  • android开源软件
  • python把html页面生成图片
  • 安卓图片缓存太占空间
  • ffmpeg webui 0.9.6
  • python如何通过键找对应值
  • python中对象的概念
  • js register
  • jqueryfor循环
  • 企业登录初始密码
  • 如何打印高速公路电子发票
  • 采购设备税率多少
  • 纳税人有什么影响
  • 查询发票号码
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设