位置: 编程技术 - 正文

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

  • 小型微利企业所得税减免政策
  • 农产品收购发票使用范围
  • 企业所得税如何申报操作
  • 收到上年度所得税发票
  • 期间损益结转错误怎么冲销
  • 房产公司售楼部装修费入什么会计科目
  • 财务费用属于什么科目借贷方向
  • 所得税费用的余额期末时应转入利润分配账户
  • 人员处于银行代扣报盘期间什么意思
  • 生产成本月末转到哪里
  • 特许权使用费计算公式
  • 支付外币投资会计处理
  • 其他公司归还货款会计分录
  • 年终奖金在年度内扣税吗
  • 公益性捐赠全额扣除2020年第9号文件
  • 库存现金多了是什么原因
  • 企业长期待摊费用包括
  • 公司成立初期费用入账
  • 工程多少金额需要投标
  • 福利费专票不抵税可以吗
  • 建筑企业使用民工的税务风险你清楚吗?
  • 增值税先征后退属于政府补助吗
  • 分摊的水费应取得何种扣除凭证
  • 不计入工资薪金所得的有哪些补贴
  • 企业所得税季报怎么申报
  • 独立核算的分公司可以享受小微企业吗
  • 以资抵债方式取得的无形资产如何记账?
  • 个税申报月份有误如何调整?
  • 以前年度损益申报怎么报所得税
  • 华为手机屏幕碎了照片
  • 增值税专票和普票的区别税率
  • 瓶盖再来一瓶
  • 购入固定资产后发生的员工培训费应计入固定资产的成本
  • 企业购入固定资产在每期末应使用公允价值法进行计量
  • microsoftedge怎么转换成ie
  • 上年度成本费用包括哪些
  • 企业受赠业务的法律规定
  • 民间非营利组织会计制度
  • 微信公众号实现对应查询
  • 怎么做一个简单的机器
  • python3 argparse
  • 6款好用的ppt制作软件推荐
  • 个体生产经营所得优惠政策
  • 损益类所得税费用
  • 用专项资金支付项目滞纳金合规么
  • 增值税开票系统客服电话
  • 个人独资企业法主要内容
  • 个人包含什么
  • 关于翡翠手镯知识
  • 契税并入土地价值吗
  • 房屋维修基金交给哪个部门
  • 不合格产品会计处理
  • 债务利息收入
  • 本年利润如何记账
  • 社保基数在哪里申报
  • 其他应付款时间长了怎么处理?
  • win7系统软件安装就闪退怎么办
  • win预览版计划
  • win10系统无法打开这个应用
  • 如何解决win10系统用户名有中文
  • executor进程
  • ubuntu20.04忘记root密码
  • win8的安全中心
  • mac的替换在哪里
  • win7系统删除文件需要权限
  • javascript RegExp 使用说明
  • 深入理解
  • linux shell $1
  • ms-dos7.10如何安装
  • 将目录下的文件和文件夹按类型排序
  • Node.js 中exports 和 module.exports 的区别
  • nodejs微信小程序开发工具
  • unity协程会阻塞主线程吗
  • jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法
  • Unable to connect to zookeeper
  • 中通快递广东省内收费标准
  • 浅谈新时代劳动教育答案
  • 房产税纳税义务时间
  • 国税总局王军简历
  • 中华人民共和国道路交通安全法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设