Lodash и Radash са JavaScript библиотеки, които предлагат ценни функции за типични програмни задачи. Лодаш е там от доста време, докато Радаш е новото дете в блока.

Използването на тези библиотеки се е увеличило значително през последните няколко години, тъй като те опростяват много общи задачи за програмиране. Например, Lodash има повече от 45 милиона изтегляния седмично в NPM и 55.4K+ GitHub звезди. Въпреки това, Lodash не е получавал значителни актуализации от 2 години, докато нови библиотеки като Radash предоставят постоянни актуализации за разрешаване на съвременни проблеми с програмирането.

В тази статия ще обсъдя проблемите в Lodash и как radash ги решава в детайли, за да отговоря на крайния въпрос: Ще замени ли Radash Lodash?

Какво е Lodash?

Lodash е добре позната библиотека с помощни програми на JS с повече от 100 функции на JavaScript като карта, филтър, шаблони на JavaScript, дълбоки проверки за равенство и др. Можете директно да импортирате и използвате тези функции във вашето приложение, за да опростите често срещани програмни задачи като:

  • Итериране на масиви, обекти и низове.
  • Манипулиране и тестване на стойности.
  • Създаване на съставни функции.

Кодовият фрагмент по-долу показва как да замените традиционен for цикъл с Lodash.

var myArray = [1,2,3,4,5,6,7,8,9]

// Without Lodash
for (i = 0; i < myArray.length; i++) {
  console.log(myArray[i]);
}

// With Lodash
_.each(myArray, function (value, key) {
  console.log(value);
});

Както можете да видите, с Lodash разработчиците не трябва да дефинират променливи, да проверяват условия или да увеличават стойности, за да напишат for цикъл.

Можете лесно да инсталирате Lodash с помощта на NPM.

npm i --save lodash

Падането на Лодаш

Първоначално Lodash имаше страхотен успех и помогна на разработчиците да напишат чисти, поддържаеми JavaScript кодове. Въпреки това, той не е получил голяма актуализация за най-новите функции на JavaScript и разработчиците започнаха да се сблъскват с някои предизвикателства, когато използват Lodash.

Много функции на Lodash стават остарели с въвеждането на „незадължително верижно свързване“ и „нулево обединяване“. Функцията _.filter на Lodash е чудесен пример за това. Беше страхотна опция за итерация през обектни масиви и филтриране на записи въз основа на атрибути без грешки, дори ако атрибутът не съществува в обекта.

import _ from "lodash";

var users = [
  { user: "Poorna", age: 26, active: true },
  { user: "Widura", age: 28 },
  { user: "Binara", age: 24, active: true }
];

let filtered_users = _.filter(users, { active: true });

console.log(filtered_users);
// { 'user': 'Poorna', 'age': 26, 'active': true }
// { 'user': 'Binara', 'age': 24, 'active': true }

Но сега можем да използваме незадължителния оператор за верига за това. Той е много по-прост и не изисква импортиране на библиотеки на трети страни.

var users = [
  { user: "Poorna", age: 26, active: true },
  { user: "Widura", age: 28 },
  { user: "Binara", age: 24, active: true }
];

let filtered_users = users.filter(user => user?.active == true );

console.log(filtered_users);
// { 'user': 'Poorna', 'age': 26, 'active': true }
// { 'user': 'Binara', 'age': 24, 'active': true }

По същия начин функции като _.get, _.map и _.size също са остарели поради най-новите функции на JavaScript и TypeScript.

По отношение на производителността функции като опционално верижно свързване бяха много по-напред от функциите на Lodash. Според measurethat.net, опционалното верижно свързване може да работи почти 2 пъти по-бързо от Lodash. _.get функция.

Освен това разработчиците често се оплакват, че е трудно и отнема много време да се разбере как точно работят функциите на Lodash, тъй като не предоставя ясна API документация за разработчиците. Все пак трябва да признаем, че Lodash все още има силна потребителска база с повече от 49 милиона седмични изтегляния на NPM.

Какво е Радаш?

Източник: https://www.npmjs.com/package/radash

Radash е една от най-новите помощни библиотеки на JavaScript с нулева зависимост, която става популярна сред разработчиците. Той предоставя вълнуващи нови функции за замяна на остарелите функции на Lodash и постоянно пуска актуализации, за да поддържа синхрон с най-новите функции на JavaScript. Освен това е написан с TypeScript и типовете идват предварително опаковани.

Въпреки че Radash е нов, той има 1.9K+ GitHub звезди, 66 Forks и 11.5K+ седмични NPM изтегляния. Можете лесно да инсталирате Radash с помощта на NPM или Yarn.

// NPM
npm install radash

// Yarn
yarn add radash

Възходът на Радаш

Можем да използваме Radash вместо библиотеката Lodash по няколко причини. Radash има за цел да предостави надеждни функции за разрешаване на съвременни проблеми в JavaScript. Например, той силно поддържа функциите на TypeScript в сравнение с Lodash.

Освен това функциите в Radash са добре въведени, добре тествани, добре документирани и написани с простота като основен приоритет. Най-важното е, че тези функции разрешават проблеми в съвременния JavaScript.

Следните функции ще ви дадат някои идеи защо трябва да използвате Radash.

