{"id":293,"date":"2016-12-14T11:17:19","date_gmt":"2016-12-14T11:17:19","guid":{"rendered":"https:\/\/sidroniolima.com.br\/blog\/?p=293"},"modified":"2016-12-14T11:17:19","modified_gmt":"2016-12-14T11:17:19","slug":"javascript-is-awesome","status":"publish","type":"post","link":"https:\/\/sidroniolima.com.br\/blog\/2016\/12\/14\/javascript-is-awesome\/","title":{"rendered":"Javascript is awesome"},"content":{"rendered":"\n<div class=\"twitter-share\"><a href=\"https:\/\/twitter.com\/intent\/tweet?via=sidroniolima\" class=\"twitter-share-button\">Tweet<\/a><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/netcoders.com.br\/blog\/wp-content\/uploads\/2015\/10\/js3.png\" alt=\"Javascript logo.\" width=\"181\" height=\"181\" \/><\/p>\n<p>I&#8217;m very excited about studying Javascript on the mission of expand my knowledges at front-end. The principal goal is use Javascript at my Java back-end projects.<\/p>\n<p>So, two things I really liked on javascript so far is:<\/p>\n<ol>\n<li>template string;<\/li>\n<li>spread operator.<\/li>\n<\/ol>\n<p>The first concept lets a array be used as params of methods, on a very easy and functional way.<\/p>\n<p>The second one helps on format messages that uses dynamics values, as variables. We can just reference the value inside a string pattern, marked with the ` character.<\/p>\n<p>See the example&#8230;<\/p>\n<p><!--more--><\/p>\n<p>As we follow, in the example below we have a constructor that receives three params but on the View we have just one field. Ok, that is not right, but works for now.<\/p>\n<p><code><span class=\"tag\">&lt;body&gt;<\/span> <\/code><\/p>\n<pre class=\"prettyprint\"><code>    <span class=\"tag\">&lt;label&gt;<\/span><span class=\"pln\">Informa\u00e7\u00f5es do arquivo<\/span><span class=\"tag\">&lt;\/label&gt;<\/span>\r\n    <span class=\"tag\">&lt;input<\/span> <span class=\"atn\">class<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\"dados-arquivo\"<\/span> <span class=\"atn\">placeholder<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\"formato: nome\/tamanho\/tipo\"<\/span><span class=\"tag\">&gt;<\/span>\r\n\r\n    <span class=\"tag\">&lt;button<\/span> <span class=\"atn\">onclick<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\"<\/span><span class=\"pln\">arquivoController<\/span><span class=\"pun\">.<\/span><span class=\"pln\">envia<\/span><span class=\"pun\">()<\/span><span class=\"atv\">\"<\/span>  <span class=\"tag\">&gt;<\/span><span class=\"pln\">Enviar<\/span><span class=\"tag\">&lt;\/button&gt;<\/span>\r\n<span class=\"tag\">&lt;\/body&gt;<\/span>\r\n\r\n<span class=\"kwd\">class<\/span> <span class=\"typ\">Arquivo<\/span> <span class=\"pun\">{<\/span><span class=\"pln\">\r\n\r\n    constructor<\/span><span class=\"pun\">(<\/span><span class=\"pln\">nome<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> tamanho<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> tipo<\/span><span class=\"pun\">)<\/span> <span class=\"pun\">{<\/span>\r\n        <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">_nome <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> nome<\/span><span class=\"pun\">;<\/span>\r\n        <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">_tamanho <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> tamanho<\/span><span class=\"pun\">;<\/span>\r\n        <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">_tipo <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> tipo<\/span><span class=\"pun\">;<\/span>\r\n    <span class=\"pun\">}<\/span>\r\n<span class=\"pun\">}<\/span><\/code><\/pre>\n<p>So we can use the two concepts above to catch a fancy solution, like this:<\/p>\n<pre class=\"prettyprint\"><code><span class=\"pln\">envia<\/span><span class=\"pun\">()<\/span> <span class=\"pun\">{<\/span><span class=\"pln\">\r\n    let dados <\/span><span class=\"pun\">=<\/span> <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">_inputDados<\/span><span class=\"pun\">.<\/span><span class=\"pln\">value<\/span><span class=\"pun\">.<\/span><span class=\"pln\">toUpperCase<\/span><span class=\"pun\">().<\/span><span class=\"pln\">split<\/span><span class=\"pun\">(<\/span><span class=\"str\">'\/'<\/span><span class=\"pun\">);<\/span><span style=\"color: #ff6600;\"><span class=\"pln\">\r\n    let arquivo <\/span><span class=\"pun\">=<\/span> <span class=\"kwd\">new<\/span> <span class=\"typ\">Arquivo<\/span><span class=\"pun\">(...<\/span><span class=\"pln\">dados<\/span><span class=\"pun\">);<\/span> <span class=\"com\">\/\/ the spread operador<\/span><span class=\"pln\">\r\n    console<\/span><span class=\"pun\">.<\/span><span class=\"pln\">log<\/span><span class=\"pun\">(<\/span><span class=\"str\">`Dados do arquivo: ${arquivo.nome}, ${arquivo.tamanho}, ${arquivo.tipo}`<\/span><span class=\"pun\">); \/\/ template string<\/span><\/span>\r\n    <span class=\"kwd\">this<\/span><span class=\"pun\">.<\/span><span class=\"pln\">_limpaFormulario<\/span><span class=\"pun\">();<\/span>\r\n<span class=\"pun\">}<\/span><\/code><\/pre>\n<p>We still can encapsulate the solution in a helper class, of builder pattern, that generates a static method that returns the model:<\/p>\n<p><code><span class=\"typ\">ArquivoHelper<\/span> <span class=\"pun\">{<\/span> <\/code><\/p>\n<pre class=\"prettyprint\"><code>    <span class=\"kwd\">static<\/span><span class=\"pln\"> cria<\/span><span class=\"pun\">(<\/span><span class=\"pln\">informacao<\/span><span class=\"pun\">)<\/span> <span class=\"pun\">{<\/span>\r\n        <span class=\"kwd\">return<\/span> <span class=\"kwd\">new<\/span> <span class=\"typ\">Arquivo<\/span><span class=\"pun\">(...<\/span><span class=\"pln\">informacao<\/span><span class=\"pun\">.<\/span><span class=\"pln\">toUpperCase<\/span><span class=\"pun\">().<\/span><span class=\"pln\">split<\/span><span class=\"pun\">(<\/span><span class=\"str\">'\/'<\/span><span class=\"pun\">));<\/span>\r\n    <span class=\"pun\">}<\/span>\r\n<span class=\"pun\">}<\/span><\/code><\/pre>\n<p class=\"prettyprint\">So, let me move on to the next chapter. So long, fair well.<\/p>\n\n<div class=\"twitter-share\"><a href=\"https:\/\/twitter.com\/intent\/tweet?via=sidroniolima\" class=\"twitter-share-button\">Tweet<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;m very excited about studying Javascript on the mission of expand my knowledges at front-end. The principal goal is use Javascript at my Java back-end projects. So, two things I really liked on javascript so far is: template string; spread operator. The first concept lets a array be used as params of methods, on a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[53,52],"tags":[54,56,55],"class_list":["post-293","post","type-post","status-publish","format-standard","hentry","category-front-end","category-javascript","tag-front-end","tag-spread-operator","tag-tempalte-string"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/sidroniolima.com.br\/blog\/wp-json\/wp\/v2\/posts\/293","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sidroniolima.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sidroniolima.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sidroniolima.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sidroniolima.com.br\/blog\/wp-json\/wp\/v2\/comments?post=293"}],"version-history":[{"count":7,"href":"https:\/\/sidroniolima.com.br\/blog\/wp-json\/wp\/v2\/posts\/293\/revisions"}],"predecessor-version":[{"id":301,"href":"https:\/\/sidroniolima.com.br\/blog\/wp-json\/wp\/v2\/posts\/293\/revisions\/301"}],"wp:attachment":[{"href":"https:\/\/sidroniolima.com.br\/blog\/wp-json\/wp\/v2\/media?parent=293"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sidroniolima.com.br\/blog\/wp-json\/wp\/v2\/categories?post=293"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sidroniolima.com.br\/blog\/wp-json\/wp\/v2\/tags?post=293"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}