位置: 编程技术 - 正文

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

  • 税控盘减免税款月末如何结转
  • 住宿普通发票怎么做账
  • 公司缴纳养老保险不在个人账户里吗
  • 上级补助收入对应的支出科目是哪个
  • 发票为啥一直显示上传不成功
  • 生活服务费发票 经营范围
  • 个体工商户个人所得税怎么申报
  • 企业的房产税节税有哪些方案?
  • 抵货款回来的产品叫什么
  • 电信线路租用的手机
  • 子公司注销欠母公司借款怎么办
  • 主营业务税金及附加包括增值税吗
  • 旅游业务开什么发票
  • 纳税人登记为一般纳税人后一律不得转为小规模纳税
  • 个人利息收入交不交增值税
  • 个体户进项发票多开出发票少怎么办
  • 应付账款对账的流程和技巧
  • 防洪工程维护费取消
  • 企业所得税抵缴欠税
  • 什么叫电鳗鱼
  • caxa电子图板2007教程
  • windows10如何调出虚拟键盘
  • win 11 bug
  • erl.exe是什么进程
  • Win10组策略怎么进
  • 新店开业费用预算表格
  • 自己给笔记本更换硬盘
  • 外商投资企业有哪些出资方式
  • vue click触发两次
  • 注意力机制详解
  • 以其他方式取得土地使用权
  • 供热企业享受增值税吗
  • el-table懒加载合并行
  • 还贷款利息会计怎么做账
  • php cat
  • 以前年度损益调整借贷方向
  • 自然人独资可以变更为有限责任公司
  • 资产总额不超过5000万是指全年平均收入吗
  • 政府补助增值税即征即退
  • dede织梦怎么转成zblog
  • 一般项目的进项税和即征即退进项税
  • 接受捐赠如何进项
  • sql查询出各科成绩单
  • 行政事业单位资产报废账务处理
  • 背书是什么含义
  • 承租人转租房屋的后果
  • 员工借款还款怎么做账
  • 员工借款属于什么现金流量
  • 材料报废如何做分录
  • 经营杠杆系数的经济含义
  • 施工企业简易计税的依据
  • 产品成本计算中最基本的方法是
  • 营改增税法
  • 手机开个人发票怎么开
  • 电梯在固定资产里属于什么设备类别
  • 冲回以前年度工会费
  • SSB(SQLservice Service Broker) 入门实例介绍
  • windowsserver2008远程桌面怎么打开
  • linux安装.sh
  • 如何重装windows8
  • centos which
  • macos10.8下载
  • linux 详解
  • kernel headers not found for target kernel
  • quick-lua touch 触摸事件
  • jquery三种遍历方法
  • 并行执行的符号
  • js中的json
  • 如何大小写字母转换
  • 浅谈幼儿良好行为的培养论文
  • unity图集作用
  • JavaScript中的数据类型分为两大类
  • python线程启动和暂停
  • jq easyui
  • android:ViewPager与FragmentPagerAdapter
  • 四川省国家税务局电子税务局
  • 个体户注销税盘需要公章吗
  • 交错了税可以退吗
  • 房地产公司可以查到客户购房信息
  • 税法难吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设