What is Lodash
Lodash 不仅仅是一个现代 JavaScript 工具库,更是一种数据处理的方式。
import _ from 'lodash';
var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
_.at(object, ['a[0].b.c', 'a[1]']);
// => [3, 4]
这个系列将以阅读源码的方式,探秘 Lodash,并且加深对 JavaScript 的理解。
Why is Lodash
我在 Underscore 和 Lodash 之间纠结了一下,最终选择了 Lodash 作为我的源码阅读之路的开篇。
Lodash 基于 ES6 的语法,具有模块化的源码结构
ES6+ 即将或者已经成为 JavaScript 开发的规范。而 Lodash 的源码基于 ES6 的语法规范,相比于 Underscore 更具有前瞻性。
正因如此,Lodash 将每一个 API 都单独分隔成一个模块,并且支持按需引入,比如:
import chunk from lodash.chunk
chunk([1, 2, 3, 4, 5, 6], 2)
// [[1, 2], [3, 4], [5, 6]]
在 Node 中也可以很方便的使用:
const chunk = require(lodash.chunk)
而模块结构,可以更具有针对性,更清晰地分析源码,避免走进源码的黑洞。这是阅读源码很重要的一点。
Lodash 丰富的 API
Lodash 具有 200+ 的 API,主要包括数组、对象、字符串的处理,类型检测,以及工具函数等,并且覆盖了全部的原生 JS API。
从使用 Lodash 的角度来说,Lodash 具有其 API 不会改变原数据的优点,避免了使用某些原生 JS API 会改变原数据的隐患。比如原生 JS 中数组的 reverse()
方法。
const originalArr = [1, 2, 3];
originalArr.reverse();
console.log(originalArr); // [3, 2, 1]
const originalArr2 = [4, 5, 6];
_.reverse(originalArr2);
console.log(originalArr2); // [4, 5, 6]
从源码学习的角度,我认为学习 Lodash 的 API,可以对 JS 的基础知识得到一次提升,这也是我写这个系列的主要目的。
Lodash 的函数式编程思想
Lodash/fp 可以实现函数式编程。
目前,我对函数式编程处于了解的阶段,我也就暂时不展开了。希望通过 Lodash 源码的学习,让我入门函数式编程。这是第二个目的。
Lodash 的性能
Lodash 还有一个我感兴趣的点,即惰性计算。这个也待我了解清楚后,在后续的文章中记录。
所以,我选择 Lodash
以上四点,是我选择 Lodash 的原因。
我深知源码学习之难,通过写文章的方式记录,是一种激励自己的方式。
About Me
Leo,本科,前端爱好者。
GitHub: https://github.com/swpuleo
优快云: https://blog.youkuaiyun.com/swpu_Leo
Email: swpu.leo@gmail.com
在路上。
Next
Lodash 如何判断数据类型 I