функция range().

Функцията [range()](https://radash-docs.vercel.app/docs/array/range) е страхотна функция на Radash, тъй като може да замени традиционните цикли. Да приемем например, че трябва да отпечатате от 1 до 5. Ако използвате традиционен for цикъл, той ще изглежда така:

for (let i = 1; i <= 5; i++){
  console.log(i);
}

Но с функцията Radash range() можете да пропуснете всички декларации на променливи, условия и увеличения.

import { range } from 'radash';

for (const i of range(1,5)){
  console.log(i);
}

Както можете да видите, това е просто и всеки може лесно да разбере какво се случва в цикъла. Приема минимум 1 и максимум 4 входни параметъра. Въз основа на броя аргументи, които предоставяте, поведението на функцията range() ще се промени.

Например:

  • обхват (размер)range(5) // 0, 1, 2, 3, 4, 5
  • диапазон (начало, край)range(2,5) // 2, 3, 4, 5
  • диапазон (начало, край, стойност) — Стойността може да бъде функция. range(2, 5, (i) => i) // 2, 3, 4, 5
  • диапазон (начало, край, стойност, стъпка)(2, 5, i => i, 2) // 2, 4

функция list().

Функцията [list()](https://radash-docs.vercel.app/docs/array/list) също е доста подобна на функцията range(). Можете да го използвате за динамично генериране на списъци с конкретни елементи. Той също така приема минимум 1 и максимум 4 входни параметъра като функцията range().

import { list } from 'radash' 

var my_list = list(25, 100, i => i, 25)
console.log(my_list) // // [25, 50, 75, 100]

retry() функция

Функцията [retry()](https://radash-docs.vercel.app/docs/async/retry) на Radash ви позволява да опитате отново неуспешна асинхронна операция. Функцията приема операция, брой повторни опити и забавяне. Той непрекъснато ще прави повторни опити за операцията, докато успее или достигне максималния брой повторни опити.

import { retry } from 'radash' 

await retry({ times: 2, delay: 1000 }, api.articles.list)

Повечето разработчици използват тази функция като заместител на библиотеката async-retry. Можете да замените повечето съществуващи библиотеки за устойчивост на грешки за бекенд услуги, като комбинирате Radash tryit, parallel и retry.

функция counting().

Функцията [counting()](https://radash-docs.vercel.app/docs/array/counting) позволява на разработчиците да преброят броя на елементите в подобна на масив колекция. Той приема масив от обекти и функция за обратно извикване, за да реши условието за броене.

Ако използвате традиционен цикъл, ще трябва да работите с множество условия if else, за да получите крайния резултат.

const users = [
  {name: 'Poorna', type: 'engineer'},
  {name: 'Widura', type: 'manager'},
  {name: 'Binara', type: 'engineer'},
]

engineerCount = 0;
managerCount = 0;

for (let i = 0; i < users.length; i++){
  if(users[i].type == 'engineer'){
    engineerCount++;
  } else if (users[i].type == 'manager'){
    managerCount++;
  } 
}

console.log(engineerCount , managerCount); // 2 1

Но ако използвате функцията counting(), това ще бъде само един ред:

import { counting } from 'radash'

const users = [
  {name: 'Poorna', type: 'engineer'},
  {name: 'Widura', type: 'manager'},
  {name: 'Binara', type: 'engineer'},
]

counting(users , t => t.type) // => { engineer: 2, manager: 1 }

Типизирани функции

Типизираните функции са друга страхотна функция в Radash. Тя предоставя набор от функции като isArray(), isDate(), isFloat(), isInt() за проверка на типа на променливите.

Манипулации със струни

Radash също така предоставя набор от функции за „манипулиране на низове“. С тези функции можете лесно да постигнете някои от най-често срещаните форматирания на низове, като конвертиране в регистър на камила, конвертиране в регистър на паскал, изрязване и т.н.

Споменатите по-горе са само някои от много полезните функции на Radash. Има още много такива функции. Можете да ги получите от Радаш документация.

Заключение

В тази статия обсъдих защо новите разработчици не харесват Lodash и защо се насочват към алтернативи като Radash. Но в сравнение с новите конкуренти Lodash все още има огромна потребителска база и се използва широко в много мащабни проекти.

Въпреки това, с последните промени в JavaScript и TypeScript, разработчиците са по-склонни да използват модерни библиотеки с помощни програми като Radash, особено за нови проекти.

Каня ви да споделите мислите си за тези 2 библиотеки в секцията за коментари. Благодаря ви, че прочетохте.

Създавайте приложения за интерфейс с независими компоненти и екипи, използвайки Micro Frontends

Инструментът с отворен код на Bitпомага на 250 000+ разработчици да създават приложения с компоненти.

Превърнете всеки потребителски интерфейс, функция или страница в компонент за многократна употреба — и го споделете във вашите приложения. По-лесно е да си сътрудничите и да изграждате по-бързо.

Научете повече

Разделете приложенията на компоненти, за да улесните разработката на приложения и се насладете на най-доброто изживяване за работните процеси, които искате:

Микро-фронтенди

Система за проектиране

Споделяне на код и повторно използване

Монорепо

Научете повече: