位置: 编程技术 - 正文

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

  • 不动产租赁税率2023
  • 关税完税价格是到岸价吗
  • 可供出售金融资产新准则叫什么
  • 承兑汇票私人贴现要多久
  • 加计扣除进项税账务处理
  • 支票上的法人章和财务章是央行盖吗
  • 坏账准备计提比率计算公式
  • 小微企业免税销售额和未达起征点销售额
  • 股东以外的人投资怎么做账
  • 在账务处理过程中,最关键的环节是
  • 登记多栏式日记总账的依据是
  • 库存现金盘点表是不是原始凭证
  • 非盈利组织的好处
  • 对方多开发票怎么处理
  • 投资款打到个人账户算诈骗吗
  • 担保公司做担保怎么收费
  • 采购合同中含税金额
  • 农民专业合作社普通发票抵扣
  • 预付卡增值税如何申报
  • 发票密码区出来了还能用吗
  • 对公账户在税务局能查到吗
  • 保理利息开具增值税专用发票
  • 小规模纳税人增值税超过30万怎么纳税
  • 付款时收到应收票据会计分录怎么做?
  • 研发费用费用化金额和资本化金额有什么区别
  • 停车场领的定额发票要怎么报税?
  • 货款部分红冲进项转出如何做账?
  • 地方教育附加怎么算的?
  • win10专业版版本号2009
  • 实收资本和注册资本必须一致吗
  • 微信占用空间大是怎么回事
  • php的pdo是什么
  • Windows 2003 SP2 简体中文版下载地址
  • 应付债券的会计处理
  • php 代码生成
  • 公司以知识产权出资纳税筹划
  • 如何利用路由器登陆花生壳
  • vue3刷新组件
  • 隐藏index.html
  • php互换两个变量的关系
  • mysql的排序规则
  • php静态方法可以被继承吗
  • php计时函数
  • 未核定月数是什么
  • 分公司财务核算独立不独立
  • 无形资产资本化和费用化的区别
  • CINLINELE工具
  • 增值税税目明细
  • 个税手续费返还计入哪个科目
  • 个税免税部分
  • 自产和外购用于赠送
  • 小企业会计准则和一般企业会计准则的区别
  • 应交税费为什么写在借方
  • 收付实现制的适用范围
  • 个税 收入
  • 清算期间发生的利息支出应计入
  • 企业哪些行为可以避税
  • 简易征收的项目进项税可以抵扣吗
  • 主营业务收入主要反映企业销售商品或劳务获得的收入
  • 资产利润率在1104哪个表
  • 提取备用金现金流量如何填写
  • 公司基本户的钱怎么用
  • 车子的上牌费要计入成本吗
  • 什么是其他应收款科目
  • mysqldump -h
  • xp如何查看系统位数
  • win10打不出字解决办法
  • 苹果发布会亮点速览
  • 你会支持国产系统吗英文
  • win8怎么开机不用密码
  • cocos2dx怎么用啊
  • 通过node-mysql搭建Windows+Node.js+MySQL环境的教程
  • 通过intent可以启动哪些组件
  • js 异步队列
  • nodejs数据库数据渲染
  • 非法文件名是什么
  • node.js 生成pdf
  • jquery设置div的宽度和高度
  • 地下车库是否缴房产税
  • 河北省房产评估机构排名
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设