位置: 编程技术 - 正文

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

  • 进料加工贸易流程
  • 小规模纳税人升级一般纳税人流程
  • 税前扣除项目主要内容?
  • 小规模减免税款的账务处理
  • 个人所得税定额扣除怎样理解
  • 小型企业利润表
  • 一般纳税人要做价税分离吗
  • 未休年假三倍怎么计算
  • 软件出口税收政策
  • 资产损失税前扣除管理办法2019
  • 固定资产发票怎么入账
  • 营改增后众筹融资业务的会计处理分析
  • 取得转账支票后该如何处理
  • 资本公积与实收资本和盈余公积有什么区别?
  • 企业拆迁补偿款要交哪些税
  • 什么叫记载资金的账簿
  • 厂房租赁税率是房东交的吗
  • 减免能减多久
  • 2021年如何申报海外收入
  • 购买的样品怎么做账
  • 运费发票备注栏样板
  • 企业注销固定资产处理
  • 抵债资产会计核算办法
  • 电脑开机弹出documents文件夹
  • linux系统怎么关闭端口
  • 腾讯手游助手怎么把游戏放到桌面
  • 内部交易逆流如何算利润
  • 怎么把qq垃圾全部清除
  • 支付中间业务收入怎么算
  • PHP:mb_ereg_match()的用法_mbstring函数
  • php生成唯一标识
  • mac系统怎么清除数据
  • 计提本月应缴纳的所得税
  • 公司不运营了需要注销吗
  • PHP:Memcached::incrementByKey()的用法_Memcached类
  • phpqrcode
  • 面试官:一千万是真的吗
  • php验证表单方法有哪些
  • 先收票后收货
  • vue路由守卫用法
  • vite2.0 vue
  • python第三方库安装教程
  • 残保金都要申报吗
  • 福利费超过多少交税
  • 信用卡的还款方式怎么查
  • 累计盈余定义
  • 全年一次性奖金并入或单独哪个好
  • 高工资的工资
  • 企业不如实申报个税的风险
  • 土地回收补偿费怎么算
  • 去年的暂估入库今年想把它给冲出来怎么做分录
  • 应付账款借方余额在资产负债表中怎么列示
  • 编制利润表的主要根据是
  • 日记账的建立
  • Windows XP/Vista/Windows 7常见蓝屏故障分析
  • 如何利用excel的数据制作图表
  • xp系统禁用网络连接
  • windows系统后台不显示QQ等软件(任务栏右侧不显示QQ图标)
  • win10打开或关闭功能在哪里
  • windows7如何启动记事本
  • win8的ie打开马上闪退
  • thinkpad8装系统
  • centos为什么没有桌面
  • mysql如何添加外键
  • 深入理解rcu
  • ext.formpanel
  • android开机自启动显示界面
  • ip地址一键切换
  • unity3d怎么改变物体大小
  • rsa 密钥格式
  • jquery mobile 加载页面
  • 关于学习的名言
  • js遍历table的td
  • 国家税务总局在哪
  • 浙江国税咨询电话12306
  • 电子税务局辽宁省
  • 税务发票小助手 小程序二维码
  • 股东向公司借款需要什么手续
  • 税务局文化品牌
  • 逆光代售和神仙代售那个好一点
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设