Nội dung bài viết
Video học lập trình mỗi ngày
Ý tưởng và nguồn cảm hứng bài viết về "Có nên sử dụng lodash hay không?" xuất phát từ bài viết trên một trong những cộng đồng lập trình viên nên theo dõi, bài viết có tiêu đề "Let's talk about Lodash" theo tôi bài viết này hay, nhưng chưa đủ, và tôi có thể bổ sung thêm một số ý nữa là tốt hơn bạn tự học javascript.
Lodash là gì?
Lodash là một thư viện tiện ích JavaScript nhất quán, các modules có hiệu suất cao, và quan trọng rất mạnh mẽ bao gồm hầu hết các điểm chức năng logic có thể gặp trong quá trình phát triển front-end. Sử dụng Lodash có thể cải thiện đáng kể hiệu quả phát triển của mỗi dự án. Lodash, số lượng sao gitHub gần 50K tính theo thời gian viết bài này.
Lodash
được liệt kê vào là những JavaScript library cần thiết cho một lập trình viên sự phát triển một website nhanh và hiệu suất cao.
Có nên dùng lodash không?
Đương nhiên là phải sử dụng lodash
nếu bạn không tự tin vào kiến thức của mình, nhưng đó cũng là nhược điểm, sự phụ thuộc quá nhiều khi sử dụng loddash
của mỗi DEV gây nên một số lỗi lầm chính đó là "Dùng dao mổ trâu giết gà".
Điều đó là không nên, dưới đây tỗi sẽ đưa ra một số tính huống mà chúng ta có thể sử dụng những tính năng đã được giới thiệu một cách mạnh mẽ từ es2015 đến es2021. Dưới đây là những tình huống cụ thể mà bạn có thể cân nhắc không nên dụng lodash.
Lodash array
Nếu nói về cấu trúc dữ liệu Array
thì có lẽ bạn không nên sử dụng nó những tính huống dưới đây bạn nên sử dụng javascript native hay được support bởi ES6 trở lên.
Mỗi trường hợp tôi sẽ sử dụng lodash
và ES6, và bạn có thể dùng lodash online để check lại nếu không tin tưởng tôi...
1 - compact array
lodash.compact([0, 1, false, 2, '', 3])
// Sử dụng Fillter trong ES6
[0, 1, false, 2, '', 3].filter(_ => _)
// [1, 2, 3]
2 - pull array (loại bỏ phần tử được chỉ định)
lodash.pull([1, 2, 3, 1, 2, 3], 2, 3)
[1, 2, 3, 1, 2, 3].filter(item => ![2, 3].includes(item))
// [1, 1]
3 - làm phẳng array (giảm 1 chiều
lodash.flatten([1, [2, [3, [4]], 5]]))
[1, [2, [3, [4]], 5]].flat(1))
// [1, 2, [3, [4]], 5]
4 - head (lấy phần tử đầu tiên)
const first1 = lodash.head([1, 2, 3])
const [first2] = [1, 2, 3]
// 1
5 - Fill Array
lodash.fill([1,2,3],'a')
[1,2,3].fill('a'))
// ['a', 'a', 'a']
lodash.fill(Array(3),'b')
Array(3).fill('b')
// ['b', 'b', 'b']
6 - flattenDeep | flattenDepth (thu gọn thành mảng một chiều)
lodash.flattenDeep([1, [2, [3, [4]], 5]])
lodash.flattenDepth([1, [2, [3, [4]], 5]], 3)
[1, [2, [3, [4]], 5]].flat(Infinity)
// [1, 2, 3, 4, 5]
7 - frompairs js
lodash.fromPairs([['fred', 30], ['barney', 40]])
Object.fromEntries([['fred', 30], ['barney', 40]])
// {fred: 30, barney: 40}
8 - Concat array
lodash.concat([1], [2, 3, 4], [5, 6])
[1, ...[2, 3, 4], ...[5, 6]]
// [1, 2, 3, 4, 5, 6]
9 - difference array
lodash.difference([3, 2, 1], [4, 2])
[3, 2, 1].filter(item => ![4, 2].includes(item))
10 - take array
let arr1 = [1, 2, 3, 4, 5]
arr1 = lodash.take(arr1, 2)
const arr2 = [1, 2, 3, 4, 5]
arr2.length = 2
// [1, 2]
Trường hợp nên sử dụng lodash
Trên đó là những trường hợp tôi nghĩ không nhất thiết phải sử dụng lodash
, nhưng một số trường hợp này, có lẽ tôi ngày xưa cũng hay xài nhiều lắm, giờ nó vẫn hữu ích như:
- pullAt (chọn các phần tử dựa trên chỉ số con và chia chúng thành hai mảng)
- takeRight (trả về một lát mảng gồm n phần tử từ phần tử cuối)
Như ví dụ:
const [beforeLast, last] = lodash.takeRight([1, 2, 3, 4], 2)
console.log(beforeLast, last) // 3 4
zipObject
lodash.zipObject(['a', 'b'], [1, 2]);
// => { 'a': 1, 'b': 2 }
zipObjectDeep
lodash.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);
// => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }
groupByID javascript
const users = [
{ id: 'barney', age: 40, height: 1 },
{ id: 'fred', age: 39, height: 2 },
{ id: 'travis', age: 38, height: 2 },
{ id: 'anonystick', age: 40, height: 2 },
]
_.groupBy(users, 'age')
//Ouput:
{
"38": [
{
"id": "travis",
"age": 38,
"height": 2
}
],
"39": [
{
"id": "fred",
"age": 39,
"height": 2
}
],
"40": [
{
"id": "barney",
"age": 40,
"height": 1
},
{
"id": "anonystick",
"age": 40,
"height": 2
}
]
}
Lời kết
Tóm lại, ở đây tôi chia thành 2 trường hợp khác nhau. Một bên là nên sử dụng lodash
, một bên là không nên, vì tuỳ theo những trường hợp khác nhau. Một điều lưu ý rằng, nếu bạn mới học lập trình javascript thì nên sử dụng chúng trước cái đã, vì chác rằng bạn sẽ làm không tốt xét về hiệu suất khi dùng với lodash
đâu. Khi lớn lên và trưởng thành hơn, thì bạn nên viết cho mình một kho vũ khí thật chắc chắn, mỗi lần xài, thì lôi ra chiến thôi.
Happy code!