{"id":1866,"date":"2016-08-15T15:40:57","date_gmt":"2016-08-15T18:40:57","guid":{"rendered":"http:\/\/www.milfont.org\/tech\/2016\/08\/15\/usaremos-babel-pra-sempre\/"},"modified":"2016-08-15T15:40:57","modified_gmt":"2016-08-15T18:40:57","slug":"usaremos-babel-pra-sempre","status":"publish","type":"post","link":"https:\/\/www.milfont.org\/tech\/2016\/08\/15\/usaremos-babel-pra-sempre\/","title":{"rendered":"Usaremos Babel pra sempre"},"content":{"rendered":"<p>&#8220;Pra sempre&#8221; em se tratando de Web significa coisa de 1\/2 a 1 d\u00e9cada, e sim, usaremos Babel pra sempre.<\/p>\n<p>Nos cursos da <a href=\"http:\/\/www.produtoreativo.com.br\/\" target=\"_blank\" rel=\"noopener noreferrer\">Produto Reativo<\/a> (Modelo de educa\u00e7\u00e3o t\u00e9cnica que venho realizando dentro da sede da <a href=\"http:\/\/greenmile.com\/en\/home-en\/\" target=\"_blank\" rel=\"noopener noreferrer\">Greenmile<\/a> para a comunidade Cearense) a <a href=\"https:\/\/babeljs.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Babel<\/a> \u00e9 a pedra filosofal para trazer o futuro pra hoje, um aluno certa vez falou uma sacada genial quando eu falo das vantagens de usar ES7 j\u00e1:<\/p>\n<blockquote>\n<p>&#8220;Milfont, ent\u00e3o sempre usaremos Babel, porque quando os Browsers estiverem compat\u00edveis com ES7 j\u00e1 teremos ES8 ou mais\u2026&#8221;<\/p>\n<\/blockquote>\n<p>Perfeito, principalmente porque a <a href=\"https:\/\/tc39.github.io\/ecma262\/2016\/\" target=\"_blank\" rel=\"noopener noreferrer\">ES7 (ou ES2016)<\/a> j\u00e1 foi publicada e at\u00e9 agora o Chrome (com 97%) ainda est\u00e1 pr\u00f3ximo da <a href=\"http:\/\/kangax.github.io\/compat-table\/es6\/\" target=\"_blank\" rel=\"noopener noreferrer\">compatibilidade 100%<\/a> com a ES6 (ou ES2015) exemplificando essa frase. O Edge com 95% na frente dos outros concorrentes me enche de esperan\u00e7a na humanidade e um futuro longe das distopias.<\/p>\n<h3>Mostre c\u00f3digo, por\u00a0favor<\/h3>\n<hr \/>\n<p>Visualiza o c\u00f3digo React seguinte em ES6 cl\u00e1ssico como recomendado:<\/p>\n<p><a href=\"https:\/\/gist.github.com\/cmilfont\/2c17803534c6f22bcac1ccad0cbc2fb9#file-es6-js\">https:\/\/gist.github.com\/cmilfont\/2c17803534c6f22bcac1ccad0cbc2fb9#file-es6-js<\/a><\/p>\n<p>Independente de recursos fant\u00e1sticos como <a href=\"https:\/\/ponyfoo.com\/articles\/understanding-javascript-async-await\" target=\"_blank\" rel=\"noopener noreferrer\">Async\/Await<\/a>, s\u00e3o pequenos detalhes de recursos sint\u00e1ticos que melhoram a manuten\u00e7\u00e3o de c\u00f3digo.<\/p>\n<p>Come\u00e7amos com recurso de propriedades tanto de inst\u00e2ncia quanto de classe dispon\u00edvel no ES7. Analisando esse c\u00f3digo anterior, o padr\u00e3o ES6 \u00e9:<\/p>\n<p><a href=\"https:\/\/gist.github.com\/cmilfont\/f33962f158c10bb09d7d62a080566623\">https:\/\/gist.github.com\/cmilfont\/f33962f158c10bb09d7d62a080566623<\/a><\/p>\n<p>A nova vers\u00e3o inclui propriedades de classe e inst\u00e2ncia com a seguinte sintaxe:<\/p>\n<p><a href=\"https:\/\/gist.github.com\/cmilfont\/ed86c9b820b50fbeeb537c1795d68407\">https:\/\/gist.github.com\/cmilfont\/ed86c9b820b50fbeeb537c1795d68407<\/a><\/p>\n<p>E para n\u00e3o precisar sobrescrever o constructor para fazer o Bind de functions da pr\u00f3pria inst\u00e2ncia podemos usar o recurso de Fat Arrow Function na vari\u00e1vel de propriedade que faz o autobind:<\/p>\n<p><a href=\"https:\/\/gist.github.com\/cmilfont\/cb8afa7285b2b38a7d05210fe132b721\">https:\/\/gist.github.com\/cmilfont\/cb8afa7285b2b38a7d05210fe132b721<\/a><\/p>\n<p>Eu n\u00e3o sou favor\u00e1vel de usar <a href=\"http:\/\/coffeescript.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">outras<\/a> <a href=\"https:\/\/www.typescriptlang.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">linguagens<\/a> para &#8220;transpilar&#8221; para Javascript, apesar de ser simp\u00e1tico com <a href=\"https:\/\/github.com\/clojure\/clojurescript\" target=\"_blank\" rel=\"noopener noreferrer\">ClojureScript<\/a>. Por quest\u00f5es de princ\u00edpios, prefiro aprender e fazer com EcmaScript que tem todos os recursos dessas outras linguagens e me manter o mais pr\u00f3ximo poss\u00edvel da Spec.<\/p>\n<p>Mas um recurso espec\u00edfico eu gosto de usar nos meus projetos, o <a href=\"http:\/\/babeljs.io\/docs\/plugins\/transform-decorators\/\" target=\"_blank\" rel=\"noopener noreferrer\">Decorator<\/a>, que apesar de ter ficado ainda fora da ES7 eu tenho certeza que cedo ou tarde entrar\u00e1 na linguagem e a forma de consumir praticamente ser\u00e1 a mesma que usamos hoje em dia.<\/p>\n<p>C\u00f3digo para ligar o componente React com o Redux:<\/p>\n<p><a href=\"https:\/\/gist.github.com\/cmilfont\/5522f59f8684e6fd8dcd9cbbc1565133\">https:\/\/gist.github.com\/cmilfont\/5522f59f8684e6fd8dcd9cbbc1565133<\/a><\/p>\n<p>Usando Decorator (j\u00e1 que a API permite) melhora a legibilidade:<\/p>\n<p><a href=\"https:\/\/gist.github.com\/cmilfont\/f3e97901bc0fff650317b4d44faa0775\">https:\/\/gist.github.com\/cmilfont\/f3e97901bc0fff650317b4d44faa0775<\/a><\/p>\n<p>Meu\u00a0.babelrc para compilar esse c\u00f3digo.<\/p>\n<p><a href=\"https:\/\/gist.github.com\/cmilfont\/523d03d6bf4f7cfc32d455f8190fd423\">https:\/\/gist.github.com\/cmilfont\/523d03d6bf4f7cfc32d455f8190fd423<\/a><\/p>\n<p>C\u00f3digo transformado para ES7 com Decorator:<\/p>\n<p><a href=\"https:\/\/gist.github.com\/cmilfont\/9d47f37efe39f583db8bfd216634a379\">https:\/\/gist.github.com\/cmilfont\/9d47f37efe39f583db8bfd216634a379<\/a><\/p>\n<p>A Babel \u00e9 ferramenta que permite uma transi\u00e7\u00e3o gradual e &#8220;tranquila&#8221; para o futuro como nunca antes conseguimos, meu maior objetivo \u00e9 criar mecanismos para nos manter atualizados dentro da realidade saud\u00e1vel, porque n\u00e3o temos como refazer todos os projetos sempre a cada mudan\u00e7a de mindset\/tecnologia.<\/p>\n<p>Fico na depend\u00eancia do Babel pra sempre sem problema na consci\u00eancia por essa ferramenta at\u00e9 agora conseguir me ajudar nesse objetivo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;Pra sempre&#8221; em se tratando de Web significa coisa de 1\/2 a 1 d\u00e9cada, e sim, usaremos Babel pra sempre. Nos cursos da Produto Reativo (Modelo de educa\u00e7\u00e3o t\u00e9cnica que venho realizando dentro da sede da Greenmile para a comunidade Cearense) a Babel \u00e9 a pedra filosofal para trazer o futuro pra hoje, um aluno [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/posts\/1866"}],"collection":[{"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/comments?post=1866"}],"version-history":[{"count":0,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/posts\/1866\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/media?parent=1866"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/categories?post=1866"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.milfont.org\/tech\/wp-json\/wp\/v2\/tags?post=1866"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}