关于JS库 radash

5,315 阅读2分钟

Radash是下一个你不能没有的库。首先,也是最重要的,它很强大。有了这些强大的函数,你就可以得到强大的类型和零依赖性。如果你能踏出一点信心,尝试一下这些函数,我毫不怀疑你会发现自己爱上了它。 官网:radash-docs.vercel.app/docs/gettin…

1. 特色功能

这里有几个我们已经离不开的功能。希望你也会发现它们很有用。

try

_.try函数抽象了try/catch的逻辑分叉,并提供了一个让人联想到错误的第一回调响应。

const [err, response] = await _.try(api.gods.create)({ name: 'Ra' }); 
if (err) { 
throw new Error('Your god is weak and could not be created') 
};
range

_.range函数返回一个可用于迭代的生成器。这意味着你再也不用写for (let i) 循环了。

for (const i of _.range(0, 4)) {
  console.log(i) // 0, 1, 2, 3, 4 
}; 
for (const i of _.range(10, 20, 2)) {
  console.log(i) // 10, 12, 14, 16, 18, 20 
};
select

_.select函数接收映射和过滤函数,并在一次迭代中为你一起运行它们。不再因为你需要映射和过滤而写一个reduce,而你又不想为了性能而单独实现它们。

const superPoweredGodsFromEgypt = _.select(
  gods, 
  g => ({ ...g, power: g.power * g.power }), 
  g => g.culture === 'egypt'
);
defer

_.defer函数让你在运行一个异步函数时注册函数作为清理运行。这就像一个try/finally,但你可以在特定的时间注册finally块。

await _.defer(async (defer) => {
  await api.builds.updateStatus('in-progress')
  defer((err) => {
    api.builds.updateStatus(err ? 'failed' : 'success')
  })

  fs.mkdir('build')
  defer(() => {
    fs.unlink('build')
  })

  await build()
})
objectify

_.objectify 函数帮助你在一个步骤中把一个列表转换为一个对象。通常情况下,我们要么分两步做,要么写一个reduce。

const godsByCulture = _.objectify(gods, g => g.name, g => g.culture)
2. 对标Lodash

Lodash是不可思议的。Radash的目标是提供你所需要的强大功能,而不是现在运行时所提供的功能,并且用伟大的类型和易于阅读和理解的源代码来实现。

3.安装 Radash

使用以下npm或yarn命令安装Radash。

npm install radash
yarn add radash