位置: 编程技术 - 正文

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

  • 缴纳增值税做账
  • 一般纳税人提供服务税率
  • 完税证明能作为理赔依据吗
  • 吸收合并一般需要多久
  • 小规模公司交税时间
  • 一般纳税人印花税的计算公式
  • 零税点的普票和六税点的普票区别
  • 小规模纳税人综合税负
  • 供暖企业收取的容量热价费怎么计入收入
  • 度假村功能
  • 建筑面积包括分摊建筑面积吗
  • 联通租赁官网
  • 在杂志上发表论文
  • 国有企业出租房屋管理规定
  • 账面价值大于计税基础产生什么差异
  • 会务费抵扣限额
  • 固定资产管理的三大原则
  • 通用机打发票税率在哪改
  • 基建人员工资计入哪个科目
  • 研发费用报表列报
  • 工程项目产生的沙石怎么处理
  • 公司的钱怎么提现
  • 补提上个月折旧会计分录
  • 公允价值变动损益转入其他业务成本
  • 车船税的减免税
  • 增值税抵扣联退税多少
  • 几年前的美元现在值钱吗
  • 产品预付款合同如何填写
  • 买卖房子归谁管
  • 附加税退款分录
  • 政策性减免单位社保
  • Linux系统怎么调整屏幕亮度
  • 华为鸿蒙系统怎么降级版本
  • 小规模纳税人的条件
  • 转包工程款怎么结算
  • win7电脑怎么样
  • ScanMailOutLook.exe - ScanMailOutLook是什么进程 有什么用
  • 代扣的工会会费和工会经费
  • php数组函数大全
  • win10磁盘碎片整理打不开
  • php deprecated
  • php两个$什么意思
  • 比利时的平菇能吃吗
  • php框架介绍
  • 可变现净值相关税费包括消费税吗
  • 应纳税为什么是0
  • chage -l命令
  • 企业所得税年报滞纳金从哪天开始算
  • 织梦怎么用
  • 万元版和十万元版发票图片
  • sqlalchemy 封装
  • mongodb如何备份
  • 什么是异地企业
  • 政府会计制度下基建账
  • 技术服务收入属于销售营业收入吗
  • 预包装的标签有哪几种
  • 关税怎么入账
  • 公司销售商品怎么做分录
  • 接受捐赠财产净价值属于所有者权益吗
  • 关于购买安保器材的报告
  • 未入账的记账凭证填错了怎么办
  • mysql 授权命令
  • win7系统步骤
  • windows 10预览版
  • linux中fi
  • win8系统无法开机出现字母
  • Centos 6.4 64位版命令行下设置无线网卡教程
  • win7安装cad2022
  • 升级win10系统后安装谷歌打不开
  • windows10预览版是什么
  • [置顶] 《诸天星河》
  • 清除电脑开机痕迹
  • Cocos2dx 3.0 lambda表达式的使用
  • nodejs.
  • DOS命令删除文件夹
  • 初步使用筷子而动作不规范的幼儿保育员应该
  • js作用域和作用域链的理解阮一峰
  • 可扩展的敏捷方法有哪两种观点,并作以简单阐述?
  • 特斯拉绿色牌照
  • 重庆个人所得税是多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设