Anonystick

anonystick@gmail.com

Lodash - Trường hợp nào bạn nên sử dụng JavaScript library

Ý 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 lodashES6, 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!