位置: 编程技术 - 正文

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

  • 小微企业企业所得税计算公式
  • 增值税专用发票有效期是多长时间
  • 税金及附加怎么来的
  • 税务五化是指
  • 公司合同是公司员工个人名义签订如何入账?
  • 个人所得税申报退税多久到账
  • 冲红电子发票是什么意思
  • 长期借款到期一年怎么算
  • 报销用专票
  • 水利建设基金一定要交吗
  • 市场推广费属于广告费用吗
  • 定额发票验旧后怎么报税
  • 预告登记与备案的区别
  • 土地增值税什么时候开始征收的
  • 没有收入要做应交税费的会计分录
  • 增值税发票的地址已变更过怎么办
  • 组织机构代码证过期
  • 关联业务报告表需要填吗
  • 资产处置损失计算方法
  • 没有成立工会的企业要交工会筹备金吗
  • 小规模减半征收印花税的政策
  • 进口车关税怎么抵扣
  • 计提印花税会计分录怎么写
  • 企业发给员工的福利要交税吗
  • 原材料对外投资进项税额可以抵扣吗
  • 小规模纳税人缴纳增值税怎么做账
  • 购买公司付款会计分录
  • 发给职工的交通补贴
  • 增值税留抵退税政策解读
  • 办理股权转让麻烦吗
  • 公转私合理吗
  • 为什么我的win10
  • php 静态变量
  • php基础函数
  • 所得税季度预缴怎么算
  • 协调费用应该怎么表述
  • PHP:pg_client_encoding()的用法_PostgreSQL函数
  • 估价入库金额怎么来
  • php递归遍历文件夹
  • php设置图片将图片居中
  • 增值税加计抵减企业所得税如何处理
  • 前端vscode配置
  • php session_id
  • php数组实现原理
  • phpwebsocket框架
  • 土地使用税和房产税怎么申报
  • php接口技术
  • mysql @参数
  • 电子承兑汇票贴现怎么操作
  • 投资公司和控股公司关系
  • 固定资产折旧计算方法公式大全
  • 增值税是否计入在建工程
  • 汇算清缴是怎么弄的
  • 季度报税都是几月份
  • 研发支出资本化支出在资产负债表哪里体现
  • 实际利率法如何理解
  • 企业发生坏账损失时,在当期确认坏账损失
  • 培训费属于什么应税项目
  • 进项发票已经认证,对方作废了
  • 资产负债表的编制依据是会计恒等式
  • mysql 5.7.33安装
  • 如何卸载独显
  • ubuntu 安装zsh
  • centos占用内存高
  • xpwy cd server已停止工作
  • Win7系统打印机共享无法保存打印机设置0x000006d9
  • windows8应用商店用不了
  • win8.1无线网
  • win10更新后有线网络无法使用
  • win7电脑磁盘突然不见了怎么办
  • 设置ip安全策略
  • unity与android交互详细
  • jquery的认识和使用
  • 网页编辑器手机版
  • Chrome调试技巧
  • jquery 跨域方法
  • python复制sheet
  • 山东税务申报如何网上申报
  • 四季度预缴申报表
  • 关税税率表包括哪些
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设