首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏云前端

    immutable.js 简介

    Iterable 和 Collection Iterable 是键值对形式的集合,其实例可以执行遍历操作,是 immutable.js 中其他数据类型的基类,所有扩展自 Iterable 的数据类型都可以使用 'baz'); x === y; // false 处理这一问题的另一种方式是通过 setter 设置 flag 对脏数据进行检查,但冗杂的代码是在让人头疼 seamless-immutable 与 Immutable.jsImmutable.js 压缩后下载有 16K。 bar = foo; bar.a.b = 2; console.log(foo.a.b); // 打印 2 console.log(foo === bar); // 打印 true// 使用 immutable.js merge 赋值 console.log(foo.a.b); // 像原生 Object 一样取值,打印 1 console.log(foo === bar); // 打印 false 总结 Immutable.js

    1.8K10发布于 2020-06-16
  • 来自专栏flytam之深入前端技术栈

    Immutable.js 简记

    下一个项目中打算在redux中使用Immutable.js。在此对一些API进行简单记录。日后用到其它也会慢慢补充 Immutable的中文翻译就是不可变,所以。

    1.3K10发布于 2020-01-14
  • 来自专栏京程一灯

    immutable.js 比原生 JavaScript 快得多

    Immutable.js是一个为 JavaScript 提供不可变集合的库,其灵感来源于 Clojure[脚本] 的不可变数据结构。它由 Facebook 开发。 本文中我们会讲到在一个常见情形中, immutable.js比 javascript会快得多:不修改原数组的情况下向数组添加元素。 而 immutable.js的 push的返回一个添加了新元素的新列表;而且,这非常快。 ? 不可变列表对决 JavaScript 数组 首先,在浏览器中加载 immutable.js: Object.keys(Immutable) 这里有一个计算代码执行时间的 benchmark函数: function 在我的计算机上, immutable.js的 push比原生 javascript的 push快约 100 倍。 注意,在往 immutable.js列表中添加元素时,列表本身并未改变。

    1.1K30发布于 2019-03-27
  • 来自专栏秋风的笔记

    深入探究immutable.js的实现机制(二)

    深入探究immutable.js的实现机制(一)[1] 深入探究immutable.js的实现机制(二) 本篇 上一篇我们研究了 Immutable.js 持久化数据结构的基本实现原理,对其核心数据结构 采用位分区的根本原因是为了优化速度,而对于空间的优化, Immutable.js 是怎么做的呢?接下来先探讨下这点。 Immutable.js 参考了HAMT对树进行了高度和节点内部的压缩。 它涉及到 Immutable.js 中的可变数据结构。 Transient 其实可以说 Immutable.js 中的数据结构有两种形态,“不可变”和“可变”。 虽然“不可变”是 Immutable.js 的主要优势,但“可变”形态下的操作当然效率更高。

    1.2K20发布于 2020-10-27
  • 来自专栏秋风的笔记

    深入探究Immutable.js的实现机制(一)

    网上已经有很多文章简单介绍了 Immutable.js 的原理,但大多浅尝辄止,针对 Clojure 或 Go 中持久化数据结构实现的文章倒是有一些。 下面结合多方资料、Immutable.js 源码以及我自己的理解,深入一些探究 Immutable.js 实现机制。 本系列文章可能是目前关于 Immutable.js 原理最深入、全面的文章,欢迎点赞收藏σ`∀´)σ。 vector trie,这是Clojure里使用的一种数据结构,Immutable.js 里的相关实现与其很相似),我们先了解下它的基本结构。 Immutable.js 实现了一个?hash函数,可以把一个值转换成相应数字。

    1.6K20发布于 2020-10-27
  • 来自专栏编程

    Immutable.js 到底值不值得用?

    导语 我是一个前端开发人员,拥有四年工作经验,目前在一个大型软件团体里工作,制作一个以React框架和Redux库为基础建立起来的新单页程序。 创作一个前所未有的网站,这对所有开发人员而言都有着令人兴奋的前景。我们会天真地眨着大眼睛,满满地抓起一把新技术,把它们全投入到这个node平台服务器上去,再抽身引退,对自己那领先时代的天赋惊叹不已。 选择的技术之中,有一个是Facebook公司的Immutable软件库。我们准备利用这个库来实现数据的表现方式,加强数据的不可变性(immutability),以此为开

    2.2K50发布于 2018-02-28
  • 来自专栏前端学习归纳总结

    Redux进阶(Immutable.js) 更好的阅读体验Immutable.js原生Js遇到的问题使用Immutable解决问题使用Immutable需要注意的点参考

    Immutable.js Immutable的优势 1. 保证不可变(每次通过Immutable.js操作的对象都会返回一个新的对象) 2. 丰富的API 3. 难以调试 (可以采用 Immutable.js Object Formatter扩展程序协助) 6. obj) { const obj2 = obj.set({ 'b', 2 }) } reducer生成新对象性能差 当项目变得复杂时,每一次action对于生成的新state都会消耗一定的性能,而Immutable.js Because it’s still an Immutable.JS object here in mapStateToProps, though, // there is no issue with 以及在 react+redux 项目中的实践 Using Immutable.JS with Redux 不变应万变-Immutable优化React React-Redux分析

    1.6K51发布于 2019-01-21
  • 来自专栏杰的记事本

    React性能优化三篇之一

    cloneDeep(objects); console.log(deep[0] === objects[0]); // ➜ false immutable 但是复杂数据的深度拷贝是很花性能的,这个时候就可以使用immutable.jsimmutable.js生成的数据进行操作之后总是返回一个新的数据,原有的数据不会改变。 Immutable.Map({a:1, b:2, c:3}); var map2 = map1.set('b', 50); map1.get('b'); // 2 map2.get('b'); // 50 immutable.js 通过结构共享来解决的数据拷贝时的性能问题,数据被set的时候,immutable.js会只clone它的父级别以上的部分,其他保持不变,这样大家可以共享同样的部分,可以大大提高性能。 总结 预分配reducer、精简reducer 精简action数据或使用immutable.js 使用middleware处理特殊需求(reducer中不方便处理的需求)

    68620发布于 2019-09-04
  • 来自专栏糊一笑

    Immutable日常操作之深入API

    写在前面 本文只是个人在熟悉Immutable.js的一些个人笔记,因此我只根据我自己的情况来熟悉API,所以很多API并没有被列举到,比如常规的push/map/filter/reduce等等操作,这些 Immutable.js provides many Persistent Immutable data structures including: List, Stack, Map, OrderedMap /lib/immutable.js'); let a = 1; let b = '1'; let c = 1; let d = { a: 1 }; let e = { a: 1 }; let f = 中认为是与自身相等的;+0和-0在Immutable.js中认为相等 2.对于Immutable中的集合类型,统一作为值比较。 Immutable.js的应用主要是在其不变性上,这对于层次比较深的值比较、拷贝上面将会变得十分有用处。

    2K90发布于 2018-05-09
  • 来自专栏糊一笑

    React渲染问题研究以及Immutable的应用

    应用Immutable.js来检测React中值的变化问题 在官网上来说,immutable提供的数据具有不变性,被称作为Persistent data structure,又或者是functional What is the benefit of immutable.js? Immutable.js makes sure that the “state” is not mutated outside of say redux. EDIT: I haven’t yet seen a good benchmark of Immutable.js vs no-library immutability. 只不过这里的最初状态是通过Immutable.js处理过的,所以在reducer中的所有操作都必须按照其API来。

    2.4K60发布于 2018-05-09
  • 来自专栏大前端(横向跨端 & 纵向全栈)

    第二十二篇:思路拓展:如何打造高性能的 React 应用?

    进阶玩法:PureComponent + Immutable.js 2.1.  这就是 Immutable.js 所做的事情。 Immutable 直译过来是“不可变的”,顾名思义,Immutable.js 是对“不可变值”这一思想的贯彻实践。 这里我用一个简单的例子,来演示一下 Immutable.js 的效果。 在实际的开发中,我们也确实经常左手 PureComonent,右手 Immutable.js,研发质量大大地提升呀! 值得注意的是,由于 Immutable.js 存在一定的学习成本,并不是所有场景下都可以作为最优解被团队采纳。

    67720编辑于 2023-08-09
  • 来自专栏杰的记事本

    React性能优化三篇之二

    这个时候immutable.js就要登场了,也是fb出品,有人说这个框架的意义不亚于React,但是React光芒太强。它能解决复杂数据在deepClone和对比过程中性能损耗。 使用immutable.js解决复杂数据diff、clone等问题。 参考 immutable.js reconciliation pure-render-mixin

    65310发布于 2019-09-04
  • 来自专栏ThoughtWorks

    展望2016,REACT.JS 最佳实践 | TW洞见

    文章不仅表明了 Flux 经常被滥用的观点,也推荐开发者使用 Redux 作为 JavaScript 的可预测状态容器,并且提出保持状态扁平化和使用 Immutable.js 等数据处理解决方案。 更简单也更自然的方式就是使用 Immutable.js。 fromJS } from 'immutable' const state = fromJS({ bar: 'biz' }) const newState = foo.set('bar', 'baz') Immutable.js 视频对于 Immutable.js 的工作原理有着非常深刻的讲解。 观察式与响应式方案 如果你不喜欢 Flux/Redux 或者只是想要更加 reactive,不要失望! const nextState = reducer(undefined, { type: USER_SET_TOKEN, token: 'my-token' }) // immutable.js

    3.5K90发布于 2018-04-20
  • 来自专栏星流全栈

    React + Redux 最佳实践

    Server - Data 数据的来源 在 redux 的生态圈内,每个环节有多种方案,比如 Data 可以是 immutable 或者 plain object,在你选了immutable 之后,用 immutable.js 可选 immutable.js: 通过自定义的 api 来操作数据,需要额外的学习成本。 不熟悉 immutable.js 的可以先尝试用seamless-immutable,JavaScript 原生接口,无学习门槛。

    1.8K50发布于 2018-06-01
  • 来自专栏jQuery每日经典

    JavaScript 中的 不变性(Immutability)

    另一个是由Facebook开发人员撰写的[immutable.js](https://github.com/facebook/immutable-js)。 对于这个演示,我将使用immutable.js,因为它的API对JavaScript开发人员更熟悉。 对于这次演示,我们将用不可变数据介绍“扫雷”游戏是如何工作的。 整个事情都是使用JavaScript对象和数组初始化的,然后通过immutable.js的fromJS函数永久化: function createGame(options) { return Immutable.fromJS

    1.4K20编辑于 2022-01-20
  • 来自专栏腾讯IVWEB团队的专栏

    觉得mobx不错,但又放不下redux?

    很多工程开始使用Immutable.js,以上的代码可以改写为: let newState = state.updateIn(['list',0,'roomInfo','rateList',0, 'score 我们可以将store替换成一个MST对象,MST对象本质上是immutable的数据类型,这样在reducer中可以避免繁琐的Object.assign代码,这个用法与你使用Immutable.js别无二致 todo.completed } })) 这个解法,相当于mobx抢了Immutable.js的生意,如果开发者想继续用redux,但是(和我一样)对Immutable.js的api深恶痛绝的话

    1.7K30发布于 2020-06-27
  • 来自专栏社区的朋友们

    react 渲染性能优化

    对于比较复杂的数据类型,变更后直接用‘===’进行比较是没有用的,因为引用相同;如果可以在变更数据的同时产生一个新的引用不同的数据,那么我们就可以直接进行引用的比较从而判断数据是否有变化了,因此可以借助immutable.js immutable.js很好的解决了上面的需求,在数据发生变更后产生一个全新的immutable data(不可变数据),同时通过structural sharing的方案避免了deep clone带来的过多消耗

    2.7K00发布于 2017-05-04
  • 来自专栏webTower

    React 组件优化方案

    Immutable.js immutable.js 是一个 JavaScript 库。 也就是说,数据一旦被 immutable.js 创建后,通过原生方式改变数据是不可以的,只有使用 immutable 内部提供的方法去进行数据变更。 immutable 常用 API 简介[3] 相比于深度克隆,Immutable.js 采用了持久化数据结构和结构共享,保证每一个对象都是不可变的,任何添加、修改、删除等操作都会生成一个新的对象,且通过结构共享等方式大幅提高性能 实现原理可以参考这篇博文: 深入探究 immutable.js 的实现机制[4] 当熟练使用 immutable 时就差不多能解决 react 组件不更新的问题了。 utm_source=tag-newest [4] 深入探究immutable.js 的实现机制: https://segmentfault.com/a/1190000016404944

    3.6K20发布于 2020-02-17
  • 来自专栏灯塔大数据

    塔荐 | 2018 年最值得关注的 JavaScript 趋势

    Immutable.js 有一位reddit网友是这样描述的,我很喜欢这种说法: immutableJS确保了大型团队的开发者不会做一些愚蠢的事情。 简而言之:Immutable.js,Facebook的另一个项目,确保了状态不会因为使用不可变对象而发生突变。 封装在Immutable.JS对象里面的数据是永远也不会变的。它总会返回一份新的拷贝。 使用Immutable.JS有相当大的限制,但视你的需求不同,那些限制未必有关系。你可以通过这篇 文章 了解更多。 在GitHub上拿到了20000多颗星的Immutable.js已经在2017年崛起,预计还会延续到2018年,因为开发者正在花时间理解其中的概念和权衡。

    2K80发布于 2018-04-03
  • 来自专栏学习与分享

    React聚焦渲染速度

    例如,使用Immutable.js等不可变数据结构可以减少不必要的状态变化和重新渲染。此外,使用高效的排序和过滤算法也可以加快数据的处理速度。 其次,我们使用Immutable.js作为数据存储,当聊天记录发生变化时,我们只更新发生变化的部分,而不是整个聊天记录。这大大减少了页面的渲染时间。

    82610编辑于 2024-02-20
领券