Indicando: ES7 Decorators úteis
Você sabe o que é um decorator? De maneira resumida, decorator é um design pattern que permite que você adicione funcionalidades a um objeto! A Wikipedia tem um artigo sobre o decorator pattern que pode te ajudar a entender o que é o padrão.
E você sabia que o ES7/ES2016 possui decorators em sua especificação? Pois é, já é possível usar decorators no JavaScript a partir de transpilers como o Babel, que podem ser usados, por exemplo, para tornar classes singletons, ou adicionar debounce à métodos.
Mas espera, eu li na descrição dos decorators que eles adicionam funcionalidades à um objeto individual sem alterar os outros da mesma classe, qual é que é essa aí de tornar uma classe um singleton? Isso não faz sentido!
Caso você tenha tido a reação acima, talvez você tenha se esquecido (ou não saiba) que classes/funções em JavaScript são instâncias de Function
;)
Este post não visa ensinar o que são decorators, nem como usá-los no JavaScript, o post do Addy Osmani sobre ES2016 decorators pode fazer isso muito melhor do que eu! O que vim fazer aqui é simplesmente te indicar bons pacotes de decorators para usar com JavaScript/NodeJS.
core-decorators
Este pacote possui vários decorators inspirados em decorators e annotations que já vem built-in em algumas linguagens, como @deprecate
, @autobind
, @debounce
, entre outros.
lodash-decorators
E aí, o que acha de ter diversas funções do lodash em forma de decorators? Bom, né? É justamente isso que este pacote vai te permitir.
express-decorators
Se o seu app é feito usando o express, ter decorators que te permitem linkar classes ES6 à funcionalidades do mesmo (transformar uma classe em um controller, um método em um handler de rota, ou em um middleware, por exemplo), o pacotre express-decorator pode te ajudar bastante.
hapi-decorators
Mas se o seu negócio é usar o hapi ao invés do express, o hapi-decorator é uma escolha para você, ele é baseado nos decorators para express. :)
koa-router-decorators
E se seu app é feito usando o koa e tem o roteamento feito com o koa-router, também existe uma opção como as anteriores para você.
async-decorators
Já está usando async/await em seus códigos? O async-decorators possui alguns decorators que podem te ajudar, como o o @memoize
e o @serialize
.
react-mixin
Se você usava React antes usando o React.createClass
e agora usa classes do ES6 já deve saber que usar mixins como usava antes não é possível com as classes, certo? Com o react-mixin você vai ser capaz de usar mixins no React normalmente, mesmo com classes, usando decorators tanto para métodos quanto para classes.
angular-decorators
E por último, se o seu app é feito com Angular também existem decorators que melhoram a sintaxe que você vai usar na hora de criar modules
, providers
, services
, entre outras ngCoisas.
Bom, estas foram minhas dicas de decorators, espero que sejam úteis para vocês. E se você sabe mais algum decorator (ou coleções deles) para serem adicionadas nesta lista, pode comentar ali em baixo!