位置: 编程技术 - 正文

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

  • 个人所得税C表怎么填写
  • 企业办税权限怎么授权给个人
  • 印花税资本金项目如何缴纳
  • 个税返还什么时候到账
  • 开发成本需要结转到存货吗
  • 滞纳金按年怎么算
  • 跨区域涉税事项报告表怎么核销
  • 在没有进项票的情况下可以开销售票出去么
  • 滴滴普通发票可以作废吗
  • 农民为什么没有说理的地方
  • 哪些会计科目借方记增加
  • 保证金交易收益率
  • 进项税抵扣销项税
  • 计提工资和应付职工薪酬怎么不一样
  • 服务业发票丢失怎么处理
  • 公司销售二手车账务处理
  • 冲暂估成本的会计分录
  • 营改增后房地产公司税种及税率
  • 建筑行业小规模企业所得税税率
  • 种植保险包括
  • 小规模增值税未开票收入填哪里
  • 工程结算在资产负债表的哪个科目
  • 本年利润的借贷双方表示什么
  • 旧税号的发票专用章还能使用吗
  • 分期付款购买商品房后续没钱还怎么办
  • 什么是应收
  • 七彩虹主板 wol
  • 周转材料计划成本会计分录
  • 间断性断网
  • 公司销售自己使用过的固定资产
  • 债权转增资本公积账务处理
  • 上市公司发行股票会计分录
  • macOS 11 Big Sur 开发者预览版 Beta 7正式推送
  • 苹果推送最新系统
  • 收外汇的账务处理实例
  • mom.exe是什么
  • 2017年8月21日是什么日子
  • 贝特阿斯品牌介绍
  • vue2转vue3工具
  • 关于猿猴的作文
  • css设置旋转动画
  • discuzcms
  • 准则对()、()和()等作出基本规定
  • 补发以前年度工资
  • 标准工资表怎么填
  • 专项储备期末有余额吗
  • 利息收入应该怎么记账
  • 企业所得税税前扣除项目有哪些
  • 生产企业出口退税政策
  • 以自营方式建造固定资产
  • 制造企业费用会计
  • 公司给客户的礼品太差了还需要给客户吗
  • 违约金罚款计入什么科目
  • 主营业务收入一定要结转成本吗
  • 银行存款日记账怎么记账
  • 发票专用章刻制
  • 没有期初数据会怎么样
  • 一个查看明日方舟的网站
  • mysql5.7安装版下载
  • mysql 5.7.5 m15 winx64安装配置方法图文教程
  • linux tracker
  • os x10.8.5
  • windows mobile应用商店
  • win7怎么设置u盘启动为第一启动项
  • linux 数据恢复
  • ercp后淀粉酶为什么升高
  • javascript scrollTop正解使用方法
  • shell for循环执行命令
  • opencv for linux
  • node.js ts
  • 电脑兼容ie
  • jquery控制css样式
  • 顺丰收取关税合理吗
  • 电子税务局用户名和密码是什么
  • 西安国家税务局丁雁现任命职务
  • 金税盘软件怎么打开
  • 公民海外收入纳税
  • steam 申请
  • 国家税务系统
  • 财税[2020]25号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设