位置: 编程技术 - 正文

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

  • 进项税额转出就是要多交税吗
  • 金税盘入账的会计分录
  • 税务师考试要求核酸检测
  • 一般纳税人交的增值税能不能抵扣企业所得税
  • 完税证明可以代替契税发票吗
  • 贷款利息怎么算的
  • 企业捐赠扣除标准,超出部分
  • 医院收到卫生局补助会计分录怎么写
  • 资产减值损失会影响利润吗
  • 劳动合同解除和终止的经济补偿
  • 碎石需要技术吗
  • 专项发票和普通发票的税点
  • 营业外支出调减应该填在纳税调整项目明细表哪一项
  • 统一社会信用代码证
  • 1500元左右打游戏最好的手机
  • 农产品收购销售免税吗
  • 电缆与变压器连接有何规定
  • 库存现金银行存款用什么凭证
  • 产负债表的负债项目,显示了企业所负担债务的
  • filecopyutils.copy上传文件
  • 付不出去的应付账款要交增值税吗
  • 期初留存收益是什么科目
  • 代缴费社保
  • 境外向国内汇款新规
  • 微信公众号开发php源码
  • axios.defaults.baseURL的三种配置方法
  • vue项目中技巧知识点
  • c++stl详解
  • vue3和ts
  • python字符串多行
  • 学电脑网站
  • 长期股权投资核算的权益法包括哪些内容
  • 小规模纳税人购进农产品可以抵扣进项税吗
  • python线程和协程
  • 什么是服务型
  • 已缴款未入库是缴费成功了吗
  • 安装路灯会计分录
  • 建筑公司是可以开在住宅小区吗
  • 捐赠的增值税可以抵扣吗
  • 场地无偿使用证明的作用是什么
  • 坏账准备的账务处理
  • 合作建房土地增值税清算案例
  • 递延所得税资产和递延所得税负债
  • 注册资本及构成
  • 收到代理服务费怎么做分录呢
  • 年底销项税额和进项税额要转出吗
  • 新公司的注册
  • 教育费附加计入其他应付款吗
  • 红字发票怎么申报增值税
  • 税局关于企业费用报销
  • 没有销货清单的发票可以报销吗
  • 农产品没有发票怎么办
  • 会计做账的凭据怎么写
  • sqlserver 获取字符位置
  • mysql的三种查询方式
  • win10快速启动什么意思
  • openbsd6.8
  • wmiprvse.exe是什么程序
  • linux 用处
  • SwiftBTN.exe - SwiftBTN是什么进程 有啥作用
  • Win7自带的扫雷怎么都打不开
  • linux基础常用命令
  • git怎么备份
  • windows8飞行模式怎么关
  • 获取linux命令执行结果
  • dos常用命令与批处理文件
  • 页面滚动到底部
  • jquery课程总结
  • shell忽略大小写
  • 小米手机图库图标
  • js判断checkbox是否被选中
  • python 循环太慢
  • 置顶聊天折叠怎么关闭
  • jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
  • python直接访问私有属性的简单方法
  • js获取图片的宽高
  • 怎样从增值税发票查询
  • 北京 国税局
  • 税务分局长级别
  • 税务税率9个点怎么算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设