Lodash 源码 | 0 我选择从 Lodash 开始

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

我的公众号

cameraee

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值