位置: 编程技术 - 正文

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

  • 增值税进项税额不得抵扣的几种情形
  • 以前年度损益调整在借方是什么意思
  • 小微企业一般要交什么费用2019
  • 房租怎么抵扣个税计算方法
  • 出口货物退回需交税吗
  • 上个月未抵扣忘记做进项会计分录
  • 出现销项负数
  • 个人贷款打入公司账户
  • 公司持有的房产税
  • 公司亏损没有收入怎么办
  • 出口退税的企业范围
  • 建筑公司亏损异常怎么办
  • 一般纳税人提供服务税率
  • 招聘签合同
  • 出口佣金可以在企业所得税前扣除吗
  • 税金及附加附加指什么
  • 旅行社确定收入毛利成本怎么确定?
  • 临时员工什么意思
  • 股权转让流程详解
  • 财产清查的会计分录
  • 本月无生产,有折旧怎么办
  • 贸易公司出口是什么意思
  • 加油站的成品油经营许可证过期3个月还能换证吗?
  • php操作json文件
  • 收到的销项负数要认证吗
  • 非累积带薪缺勤和累积带薪缺勤的区别
  • PHP:curl_multi_add_handle()的用法_cURL函数
  • PHP:sys_getloadavg()的用法_misc函数
  • dvd.rom
  • PHP:getimagesizefromstring()的用法_GD库图像处理函数
  • 特许权使用费20%
  • laravel elementui
  • 井冈山游击队的口号
  • php实现购物车功能源代码
  • yii gridview
  • 商贸企业发生退税的原因
  • 残疾人保障金计入哪个会计科目
  • 如何计提所得税费用科目
  • 外购商品转为自用固定资产,进项税
  • python skewness
  • 织梦相关文章调用
  • 税率减按1.5%计算是什么意思
  • 增值税普通发票查询真伪
  • 下列支出计入销售费用账户借方的是
  • 自然人扣缴系统怎么申报个税
  • 购买办公用品如何写摘要
  • 库存商品转成本意味着什么
  • 广告赞助支出能抵扣吗
  • 利润与所有者权益的区别
  • 季节性停工固定资产折旧计入什么科目
  • 土地出让金如何核算
  • 一般性企业
  • 小规模应收利息怎么算
  • 公司购买垃圾袋纸巾摘要怎么写好
  • 建筑业营改增后税务问题
  • 固定资产暂估入账的税务处理
  • WIN7系统的电脑里可以安装会声会影10吗?
  • 微软windows8.1
  • 局域网 下载
  • Ubuntu系统中文输入法
  • 复制文件文件名过长怎么复制
  • xp开始界面
  • linux挂起
  • 双linux系统
  • centosgui
  • iptables添加规则立即生效
  • quick3.3 UIListview扩展应用
  • Broadcast实现强制下线功能
  • 使用netcat(瑞士军刀)进行文件传输
  • qt5 opengl
  • 网页打开新窗口怎么关闭
  • unity基础教程
  • javascriptweb
  • python面向什么编程
  • [置顶]电影名字《收件人不详》
  • 地税网上办税服务厅
  • 小规模纳税人进口环节的增值税税率
  • 出口免税不退税主要适用于
  • 陕西税务局如何缴纳社保
  • 应缴纳资源税税额怎么计算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设