位置: 编程技术 - 正文

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

  • 高新企业认定合格后什么时候开始享受税收优惠?
  • 退票凭证什么样子
  • 个体户单位性质是什么
  • 报销单与发票金额不符
  • 个人独资核定征收和查账征收的区别
  • 虚开发票应如何进行处罚
  • 工程项目结算方式有哪几种
  • 纳税申报的具体流程个体户
  • 私营企业实行固定税率
  • 本月计提所得税费用
  • 别人帮开票钱要打给别人账户吗
  • 预付账款损失的账务处理如何编制呢?
  • 个人取得的拆迁款需要缴纳个人所得税吗
  • 境内企业是否可以出境
  • 发票虚开税务局要求补税怎么办?
  • 油罐车运输费用怎么算
  • 增值税如何填报
  • 销售赠送怎么做账
  • 办公室租金可以计入办公费吗
  • 销售额不到10万免征什么税
  • 预付账款是企业销售过程中形成的一种非货币形式的债权
  • 境内单位和个人将船舶出租到境外的,不征收车船税
  • 设计行业开票税点
  • 处置子公司的收益
  • ReadTimeoutError: HTTPSConnectionPool(host=‘cdn-lfs.huggingface.co‘, port=443)
  • 费用要素是企业对各种费用按经济用途进行的分类
  • 房产税去哪交税
  • 图像相似性度量
  • 通讯补贴计入工资薪金吗
  • php引用文件的方法
  • 有什么办法解决前进中的问题
  • next frame
  • 华为od测试岗机试需要怎么准备
  • 【机器学习】前置知识:矩阵的表示与定义 | Identity 身份矩阵 | 逆矩阵和转置 | 标量乘法
  • html小游戏代码大全
  • apache php mysql开发环境安装教程
  • 开发票零税率和免税是一样的意思吗
  • 管家婆软件出库入库如何用
  • 增值税多交了五万怎么办
  • sklearn实例
  • java操作mongodb数据库
  • mongodb bi
  • 2020织梦建站教程全集
  • 租金的支付期限是多久
  • 怎样回到一年前
  • SQL SERVER 2008 R2 重建索引的方法
  • 未计提完固定资产怎么办
  • 完全删除sql server2012
  • 经营性罚款和行政性罚款的区别
  • 个人所得税的计算公式方法Excel
  • 两个公司发工资公司会发现吗
  • 应付账款重分类是什么意思
  • 固定资产折旧会计凭证
  • 两个公司的出纳怎么分账
  • 金税盘是怎样的
  • 印花税减免税额怎么填
  • 注册工贸公司业务范围
  • 申报个税劳务报酬按20%扣
  • 定额发票的使用方法
  • win7系统更新软件
  • 电脑网页字体设置
  • windows对高分屏怎么这么差
  • win7鼠标右键菜单不显示
  • jquery移动节点的方法
  • 如何使用maven
  • perl写文件
  • ant编译工具
  • Javascript 事件冒泡机制详细介绍
  • 批处理遍历文件输出文件路径
  • 基于重大误解实施的民事法律行为
  • ug怎么加载制图模板
  • 用js改变css样式
  • androidのLinearLayout中组件右对齐
  • super函数python
  • 中国税务徽标
  • 云南省税务局咨询电话
  • 上海嘉定小学入学积分
  • 发票勾选后必须抵扣吗
  • 深圳税务局完税证明
  • 财税〔2009〕61号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设