让我们用Jewell在Javascript中添加一些糖

Jewell将高阶消息传递引入Javascript

让我们用Jewell在Javascript中添加一些糖
Jewell —用于高阶消息传递的Javascript语法糖

如果您想直接跳到动作(GitHub存储库), 请单击此处

在我的整个职业生涯中,我曾使用过多种语言和框架,并从中受益匪浅,并且从每种语言和框架中学到了很多东西。

最近,我一直在大量研究Javascript,有一天,在处理数组时,我记得Laravel框架具有一个非常酷的功能,即高阶消息传递。 它允许您创建非常富有表现力的1衬板,例如: (PHP代码)

$employees->filter->retired->each->sendPayment();

通过研究,我发现使用我最喜欢的语言之一的Ruby也有一些实现。 Ruby的语法非常流畅,因此高阶消息传递看起来很自然。 使用Nat Pryce的实现 ,这就是Ruby中相同代码的样子。

employees.where.retired?.do.sendPayment()

Java脚本呢?

您可能知道,那里有很多Javascript程序包,所以一旦研究并意识到没有针对Javascript的高阶消息传递库,您猜我将作何反应?

让我们用Jewell在Javascript中添加一些糖
如果您知道这样做的图书馆,请留在下面的评论中,我很乐意将其签出。 老实说,我无法在NPM / Google上找到它 \ _(ツ)_ /¯

由于找不到适合我完成相同行为的库,因此我想看看是否有可能。 我在业余时间开始**一个版本,结果发现可以使用ES6的一项功能Proxy! \ o /

棘手的部分是要使语法漂亮,并且在Javascript生态系统中有意义,而又不会造成麻烦。 经过几次迭代,我终于得到了一个我满意的版本! 它是这样的:

employees.filter.retired.forEach.sendPayment();

与我上面显示的示例非常相似,是吗? 现在,让我们一步一步地查看完整的代码示例。

步骤0。将Jewell添加到您的项目中

npm install jewell --save

步骤1.导入jewellPrototype并将其应用于Array类,因此我们可以将高阶消息传递与本机数组方法一起使用。

第2步。声明一个类。 在我们的例子中是钻石

步骤3.创建一个Diamond数组

步骤4.玩得开心

请注意,在“ Get all blue diamonds示例中,我们称为#isBlue ,这是因为#isBlue是一个函数。 如果是这样,我们为什么不在这里称呼它?

diamonds.filter.isBlue.forEach.buy()

答案是:可以,但这不是必需的。 由于isBlue没有参数,因此Jewell假定应调用它以允许链接。

除了修饰 Array类本身之外,还可以将Jewell与自己的库一起使用,该库具有操作数组或单个实例的快捷方式。

⚠警告:请记住,Jewell用Proxy代替了原始方法,因此在将其运送到生产环境之前,请确保您没有在应用中创建任何疯狂的行为或放慢一切。

您可以在回购中查看更多示例。 如有任何疑问,请在下面留言或在仓库中打开问题。 也非常欢迎您提供拉取请求和建议。

事不宜迟,这是GitHub存储库:

额外

如果您喜欢用爱制作的软件,我想邀请您加入GitShowcase 快来获得自己的摇滚明星作品集????。 抄送 Victor F.Santos

From: https://hackernoon.com/lets-add-some-sugar-to-javascript-with-jewell-d33d282fdee9