<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Marco Bruno 🤡</title>
    <description>The latest articles on DEV Community by Marco Bruno 🤡 (@marcobrunodev).</description>
    <link>https://dev.to/marcobrunodev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F173104%2Fb22e6060-52af-4c85-89cb-47d487832bd2.jpg</url>
      <title>DEV Community: Marco Bruno 🤡</title>
      <link>https://dev.to/marcobrunodev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/marcobrunodev"/>
    <language>en</language>
    <item>
      <title>Métodos HTTP da visão de FrontEnd</title>
      <dc:creator>Marco Bruno 🤡</dc:creator>
      <pubDate>Thu, 07 Apr 2022 12:47:01 +0000</pubDate>
      <link>https://dev.to/collabcode/metodos-http-da-visao-de-frontend-56h4</link>
      <guid>https://dev.to/collabcode/metodos-http-da-visao-de-frontend-56h4</guid>
      <description>&lt;p&gt;Nesse post vou apresentar os métodos HTTP do ponto de vista de pessoas que trabalham com &lt;em&gt;FrontEnd&lt;/em&gt; utilizando o &lt;strong&gt;Fetch API&lt;/strong&gt; do &lt;strong&gt;JavaScript&lt;/strong&gt; para consumir uma &lt;em&gt;API&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  ➡️ Introdução
&lt;/h2&gt;

&lt;p&gt;Imagine que você precisa criar uma apliacação com 4 funcionalidades, de criar, ler, atualizar e deletar os dados de um usuário. Essas 4 funcionalidades também são conhecidas como &lt;em&gt;CRUD&lt;/em&gt; (&lt;em&gt;Create&lt;/em&gt;, &lt;em&gt;Read&lt;/em&gt;, &lt;em&gt;Update&lt;/em&gt; e &lt;em&gt;Delete&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;Esse é um exemplo de como é a estrutura do nosso usuário na aplicação:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;marco@gmail.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;nickname&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;marcobrunodev&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;streamer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Felizmente você tem uma &lt;em&gt;API&lt;/em&gt; (&lt;em&gt;Application Programming Interface&lt;/em&gt;) e poderá enviar os dados do usuário para a rota (recurso) a seguir: &lt;code&gt;/user&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Outra coisa feliz é que você tem 5 métodos HTTP que estão disponíveis nessa rota &lt;code&gt;/user&lt;/code&gt;, sendo eles:&lt;/p&gt;

&lt;p&gt;1️⃣ &lt;em&gt;Get&lt;/em&gt; (Consumir/Pegar)&lt;br&gt;
2️⃣ &lt;em&gt;Post&lt;/em&gt; (Publicar/enviar)&lt;br&gt;
3️⃣ &lt;em&gt;Put&lt;/em&gt; (Colocar/guardar)&lt;br&gt;
4️⃣ &lt;em&gt;Patch&lt;/em&gt; (Correção/remendo)&lt;br&gt;
5️⃣ &lt;em&gt;Delete&lt;/em&gt; (Deletar/remover)&lt;/p&gt;

&lt;p&gt;Pra que servem esses métodos? 🤨&lt;/p&gt;


&lt;h2&gt;
  
  
  1️⃣ &lt;em&gt;Get&lt;/em&gt; (Consumir/Pegar)
&lt;/h2&gt;

&lt;p&gt;No momento que você consumir a &lt;em&gt;API&lt;/em&gt; na rota &lt;code&gt;/user&lt;/code&gt; utilizando o método &lt;em&gt;Get&lt;/em&gt; ela retornará para você a lista de usuários cadastrados na plataforma, portanto esse método é utilizando para leitura dos dados.&lt;/p&gt;

&lt;p&gt;A seguir um exemplo de como consumir a &lt;em&gt;API&lt;/em&gt; utilizando o &lt;strong&gt;Fetch API&lt;/strong&gt; com &lt;strong&gt;JavaScript&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`https://marcobruno.dev/user`&lt;/span&gt;&lt;span class="p"&gt;,)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;User&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se você precisar apenas dos dados de um usuário, é necessário passar um UUID (Universally unique identifier) na rota &lt;code&gt;/user/{uuid}&lt;/code&gt;, mas o método utilizado continua sendo o &lt;em&gt;Get&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;A seguir um exemplo de como você pode usar o &lt;em&gt;Fetch API&lt;/em&gt; do &lt;em&gt;JavaScript&lt;/em&gt; para consumir uma &lt;em&gt;API&lt;/em&gt; passando o &lt;em&gt;UUID&lt;/em&gt; na rota:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;uuid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dhyu87jk25pd9ol27d9nbvpl97yhdghwedm0&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`https://marcobruno.dev/user/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;uuid&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;User&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Podemos ver que o &lt;em&gt;Get&lt;/em&gt; é utilizado para leitura dos dados em diferentes situações!&lt;/p&gt;




&lt;h2&gt;
  
  
  2️⃣ &lt;em&gt;Post&lt;/em&gt; (Publicar/enviar)
&lt;/h2&gt;

&lt;p&gt;O método &lt;em&gt;Post&lt;/em&gt; utilizamos quando precisamos salvar um novo usuário na aplicação, portanto é necessário passar todos os dados do usuário no &lt;em&gt;body&lt;/em&gt; (corpo) da requisição para a rota &lt;code&gt;/user&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Esse é um exemplo de código de como salvar um dado em uma &lt;em&gt;API&lt;/em&gt; utilizando a &lt;em&gt;Fetch API&lt;/em&gt; com o método &lt;em&gt;Post&lt;/em&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;uuid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dhyu87jk25pd9ol27d9nbvpl97yhdghwedm0&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;marco@gmail.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;nickname&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;marcobrunodev&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;streamer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`https://marcobruno.dev/user/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;uuid&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,{&lt;/span&gt;
  &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json; charset=UFT-8&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;User&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Toda vez que precisar salvar algo utilizando uma &lt;em&gt;API&lt;/em&gt; o correto é utilizar o método &lt;em&gt;Post&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  3️⃣ &lt;em&gt;Put&lt;/em&gt; (Colocar/guardar)
&lt;/h2&gt;

&lt;p&gt;Se precisamos atualizar os dados de um usuário utilizamos o método &lt;em&gt;Put&lt;/em&gt; e precisamos enviar todos os dados dele no body da requisição e o *️⃣ &lt;em&gt;UUID&lt;/em&gt; (&lt;em&gt;Universally unique identifier&lt;/em&gt;) é algo que não pode faltar.&lt;/p&gt;

&lt;p&gt;A seguir um exemplo de como usar o método &lt;em&gt;Put&lt;/em&gt; passando o &lt;em&gt;UUID&lt;/em&gt; no &lt;em&gt;body&lt;/em&gt; da requisição com &lt;em&gt;Fetch API&lt;/em&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;uuid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dhyu87jk25pd9ol27d9nbvpl97yhdghwedm0&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;uuid&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;new_email_marco@gmail.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;nickname&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;marcobrunodev&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;streamer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`https://marcobruno.dev/user`&lt;/span&gt;&lt;span class="p"&gt;,{&lt;/span&gt;
  &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;PUT&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json; charset=UFT-8&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;User&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mesmo que você esteja atualizando apenas 1 campo de 3 campos que o usuário possui, ainda sim é necessário enviar todos os campos no &lt;em&gt;body&lt;/em&gt; da requisição, gostando ou não esse é um padrão adotado quando estamos usando o método &lt;em&gt;Put&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Agora um exemplo de como fica o código quando você está passando o &lt;em&gt;UUID&lt;/em&gt; na rota da requisição utilizando o método &lt;em&gt;Put&lt;/em&gt; com &lt;em&gt;Fetch API&lt;/em&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;uuid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dhyu87jk25pd9ol27d9nbvpl97yhdghwedm0&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;new_email_marco@gmail.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;nickname&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;marcobrunodev&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;streamer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`https://marcobruno.dev/user/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;uuid&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,{&lt;/span&gt;
  &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;PUT&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json; charset=UFT-8&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;User&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Podemos concluir que utilizamos o método &lt;em&gt;Put&lt;/em&gt; para atualizar dados de um recurso que no nosso exemplo foi o do usuário de aplicação.&lt;/p&gt;




&lt;h2&gt;
  
  
  4️⃣ &lt;em&gt;Patch&lt;/em&gt; (Correção/remendo)
&lt;/h2&gt;

&lt;p&gt;Esse método também utilizamos para atualizar o usuário, portanto segue as mesmas regras do método &lt;em&gt;Put&lt;/em&gt;, a diferença é que não precisamos passar todos os campos no &lt;em&gt;body&lt;/em&gt; da requisição.&lt;/p&gt;

&lt;p&gt;Usando o &lt;em&gt;Patch&lt;/em&gt; podemos informar apenas o campo que estamos atualizando e o &lt;em&gt;UUID&lt;/em&gt; para informar qual usuário tem que ser atualizado, como podemos ver no exemplo a seguir:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;uuid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dhyu87jk25pd9ol27d9nbvpl97yhdghwedm0&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;uuid&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;new_email_marco@gmail.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`https://marcobruno.dev/user/`&lt;/span&gt;&lt;span class="p"&gt;,{&lt;/span&gt;
  &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;PATCH&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json; charset=UFT-8&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;User&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se você estava triste com o método &lt;em&gt;Put&lt;/em&gt; agora ficou feliz com o método &lt;em&gt;Patch&lt;/em&gt;. A pergunta de você se deve fazer é: Porque existe o &lt;em&gt;Put&lt;/em&gt; se o &lt;em&gt;Patch&lt;/em&gt; parece mais simples de usar?&lt;/p&gt;

&lt;p&gt;Detalhe essa perguntar não vou responder, deixe nos comentários a sua resposta!&lt;/p&gt;




&lt;h2&gt;
  
  
  5️⃣ &lt;em&gt;Delete&lt;/em&gt; (Deletar/remover)
&lt;/h2&gt;

&lt;p&gt;Quando precisamos remover um usuário da aplicação utilizamos o metódo &lt;em&gt;Delete&lt;/em&gt; e precisamos informar o &lt;em&gt;UUID&lt;/em&gt; na rota: &lt;code&gt;/user/{uuid}&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;uuid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dhyu87jk25pd9ol27d9nbvpl97yhdghwedm0&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`https://marcobruno.dev/user/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;uuid&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,{&lt;/span&gt;
  &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;DELETE&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;User&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  *️⃣ UUID (Universally unique identifier - Identificador universalmente único)
&lt;/h2&gt;

&lt;p&gt;O padrão é ser uma string alfanumérica de 36 caracteres que pode ser usada para identificar informações.&lt;/p&gt;




&lt;h3&gt;
  
  
  ‼️IMPORTANTE‼️
&lt;/h3&gt;

&lt;p&gt;Existem mais outros 4 métodos &lt;em&gt;HTTP&lt;/em&gt; que utilizamos menos no nosso dia a dia, mas que vale você estudar também 😍&lt;/p&gt;

&lt;p&gt;➡️ &lt;em&gt;Head&lt;/em&gt;&lt;br&gt;
➡️ &lt;em&gt;Connect&lt;/em&gt;&lt;br&gt;
➡️ &lt;em&gt;Options&lt;/em&gt;&lt;br&gt;
➡️ &lt;em&gt;Trace&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Links para saber mais!
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods"&gt;Métodos HTTP - MDN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://gabsferreira.com/os-metodos-http-e-a-diferenca-entre-eles/"&gt;Os métodos HTTP: quais são e pra que servem - Gabs Ferreira&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>http</category>
      <category>frontend</category>
      <category>javascript</category>
      <category>fetch</category>
    </item>
    <item>
      <title>Pré-requisitos do curso de HTML e CSS feliz #00 #02</title>
      <dc:creator>Marco Bruno 🤡</dc:creator>
      <pubDate>Thu, 27 May 2021 14:13:20 +0000</pubDate>
      <link>https://dev.to/marcobrunodev/pre-requisitos-do-curso-de-html-e-css-feliz-00-02-1cd4</link>
      <guid>https://dev.to/marcobrunodev/pre-requisitos-do-curso-de-html-e-css-feliz-00-02-1cd4</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Vq893ppKmbY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Para acompanhar o &lt;strong&gt;curso de HTML e CSS feliz&lt;/strong&gt; você precisará de 4 ferramentas. Todas elas são gratuitas e funcionam nos três sistemas operacionais mais usados no mercado de trabalho: o Windows, Linux e MacOS.&lt;/p&gt;

&lt;p&gt;As ferramentas são:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Firefox;&lt;/li&gt;
&lt;li&gt;Visual Studio Code;&lt;/li&gt;
&lt;li&gt;Figma;&lt;/li&gt;
&lt;li&gt;Discord.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Firefox
&lt;/h2&gt;

&lt;p&gt;O Firefox é um navegador, assim como o Chrome, Edge, Safari, Brave, Opera e outros, e a Mozilla é a empresa por trás dele. Pessoalmente gosto mais de trabalhar no Firefox, por ser um navegador completo e muito mais leve que o famoso Chrome.&lt;/p&gt;

&lt;p&gt;Durante o curso usaremos muito a ferramenta chamada &lt;em&gt;Developer Tools&lt;/em&gt; (ferramentas de desenvolvimento). Em cada navegador existem particularidades e, como usarei o Firefox, sugiro que use o mesmo, pois isso facilitará o acompanhamento das aulas.&lt;/p&gt;

&lt;p&gt;Caso não tenha o Firefox instalado, segue o link para instalação: &lt;a href="https://www.mozilla.org/pt-BR/firefox/all"&gt;https://www.mozilla.org/pt-BR/firefox/all&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Visual Studio Code
&lt;/h2&gt;

&lt;p&gt;O &lt;strong&gt;Visual Studio Code&lt;/strong&gt; foi criado pela Microsoft e o chamamos carinhosamente de VSCode (é possível que você já tenha escutado esse nome navegando em assuntos dev). O VSCode é um editor de texto que, diferente do Word e Notepad, é focado para desenvolvedores(as) escreverem seus códigos.&lt;/p&gt;

&lt;p&gt;Ele possui muitos recursos e durante o curso explicarei alguns deles.&lt;/p&gt;

&lt;p&gt;Ah! E CUIDADO!!! O &lt;strong&gt;Visual Studio Code&lt;/strong&gt; é diferente do Visual Studio. O que você precisa instalar é o &lt;strong&gt;VSCode&lt;/strong&gt;. Segue o link para instalação: &lt;a href="https://code.visualstudio.com"&gt;https://code.visualstudio.com&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Figma
&lt;/h2&gt;

&lt;p&gt;Para acessar e/ou editar o layout do projeto do curso você precisará usar uma ferramenta chamada Figma. Como o curso não é focado em design ou no planejamento do layout, não aprofundarei sobre a mesma.&lt;/p&gt;

&lt;p&gt;Nosso foco, neste curso, é pegar o layout que foi planejado e criá-lo em código &lt;strong&gt;HTML&lt;/strong&gt; e &lt;strong&gt;CSS&lt;/strong&gt;, mas para isso precisamos conhecer o básico dessa ferramenta feliz (muito usada pelas pessoas que trabalham com UI e Design).&lt;/p&gt;

&lt;p&gt;Se você é como eu e já quer sair fuçando tudo, deixo aqui um vídeo onde mostro detalhes interessantes sobre o Figma, para quem está começando e quer saber mais sobre como usá-la (mas ó, não esquece de terminar o post, ok? Tenho mais informações importantes para compartilhar :))&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/qoE-2YFeW-Q"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Abaixo deixo dois links para você: no primeiro você consegue acessar o layout do projeto do curso no Figma (mas sem poder alterá-lo) e no segundo você terá acesso ao arquivo &lt;code&gt;Curso_de_HTML_e_CSS_feliz.fig&lt;/code&gt; para baixar, colocar na sua conta e poder alterar tudo do seu jeito!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.figma.com/file/GPuzBdwU29g86aSvHm3LXe/Curso-de-HTML-e-CSS-feliz-link-YouTube?node-id=0%3A1"&gt;https://www.figma.com/file/GPuzBdwU29g86aSvHm3LXe/Curso-de-HTML-e-CSS-feliz-link-YouTube?node-id=0%3A1&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://cdn.discordapp.com/attachments/784010824078458881/784013004869599262/Curso_de_HTML_e_CSS_feliz.fig"&gt;https://cdn.discordapp.com/attachments/784010824078458881/784013004869599262/Curso_de_HTML_e_CSS_feliz.fig&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;E, por último, mas não menos importante, temos o Discord.&lt;/p&gt;

&lt;h2&gt;
  
  
  Discord
&lt;/h2&gt;

&lt;p&gt;Uma ferramenta para trocar mensagens por texto, áudio e vídeo. Nela temos uma comunidade onde você pode tirar suas dúvidas, comigo ou com outras pessoas da comunidade (que já fizeram ou estão fazendo o curso ou estão lá para trocar conhecimento e ajudar outros devs a serem mais felizes, rs).&lt;/p&gt;

&lt;p&gt;A funcionalidade mais feliz no &lt;strong&gt;Discord&lt;/strong&gt; é o compartilhamento de tela nas salas de áudio, onde você consegue mostrar qual exatamente é o problema que esta enfrentando no código. Lá você pode pedir ajuda, tirar dúvidas e, quando estiver pronto, ajudar outras pessoas também. Uma das coisas mais incríveis na comunidade dev é essa: tem muita informação, muita troca e sempre vai ter gente disposta a ajudar e contribuir na sua jornada.&lt;/p&gt;

&lt;p&gt;Nosso servidor no Discord possui salas de dúvidas e cada uma tem um tema central. Fizemos isso para deixar a comunicação mais clara e feliz. Para entrar nessa comunidade bonita, com mais de 8 mil devs chavosos, "é só correr para o abraço": &lt;a href="https://discord.gg/FP5UaAG"&gt;https://discord.gg/FP5UaAG&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Nosso acordo feliz
&lt;/h2&gt;

&lt;p&gt;Todo o curso e informações que compartilho são de graça. A única coisa que peço é, assim que tiver a oportunidade, ajude outras pessoas. &lt;br&gt;
Se você começou a estudar agora, não se sinta pressionado a ajudar - apenas foque em aprender!!! - mas quando estiver pronto, contribua como puder para a comunidade :)&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Curso de HTML e CSS feliz (Projeto Portfólio) #00 #01</title>
      <dc:creator>Marco Bruno 🤡</dc:creator>
      <pubDate>Wed, 26 May 2021 15:00:43 +0000</pubDate>
      <link>https://dev.to/marcobrunodev/curso-de-html-e-css-feliz-projeto-portfolio-00-00-129l</link>
      <guid>https://dev.to/marcobrunodev/curso-de-html-e-css-feliz-projeto-portfolio-00-00-129l</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/CZPa3-1BKnY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Vem cá e bora conhecer o projeto no qual trabalharemos durante todo o Curso de &lt;strong&gt;HTML&lt;/strong&gt; e &lt;strong&gt;CSS&lt;/strong&gt; feliz. Estudar sem praticar é chato, né?! E é praticando que a gente fixa nosso conhecimento teórico, por isso todo curso que elaboro tem um projeto para direcionar os estudos, assim todo mundo pode "por a mão na massa".&lt;/p&gt;

&lt;p&gt;No Curso de HTML e CSS feliz criaremos um portfólio juntos, passo a passo. Eu farei o meu durante as aulas e convido você a mudar as cores e outros elementos relacionadas ao layout (para você ter seu projeto com a sua elegância e &lt;em&gt;chavosidade&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;A parte de design e planejamento do layout não é o foco do curso, e para facilitar o desenvolvimento do projeto darei acesso ao layout que fiz com carinho, tudo &lt;em&gt;procê&lt;/em&gt;! Os links para acesso estão no final do post, mas antes de ir lá correndo, CALMA! Leia todo o conteúdo, porque tenho informações importantes para passar (ou não, rs 😜).&lt;/p&gt;

&lt;h2&gt;
  
  
  Sobre o layout e as aulas
&lt;/h2&gt;

&lt;p&gt;O layout tem 7 seções e faremos todas elas com calma, para aprendermos juntos &lt;strong&gt;HTML&lt;/strong&gt; e &lt;strong&gt;CSS&lt;/strong&gt; de forma feliz. Se você quer &lt;em&gt;"aprender"&lt;/em&gt; rápido e/ou acha que trabalhar com programação é algo fácil, tenho uma notícia triste: não é fácil e não existem atalhos! Minha dica de "ouro" é: vai, mas vai com calma e se dedique.&lt;/p&gt;

&lt;p&gt;Pronto! Agora estou mais leve por mandar a real 😍&lt;/p&gt;

&lt;p&gt;Ainda está comigo? Ótimo! Sinal de que realmente quer aprender, então vamos lá, se liga no layout que você fará no final do curso, com as seções: Cabeçalho, Banner, Skills, Projetos, Sobre, Contatos e Rodapé.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy1alnwk7ktrbm6s9cknj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy1alnwk7ktrbm6s9cknj.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bonito, né?! &lt;/p&gt;

&lt;h2&gt;
  
  
  Acesso ao layout no Figma
&lt;/h2&gt;

&lt;p&gt;A seguir você encontrará dois links: no primeiro você acessa o layout no Figma (mas sem poder alterá-lo) e no segundo você terá acesso ao arquivo &lt;code&gt;Curso_de_HTML_e_CSS_feliz.fig&lt;/code&gt; para baixar, colocar no seu Figma e poder alterar tudo do seu jeito!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.figma.com/file/GPuzBdwU29g86aSvHm3LXe/Curso-de-HTML-e-CSS-feliz-link-YouTube?node-id=0%3A1" rel="noopener noreferrer"&gt;https://www.figma.com/file/GPuzBdwU29g86aSvHm3LXe/Curso-de-HTML-e-CSS-feliz-link-YouTube?node-id=0%3A1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cdn.discordapp.com/attachments/784010824078458881/784013004869599262/Curso_de_HTML_e_CSS_feliz.fig" rel="noopener noreferrer"&gt;https://cdn.discordapp.com/attachments/784010824078458881/784013004869599262/Curso_de_HTML_e_CSS_feliz.fig&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Se você não sabe como pegar o arquivo do &lt;code&gt;Curso_de_HTML_e_CSS_feliz.fig&lt;/code&gt; e colocar no Figma, fica tranquilo(a), pois mostrarei isso no curso mais pra frente!&lt;/p&gt;

&lt;h2&gt;
  
  
  Onde tirar suas dúvidas
&lt;/h2&gt;

&lt;p&gt;Primeiro, boas vindas ao Curso de HTML e CSS Feliz, se você tiver qualquer dúvida, tanto sobre o projeto, quanto sobre programação, entra lá no Discord que a gente dá todo o suporte que puder dar. Nossa comunidade dev já conta mais de 8 mil pessoas felizes, se apoiando e compartilhando conhecimento: &lt;a href="https://discord.gg/FP5UaAG" rel="noopener noreferrer"&gt;https://discord.gg/FP5UaAG&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Dicas aleatórias de Docker e terminal que aprendi com a comunidade</title>
      <dc:creator>Marco Bruno 🤡</dc:creator>
      <pubDate>Sat, 29 Feb 2020 14:52:58 +0000</pubDate>
      <link>https://dev.to/marcobrunodev/dicas-aleatorias-de-docker-que-aprendi-com-a-comunidade-51ie</link>
      <guid>https://dev.to/marcobrunodev/dicas-aleatorias-de-docker-que-aprendi-com-a-comunidade-51ie</guid>
      <description>&lt;p&gt;Desculpa, talvez esse não seja o post que você gostaria ou deveria ler sobre docker, ele foi criado enquanto eu fazia uma live pela &lt;a href="http://twitch.tv/collabdode"&gt;twitch.tv/collabdode&lt;/a&gt; onde trocamos conhecimento sobre a querida baleia. O resultado é esse aí!&lt;/p&gt;

&lt;p&gt;Para buildar uma imagem que você criou usando o Dockerfile, ensinado pelo st0rmrid3r (pesssoa feliz da twitch):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker build &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-t&lt;/span&gt; nome-da-imagem
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;O &lt;code&gt;.&lt;/code&gt; é o caminho do arquivo &lt;code&gt;Dockerfile&lt;/code&gt;, quando você usa só ponto você está dizendo que já está dentro da pasta onde está o arquivo &lt;code&gt;Dockerfile&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;O nome-da-image aparecerá quando você rodar o comando &lt;code&gt;docker images -a&lt;/code&gt;, aí fica mais fácil para saber do se trata as imagens que você tem.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para subir (rodar) uma imagem:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; nome-da-imagem
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;É bem comum usarmos o &lt;code&gt;-d&lt;/code&gt; para não deixar o terminal travado.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para remover as layers (containers) intermediárias que não estão sendo mais usadas, comando ensinado pelo raizenNNTV (pessoa do rolê de docker da twitch):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker rmi &lt;span class="si"&gt;$(&lt;/span&gt;docker images &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="nv"&gt;dangling&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Quando você quer entrar dentro de um container que já está buildado para verificar se tudo que fez está funcionando de forma feliz, dica do felipef0ntana (mano no chat da twitch) deu meio errado mas o davidfaria89 mandou a real:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="nt"&gt;-t&lt;/span&gt; nome-do-container bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Quando você quer parar todos os containers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker stop &lt;span class="si"&gt;$(&lt;/span&gt;docker ps &lt;span class="nt"&gt;-a&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Quando você quer deletar todos os containers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;docker ps &lt;span class="nt"&gt;-a&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;É bem comum você querer parar e deletar todos os containers, então você pode rodar tudo em uma linha só, dica do davidfaria89 (chegou atrasado mas já mandou a dica na twitch):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker stop &lt;span class="si"&gt;$(&lt;/span&gt;docker ps &lt;span class="nt"&gt;-a&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; docker &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;docker ps &lt;span class="nt"&gt;-a&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Quando você quer deletar todas as imagens:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker rmi &lt;span class="si"&gt;$(&lt;/span&gt;docker images &lt;span class="nt"&gt;-a&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para expor uma porta do container no momento que você for subir (rodar) ele, dica do st0rmrid3r:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nb"&gt;.&lt;/span&gt; nome-da-imagem &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A porta 8080 é a da sua máquina e a 3000 do container.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para expor uma porta pelo arquivo Dockerfile:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;EXPOSE &lt;/span&gt;&lt;span class="m"&gt;3000&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se você precisar expor mais de uma porta de um container pelo arquivo Dockerfile, dica do davidfaria89:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;EXPOSE 80 &lt;/span&gt;&lt;span class="m"&gt;443&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se você precisa expor uma porta do container, mas não usar o mesmo número de porta na sua márquina, você não consegue fazer isso usando o Dockerfile. Por exemplo, você tem uma app com React rodando dentro de um container na porta 3000, mas você quer que ela rode na porta 8080 da sua máquina, você precisa adicionar no &lt;code&gt;service&lt;/code&gt; do seu app React a configuração a seguir (arquivo &lt;code&gt;docker-compose.yaml&lt;/code&gt;), dica do pwng (pessoa feliz que colou na twitch):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;...&lt;/span&gt;
&lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;8080:3000"&lt;/span&gt;
&lt;span class="nn"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dica topezera do raizenNNTV, criar um &lt;code&gt;.dockerignore&lt;/code&gt; e adiciona nele o &lt;code&gt;node_modules&lt;/code&gt; para o copy (copiar) do projeto ficar mais rápido e feliz.&lt;/p&gt;

&lt;p&gt;"Lugar no node_modules é no lixo mesmo xd" - palavras do raizenNNTV&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;node_modules&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O pwng pessoa colante na twitch, mandou essa dica. Quando for rodar o &lt;code&gt;npm i&lt;/code&gt; dentro do &lt;code&gt;Dockerfile&lt;/code&gt; e o foco for o ambiente de produção, não esquece de adicionar o &lt;code&gt;--production&lt;/code&gt; para não instalar os pacotes do ambiente de desenvolvimento:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;...&lt;/span&gt;
&lt;span class="s"&gt;RUN npm i --production&lt;/span&gt;
&lt;span class="nn"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O raizen não para. Se você não gosta de ver um monte de info do &lt;code&gt;npm i&lt;/code&gt; quando vai fazer o build da imagem, adiciona o &lt;code&gt;--silent&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;...&lt;/span&gt;
&lt;span class="s"&gt;npm i --silent&lt;/span&gt;
&lt;span class="nn"&gt;...&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mais uma do pwng. Quando você subir (rodar) o container, poderá dar um nome para ele, isso te ajudará futuro:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;--name&lt;/span&gt; frontend nome-da-imagem
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Eita! Outra do pwng. Toda vez que estiver com uma dúvida sobre como foi o andamento do container, você poderá ver o log dele:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker logs nome-do-container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;É mano o pwng não para mesmo. Se você quer ver o log em real time:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker logs &lt;span class="nt"&gt;-f&lt;/span&gt; nome-do-container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Subir os containers pelo &lt;code&gt;docker-compose&lt;/code&gt; sem travar o terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker-compose up &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para desligar dar um stop nos containers que você subiu com o &lt;code&gt;docker-compose&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker-compose down
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para fazer o build novamente dos &lt;em&gt;services&lt;/em&gt;, dado que você você tem o build deles:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker-compose build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para forçar o build dos services no momento que você for dar o &lt;code&gt;up&lt;/code&gt; no &lt;code&gt;docker-compose&lt;/code&gt;, deixarei o &lt;code&gt;-d&lt;/code&gt; porque ele é feliz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker-compose up &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--build&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Quando você precisa saber se tem algo rodando em uma porta TCP:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lsof &lt;span class="nt"&gt;-i&lt;/span&gt; TCP:3002
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>docker</category>
    </item>
    <item>
      <title>Arrow function do JavaScript, feliz e simples?</title>
      <dc:creator>Marco Bruno 🤡</dc:creator>
      <pubDate>Thu, 20 Feb 2020 17:18:04 +0000</pubDate>
      <link>https://dev.to/collabcode/arrow-function-e-feliz-e-simples-4gjo</link>
      <guid>https://dev.to/collabcode/arrow-function-e-feliz-e-simples-4gjo</guid>
      <description>&lt;p&gt;Quando vi a primeira vez a &lt;em&gt;arrow function&lt;/em&gt; não fiquei muito feliz, principamente porque eu achava ela muito mais complicada de ler, quero te mostrar que o Marco do passado estava errado e que você pode ser muito feliz com a &lt;em&gt;arrow function&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/3EkS9-P3cIM"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Ah! Estou considerando que você já sabe o que é uma &lt;em&gt;function expression&lt;/em&gt;. Se não sabe, recomendo você dar uma lida sobre ela na MDN (Mozilla Developer Network): &lt;a href="http://bit.ly/function-expression"&gt;Function Expression na MDN&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Como funciona a Arrow function?
&lt;/h1&gt;

&lt;p&gt;A &lt;strong&gt;arrow function&lt;/strong&gt; tem uma forma mais simples de escrita do que a &lt;em&gt;function expression&lt;/em&gt;, por exemplo, se pegarmos a função a seguir que está com &lt;em&gt;function expression&lt;/em&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;number1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;number2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;number1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;number2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// saída: 4&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E transformar ela em uma &lt;strong&gt;arrow function&lt;/strong&gt;, fica assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;number1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;number2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;number1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;number2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// saída: 4&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O que conseguimos aprender observando os dois códigos, anteriores? Que a &lt;em&gt;arrow function&lt;/em&gt; é por padrão uma função anônima, mas conseguimos definir um nome para ela, usando a &lt;code&gt;const sum&lt;/code&gt; que recebeu a nossa &lt;em&gt;arrow function&lt;/em&gt;. Isso é realmente importante, você não consegue definir um nome para uma &lt;em&gt;arrow function&lt;/em&gt; como fazemos na &lt;em&gt;function expression&lt;/em&gt;, onde informamos o nome da função usando &lt;code&gt;sum&lt;/code&gt; antes dos parênteses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Não tente isso, não funciona!!! Arrow functions são anônimas&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;number1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;number2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;number1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;number2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;

&lt;span class="cm"&gt;/* Erro que você receberá:
SyntaxError: invalid arrow-function arguments (parentheses around the arrow-function may help)
*/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Outras variações da Arrow Function
&lt;/h1&gt;

&lt;p&gt;A sintaxe que acabamos de ver da &lt;em&gt;arrow function&lt;/em&gt; (a que funciona 😉), não é a única forma de usar ela, vamos ver outras variações a seguir. &lt;/p&gt;

&lt;h2&gt;
  
  
  Sem return mas retorna
&lt;/h2&gt;

&lt;p&gt;Mesmo sem usar &lt;code&gt;return&lt;/code&gt; dentro de uma &lt;em&gt;arrow function&lt;/em&gt; conseguimos retorna a soma, para isso nós precisaremos retirar as duas chaves e &lt;code&gt;return&lt;/code&gt; da nossa &lt;em&gt;arrow function&lt;/em&gt;, deixando o código assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;number1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;number2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;number1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;number2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// saída: 4&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;É mais simples! Mas será que é mais legível? Para mim não foi no começo, mas agora que já me acostumei com a &lt;em&gt;arrow function&lt;/em&gt; está realmente simples e feliz.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sem parâmetros
&lt;/h2&gt;

&lt;p&gt;Quando você não tem parâmetro na &lt;em&gt;arrow function&lt;/em&gt; os parênteses permanecem:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;CollabCode&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se você quer dar um nome para uma &lt;em&gt;arrow function&lt;/em&gt; é só criar a &lt;code&gt;const&lt;/code&gt; como fizemos anteriormente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;comunidade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;CollabCode&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Só um parâmetro
&lt;/h2&gt;

&lt;p&gt;Quando você tem apenas um parâmetro os parênteses se tornam opcionais:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;double&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;number&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;number&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se você gosta muito dos parênteses não tem problema pode usar eles também:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;double&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;number&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Dois ou mais parâmetros
&lt;/h2&gt;

&lt;p&gt;Quando temos dois ou mais parâmetros em uma &lt;em&gt;arrow function&lt;/em&gt; o uso dos parênteses se tornam obrigatório:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;number1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;number2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;number1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;number2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// saída: 40&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Arrow function com chaves
&lt;/h2&gt;

&lt;p&gt;Toda vez que você usa as chaves em uma &lt;em&gt;arrow function&lt;/em&gt; ela perde o poder de retornar algo sem a necessidade de escrever &lt;code&gt;return&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;number1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;number2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;number1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;number2&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// saída: undefined&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Então, caso você tenha que usar as chaves na &lt;em&gt;arrow function&lt;/em&gt; e também retornar algo, é necessário usar &lt;code&gt;return&lt;/code&gt;, como no código a seguir:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;number1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;number2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;number1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;number2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// saída: 40&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Retornando um JSON sem return
&lt;/h2&gt;

&lt;p&gt;Quando você quer retornar um &lt;em&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON"&gt;JSON (JavaScript Object Notation)&lt;/a&gt;&lt;/em&gt; mas sem usar &lt;code&gt;return&lt;/code&gt; é necessário você envolver o JSON por parênteses:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;getPessoa&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Gabe&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;eye&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;blue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;getPessoa&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt; &lt;span class="c1"&gt;// saída: Object { name: "Gabe", eye: "blue" }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  IIFE com arrow function
&lt;/h2&gt;

&lt;p&gt;Quando queremos fechar o escopo de um arquivo, em alguns casos usamos uma função anônima que ela mesmo se executa apenas uma vez, chamamos isso de IIFE (Immediately-invoked function expression). Com a &lt;em&gt;function expression&lt;/em&gt; podemos criar a IIFE de duas maneiras:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(){&lt;/span&gt;
&lt;span class="c1"&gt;// Seu código que não vazará o arquivo!!!&lt;/span&gt;
&lt;span class="p"&gt;}());&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A segunda forma de gerar a IIFE é bem similar a primeira o que muda são os parênteses &lt;code&gt;()&lt;/code&gt; no final.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(){&lt;/span&gt;
&lt;span class="c1"&gt;// Seu código que não vazará o arquivo!!!&lt;/span&gt;
&lt;span class="p"&gt;})();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Você também pode fazer isso usando &lt;em&gt;arrow function&lt;/em&gt;, mas só tem uma forma de fazer isso:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="c1"&gt;// Seu código que não vazará o arquivo!!!&lt;/span&gt;
&lt;span class="p"&gt;})();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;A forma a seguir não funciona&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="c1"&gt;// Seu código que não vazará o arquivo!!!&lt;/span&gt;
&lt;span class="p"&gt;}());&lt;/span&gt;

&lt;span class="cm"&gt;/* Erro que você recebe:
SyntaxError: missing ) in parenthetical
*/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  O this é muito mas muito mais simples
&lt;/h2&gt;

&lt;p&gt;O &lt;code&gt;this&lt;/code&gt; da &lt;em&gt;arrow function&lt;/em&gt; é muito mais previsível do que o da &lt;em&gt;function expression&lt;/em&gt;, acredito que essa é a coisa mais feliz dela.&lt;/p&gt;

&lt;p&gt;A seguir tem uma &lt;em&gt;function expression&lt;/em&gt; chamada &lt;code&gt;Person&lt;/code&gt; (Pessoa) e dentro dela temos &lt;code&gt;this.age&lt;/code&gt; (&lt;code&gt;age&lt;/code&gt; é idade) que começa com &lt;code&gt;0&lt;/code&gt;, a cada 1 segundo ela ficará mais velha. Usamos o método &lt;code&gt;setInterval&lt;/code&gt; que nós permite executar uma função a cada 1000 milesegundos (você pode mudar os milesegundos), o primeiro parâmentro da &lt;code&gt;setInterval&lt;/code&gt; é a função que será executada e o segundo parâmetro é o tempo do intervalo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="nx"&gt;setInterval&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// O this perde o escopo e referência Window&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Executando o código acima você receberá uma saída similar no seu console:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Window about:privatebrowsing
Window about:privatebrowsing
Window about:privatebrowsing
Window about:privatebrowsing
Window about:privatebrowsing
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se você vem de outras linguagens você achará estranho esse comportamento do &lt;code&gt;this&lt;/code&gt; no JavaScript, antes de existir a &lt;em&gt;arrow function&lt;/em&gt; nós resolvimos esse tipo de problema criando uma variável chamada &lt;code&gt;that&lt;/code&gt; e atribuímos a ela o &lt;code&gt;this&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;that&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;that&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="nx"&gt;setInterval&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;that&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;that&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;that&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// O this perde o escopo e referência Window&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Executando o código com o &lt;code&gt;that&lt;/code&gt; você terá a seguinte saída no terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Object &lt;span class="o"&gt;{&lt;/span&gt; age: 1 &lt;span class="o"&gt;}&lt;/span&gt;
Object &lt;span class="o"&gt;{&lt;/span&gt; age: 2 &lt;span class="o"&gt;}&lt;/span&gt;
Object &lt;span class="o"&gt;{&lt;/span&gt; age: 3 &lt;span class="o"&gt;}&lt;/span&gt;
Object &lt;span class="o"&gt;{&lt;/span&gt; age: 4 &lt;span class="o"&gt;}&lt;/span&gt;
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aqui vem o momento feliz da sua vida, com a &lt;em&gt;arrow function&lt;/em&gt; o comportamento do &lt;code&gt;this&lt;/code&gt; fica mais previsível e o código muito mais simples, ela tem um &lt;code&gt;this&lt;/code&gt; léxico, isso significa que o &lt;code&gt;this&lt;/code&gt; não é alterado de forma dinâmica respeitando o escopo de onde ele foi criado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="nx"&gt;setInterval&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Execute o código e você terá a seguinte saída:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Object &lt;span class="o"&gt;{&lt;/span&gt; age: 1 &lt;span class="o"&gt;}&lt;/span&gt;
Object &lt;span class="o"&gt;{&lt;/span&gt; age: 2 &lt;span class="o"&gt;}&lt;/span&gt;
Object &lt;span class="o"&gt;{&lt;/span&gt; age: 3 &lt;span class="o"&gt;}&lt;/span&gt;
Object &lt;span class="o"&gt;{&lt;/span&gt; age: 4 &lt;span class="o"&gt;}&lt;/span&gt;
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se você sentiu falta de algum assunto no post ou discorda de algo que escrevi, não deixe de falar nos comentários, eu gosto muito de feedback, principalmente os negativos que nos fazem evoluir.&lt;/p&gt;

&lt;p&gt;Ah! Caso você queira tirar dúvidas de JavaScript cola aí na comunidade CollabCode no Discord: &lt;a href="http://bit.ly/discord-collabcode"&gt;Link do Discord da CollabCode&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Referências de estudo:
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Functions/Arrow_functions"&gt;Arrow function MDN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/when-and-why-you-should-use-es6-arrow-functions-and-when-you-shouldnt-3d851d7f0b26/"&gt;When (and why) you should use ES6 arrow functions — and when you shouldn’t&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>node</category>
    </item>
    <item>
      <title>Como funciona o var, let e const do JavaScript?</title>
      <dc:creator>Marco Bruno 🤡</dc:creator>
      <pubDate>Thu, 20 Feb 2020 12:31:25 +0000</pubDate>
      <link>https://dev.to/collabcode/como-funciona-o-var-let-e-const-do-javascript-178p</link>
      <guid>https://dev.to/collabcode/como-funciona-o-var-let-e-const-do-javascript-178p</guid>
      <description>&lt;p&gt;A primeira forma que eu aprendi a declarar uma variável foi utilizando a &lt;code&gt;var&lt;/code&gt;,  mas faz algum tempo que temos outras duas formas para declararmos as nossas variáveis com &lt;strong&gt;JavaScript&lt;/strong&gt; que são utilizando as palavras &lt;code&gt;const&lt;/code&gt; e &lt;code&gt;let&lt;/code&gt;. Bora entender no código como funcionam essas três formas de escrever uma variável com JavaScript!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/EFoEqHIwxqY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;O problema que temos com a variável &lt;code&gt;var&lt;/code&gt; é que ela tem um pequeno problema de escopo. Vamos entender isso melhor com um exemplo prático:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Minha idade é:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se você executar esse código tanto em cima da plataforma NodeJS ou abrindo no seu browser(navegador) favorito. Você terá a seguinte saída:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Minha idade é: 30
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora onde está o problema de escopo que eu comentei? Para entendermos isso, colocaremos estas duas linhas que escrevemos, dentro de uma função chamada &lt;code&gt;imprimeIdade&lt;/code&gt; e depois executaremos ela:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;imprimeIdade&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Minha idade é:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;imprimeIdade&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mesmo com esse código não temos problema de escopo. Se você executar o código acima no seu browser ou no NodeJS você terá a seguinte saída:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Minha idade é: 30
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora o que deverá acontecer se colocarmos o &lt;code&gt;console.log&lt;/code&gt; fora da nossa função &lt;code&gt;imprimeIdade&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;imprimeIdade&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;imprimeIdade&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Minha idade é:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se você está esperando receber um erro na execução desse código, você está certo. Executando o código você receberá um erro similar a este:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/Users/marcobruno/Desktop/index.js:7
console.log&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Minha idade é:'&lt;/span&gt;, idade&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                              ^
ReferenceError: idade is not defined
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mas pera lá, eu disse que o &lt;code&gt;var&lt;/code&gt; tem um problema de escopo. Sim ele tem, mas esse problema de escopo não acontece dentro de uma função. Dentro dela o escopo funciona como o esperado que é a variável só existir dentro das chaves da função. Agora quando criamos uma variável utilizando o &lt;code&gt;var&lt;/code&gt; dentro de um &lt;code&gt;if&lt;/code&gt;, &lt;code&gt;for&lt;/code&gt; ou &lt;code&gt;while&lt;/code&gt; essa variável irá vazar o escopo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;imprimeIdade&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Idade dentro do for:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;  

  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Idade fora do for:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;imprimeIdade&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pelo que aprendemos em lógica de programação nós deveriamos receber um erro na linha que utilizamos o &lt;code&gt;console.log&lt;/code&gt; porque a variável idade foi criada dentro do escopo do &lt;code&gt;for&lt;/code&gt;, mas ao invés disso não temos nenhum erro e nosso &lt;code&gt;console.log&lt;/code&gt; executa sem problema nenhum após a execução do nosso loop &lt;code&gt;for&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Idade dentro &lt;span class="k"&gt;do for&lt;/span&gt;: 30
Idade dentro &lt;span class="k"&gt;do for&lt;/span&gt;: 31
Idade dentro &lt;span class="k"&gt;do for&lt;/span&gt;: 32
Idade dentro &lt;span class="k"&gt;do for&lt;/span&gt;: 33
Idade dentro &lt;span class="k"&gt;do for&lt;/span&gt;: 34
Idade dentro &lt;span class="k"&gt;do for&lt;/span&gt;: 35
Idade dentro &lt;span class="k"&gt;do for&lt;/span&gt;: 36
Idade dentro &lt;span class="k"&gt;do for&lt;/span&gt;: 37
Idade dentro &lt;span class="k"&gt;do for&lt;/span&gt;: 38
Idade dentro &lt;span class="k"&gt;do for&lt;/span&gt;: 39
Idade dentro &lt;span class="k"&gt;do for&lt;/span&gt;: 40
Idade fora &lt;span class="k"&gt;do for&lt;/span&gt;: 41
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se você precisar que a variável idade se comporte como o esperado, você pode trocar o &lt;code&gt;var&lt;/code&gt; por &lt;code&gt;let&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;imprimeIdade&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Idade dentro do for:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;  

  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Idade fora do for:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;imprimeIdade&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora com esse código nós recebemos uma mensagem de erro, como é o esperado dado o que estudamos em lógica de programação:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/Users/marcobruno/Desktop/index.js:6
  console.log&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Idade fora do for:'&lt;/span&gt;, idade&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                                    ^
  ReferenceError: idade is not defined
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Por a &lt;code&gt;let&lt;/code&gt; ter um comportamento mais previsível, nós evitamos ao máximo o uso da var. Portanto podemos concluir que a &lt;code&gt;let&lt;/code&gt; é uma variável que podemos atribuir um novo valor para ela e a mesma não tem o problema de escopo como apresentado em variáveis que são criadas com a &lt;code&gt;var&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;E a &lt;code&gt;const&lt;/code&gt; como ela funciona? Ela também não tem o problema de escopo mas você também não pode atribuir um novo valor para uma variável criada com &lt;code&gt;const&lt;/code&gt;. Bora ver na prática o que acontece quando tentamos alterar o valor de uma variável que foi criada com &lt;code&gt;const&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;imprimeIdade&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Idade dentro do for:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;  

  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Idade fora do for:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;idade&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;imprimeIdade&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No momento que você tentar executar o código acima receberá o seguinte erro:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Idade dentro &lt;span class="k"&gt;do for&lt;/span&gt;: 30
/Users/marcobruno/Desktop/index.js:2
  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;const idade &lt;span class="o"&gt;=&lt;/span&gt; 30&lt;span class="p"&gt;;&lt;/span&gt; idade &amp;lt;&lt;span class="o"&gt;=&lt;/span&gt; 40&lt;span class="p"&gt;;&lt;/span&gt; idade++&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
                                           ^
TypeError: Assignment to constant variable.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O erro que estamos recebendo diz que não podemos atribuir um novo valor para uma variável que foi criada com a &lt;code&gt;const&lt;/code&gt; o que torna o comportamento dela muito mais previsível, já que o valor atribuído à ela não pode mudar. Por estes motivos procuramos sempre utilizar a &lt;code&gt;const&lt;/code&gt; para criarmos as nossas variáveis e uma vez que recebemos o erro acima verificamos se realmente temos a necessidade de atribuir um novo valor à varíavel. Se isso for verdade, trocamos o const para &lt;code&gt;let&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Vamos ver mais um exemplo com a &lt;code&gt;const&lt;/code&gt;. No código a seguir vamos criar um variável chamada pessoa que receberá como valor um JSON com duas propriedades: nome e idade. Depois vamos tentar mudar o valor que setamos inicialmente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pessoa&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;nome&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Henri&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;idade&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="nx"&gt;pessoa&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;nome&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Luna&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;idade&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;19&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Executando esse código iremos receber o seguinte erro:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/Users/marcobruno/Desktop/medium/index.js:6
pessoa &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
       ^
TypeError: Assignment to constant variable.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Como vimos anteriormente não podemos atribuir um novo valor para uma &lt;code&gt;const&lt;/code&gt;. Por outro lado conseguimos alterar o valor das propriedades do objeto da seguinte forma:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pessoa&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;nome&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Henri&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;idade&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="nx"&gt;pessoa&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;nome&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Luna&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;pessoa&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;idade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;19&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Nome:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;pessoa&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;nome&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Idade:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;pessoa&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;idade&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Portanto não podemos passar uma nova atribuição para uma const, mas podemos alterar as propriedades do objeto que definimos na const pessoa.&lt;/p&gt;

&lt;p&gt;Espero que tenha ficado claro como funciona as três formas de variáveis do JavaScript. Se quer estudar ainda mais sobre JavaScript, recomendo você entrar na comunidade CollabCode no Discord: &lt;a href="http://bit.ly/discord-collabcode"&gt;http://bit.ly/discord-collabcode&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
    </item>
    <item>
      <title>Pare de chutar e aprenda como funciona o display: block</title>
      <dc:creator>Marco Bruno 🤡</dc:creator>
      <pubDate>Mon, 20 Jan 2020 09:24:32 +0000</pubDate>
      <link>https://dev.to/collabcode/pare-de-chutar-e-aprenda-como-funciona-o-display-block-169m</link>
      <guid>https://dev.to/collabcode/pare-de-chutar-e-aprenda-como-funciona-o-display-block-169m</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/HWfhwokS_qg"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Neste post nós vamos entender como funciona o &lt;code&gt;display: block&lt;/code&gt;. Para facilitar a explicação, vamos utilizar o código final do &lt;a href="https://dev.to/collabcode/pare-de-chutar-e-aprenda-como-funciona-o-display-inline-35o"&gt;post sobre display: inline&lt;/a&gt; como base. Se você quiser ir fazendo o código junto com o post, você pode copiar o HTML e os CSSs abaixo, ou acessar os códigos pelo &lt;a href="https://github.com/MarcoBrunoBR/pare-de-chutar-e-aprenda-as-propriedades-CSS-de-alinhamento/tree/e2fad0dd1f29d5df1acd27cf842d2bb8a3bcb54a"&gt;GitHub&lt;/a&gt; ou &lt;a href="https://codepen.io/MarcoBrunoBR/pen/bwwQbN"&gt;CodePen&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  HTML (index.html)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"pt-br"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;
        Exemplo dos valores inline, block e inline-block
        da propriedade display;
    &lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"css/reset.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"css/displayInlineBlock.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;ul&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example-item example-item_first"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Primeiro&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example-item example-item_second"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Segundo&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example-item example-item_third"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Terceiro&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  CSS (reset.css)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;"Open Sans"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;ol&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;li&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;list-style&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  CSS (displayInlineBlock.css)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;example&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#FFF&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;    
&lt;span class="nc"&gt;.example-item&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;inline&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_first&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#FAA116&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_second&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#57C7C3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_third&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#3B97D3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Abrindo no navegador o HTML que acabamos de fazer, ele vai ter o seguinte layout:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QhOuQeWe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/vu1ip6uat167a6bp00ev.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QhOuQeWe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/vu1ip6uat167a6bp00ev.png" alt="Layout inicial do nosso código"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na tentativa de deixar o post um pouco mais dinâmico, vou colocar um desafio para implementarmos utilizando a propriedade &lt;code&gt;display&lt;/code&gt; com o valor &lt;code&gt;block&lt;/code&gt;.&lt;br&gt;
Vamos tentar chegar no seguinte layout até o final do post:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3lb-D8YN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/2nzgq873d7umio0hynoq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3lb-D8YN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/2nzgq873d7umio0hynoq.png" alt="Objetivo do post, layout que vamos implementar até o final do post"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A primeira coisa que faremos é definir a largura (&lt;code&gt;width&lt;/code&gt;) e altura (&lt;code&gt;height&lt;/code&gt;) para todas as tags &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt;. Vamos abrir o nosso CSS (&lt;strong&gt;displayInlineBlock.css&lt;/strong&gt;) e definir a largura (&lt;code&gt;width&lt;/code&gt;) com &lt;code&gt;33.333%&lt;/code&gt; e a altura (&lt;code&gt;height&lt;/code&gt;) de 150px:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.example&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#FFF&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;    
&lt;span class="nc"&gt;.example-item&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;inline&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;33.333%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="err"&gt;Adicionamos&lt;/span&gt; &lt;span class="err"&gt;essa&lt;/span&gt; &lt;span class="err"&gt;linha&lt;/span&gt;
    &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;150px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="err"&gt;E&lt;/span&gt; &lt;span class="err"&gt;essa&lt;/span&gt; &lt;span class="err"&gt;aqui,&lt;/span&gt; &lt;span class="err"&gt;também&lt;/span&gt; &lt;span class="err"&gt;adicionamos&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_first&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#FAA116&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_second&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#57C7C3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_third&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#3B97D3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Salve seu CSS, em seguida atualize seu navegador, o resultado vai ser:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ou_ahBXm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ltzwt4mevqa9i3p2vow4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ou_ahBXm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ltzwt4mevqa9i3p2vow4.png" alt="Não mudou nada, ficou igual estava antes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Estranho, não mudou nada, parece que nem a largura (&lt;code&gt;width&lt;/code&gt;) nem a altura (&lt;code&gt;height&lt;/code&gt;) funcionaram. Por que isso aconteceu? Se sua resposta é não sei ou o CSS não funciona direito, vale a pena você dar uma olhada no &lt;a href="https://dev.to/collabcode/pare-de-chutar-e-aprenda-como-funciona-o-display-inline-35o"&gt;post anterior&lt;/a&gt; a esse. Nele aprendemos como funciona a &lt;code&gt;display: inline&lt;/code&gt;. Lá vimos que todo elemento HTML com &lt;code&gt;display: inline&lt;/code&gt;, não aceita as propriedades &lt;code&gt;width&lt;/code&gt; e &lt;code&gt;height&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Para que o elemento HTML aceite as propriedades &lt;code&gt;width&lt;/code&gt; e &lt;code&gt;height&lt;/code&gt;, precisamos definir o valor do &lt;code&gt;display&lt;/code&gt; como &lt;code&gt;block&lt;/code&gt;. Vamos ver se isso que acabei de falar é verdade. Por favor, abra o nosso CSS (&lt;strong&gt;displayInlineBlock.css&lt;/strong&gt;) e altere para &lt;code&gt;block&lt;/code&gt; a propriedade &lt;code&gt;display&lt;/code&gt; que está no seletor &lt;code&gt;.example-item&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.example&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#FFF&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;    
&lt;span class="nc"&gt;.example-item&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="err"&gt;Trocamos&lt;/span&gt; &lt;span class="err"&gt;inline&lt;/span&gt; &lt;span class="err"&gt;por&lt;/span&gt; &lt;span class="err"&gt;block&lt;/span&gt;
    &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;33.333%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;150px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_first&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#FAA116&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_second&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#57C7C3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_third&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#3B97D3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vai lá no seu navegador e atualize a página, você verá que eu não estou mentindo para você. Espero que você esteja com o resultado igual a imagem que está logo abaixo, isso não acontece, não tem problema, me manda uma mensagem que eu te ajudo, ou entre no Discord da CollabCode no link a seguir: &lt;a href="http://bit.ly/discord-collabcode"&gt;Discord da CollabCode&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Gsjf_PTp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/kf458tuql5a1m8czdyzt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Gsjf_PTp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/kf458tuql5a1m8czdyzt.png" alt="Agora a largura e altura estão funcionando"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Boa. Agora conseguimos definir a largura (&lt;code&gt;width&lt;/code&gt;) e altura (&lt;code&gt;height&lt;/code&gt;) para os nossos elementos. Ou seja, todos os elementos definidos com &lt;code&gt;display: block&lt;/code&gt;, aceitam as propriedades &lt;code&gt;width&lt;/code&gt; e &lt;code&gt;height&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Lembra que definimos uma largura de &lt;code&gt;33.333%&lt;/code&gt; para as três &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt;?&lt;br&gt;
Teoricamente as &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; deveriam ficar uma do lado da outra. Isso não acontece porque todo elemento definido como &lt;code&gt;block&lt;/code&gt; ocupa a linha inteira, ou seja, não deixa outro elemento ocupar a mesma linha que ele. Por esse motivo os elementos HTML (&lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt;) ficaram um abaixo do outro.&lt;/p&gt;

&lt;p&gt;Falta pouco para implementarmos o código do nosso desafio. Agora só precisamos mover a nossa segunda &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; para direita e centralizar a terceira &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt;. A forma mais simples de implementar isso é utilizando a propriedade &lt;code&gt;margin&lt;/code&gt; (respiro externo) do CSS.&lt;/p&gt;

&lt;p&gt;Só para começarmos a aprender como funciona a &lt;code&gt;margin&lt;/code&gt;, vamos colocar &lt;code&gt;40px&lt;/code&gt; de margem do lado esquerdo da nossa segunda &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt;. Para fazer isso precisamos adicionar a propriedade &lt;code&gt;margin-left: 40px&lt;/code&gt;, no seletor &lt;code&gt;.example-item_second&lt;/code&gt; que está no arquivo CSS (&lt;strong&gt;displayInlineBlock.css&lt;/strong&gt;).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.example&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#FFF&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;    
&lt;span class="nc"&gt;.example-item&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;33.333%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;150px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_first&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#FAA116&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_second&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#57C7C3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;margin-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;40px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="err"&gt;Adicionamos&lt;/span&gt; &lt;span class="err"&gt;40px&lt;/span&gt; &lt;span class="err"&gt;do&lt;/span&gt; &lt;span class="err"&gt;lado&lt;/span&gt; &lt;span class="err"&gt;esquerdo&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_third&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#3B97D3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Atualizando a nossa página no browser o resultado vai ficar assim:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WuGy0Ckx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/5e9wakuiyv0x7qxi8ll0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WuGy0Ckx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/5e9wakuiyv0x7qxi8ll0.png" alt="Conseguimos mover a segunda li um pouco para direita"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Estamos caminhando para deixar o segundo elemento deslocado para o lado direito da página, conforme foi proposto no nosso desafio. Para conseguirmos implementar essa parte do desafio, qual é o valor que devemos colocar na propriedade &lt;code&gt;margin-left&lt;/code&gt;? Dica: lembre-se que a &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; tem &lt;code&gt;33.333%&lt;/code&gt; de largura.&lt;/p&gt;

&lt;p&gt;É isso. Só fazermos a conta, &lt;code&gt;100% - 33.333%&lt;/code&gt;, teremos como resultado &lt;code&gt;66.667%&lt;/code&gt;. Para deixarmos o layout mais próximo do desafio, basta que a segunda &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; tenha no margin-left o valor de &lt;code&gt;66.667%&lt;/code&gt;. Bora fazer isso no nosso CSS (&lt;strong&gt;displayInlineBlock.css&lt;/strong&gt;).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.example&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#FFF&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;    
&lt;span class="nc"&gt;.example-item&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;33.333%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;150px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_first&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#FAA116&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_second&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#57C7C3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;margin-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;66.667%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="err"&gt;Alteramos&lt;/span&gt; &lt;span class="err"&gt;o&lt;/span&gt; &lt;span class="err"&gt;40px&lt;/span&gt; &lt;span class="err"&gt;para&lt;/span&gt; &lt;span class="err"&gt;66.667%&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_third&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#3B97D3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se precisarmos mudar a largura (&lt;code&gt;width&lt;/code&gt;) de todas as &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; para &lt;code&gt;20%&lt;/code&gt;, o que vai acontecer com o nosso layout? O segundo elemento vai ficar no lado direito, bem encostadinho?&lt;/p&gt;

&lt;p&gt;Infelizmente toda vez que mudarmos a largura (&lt;code&gt;width&lt;/code&gt;) da &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; vamos ter que refazer a conta e mudarmos o valor da propriedade &lt;code&gt;margin-left&lt;/code&gt;. Esta forma que acabamos de implementar funciona mas a manutenção não é muito feliz.&lt;/p&gt;

&lt;p&gt;Felizmente temos um valor da propriedade &lt;code&gt;margin-left&lt;/code&gt; que faz o cálculo para gente de forma automática, é só definirmos o &lt;code&gt;margin-left&lt;/code&gt; como &lt;code&gt;auto&lt;/code&gt;. Vai lá abra seu CSS (&lt;strong&gt;displayInlineBlock.css&lt;/strong&gt;) e troque o  &lt;code&gt;66.667%&lt;/code&gt; por &lt;code&gt;auto&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.example&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#FFF&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;    
&lt;span class="nc"&gt;.example-item&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;33.333%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;150px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_first&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#FAA116&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_second&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#57C7C3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;margin-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="err"&gt;Só&lt;/span&gt; &lt;span class="err"&gt;trocamos&lt;/span&gt; &lt;span class="err"&gt;66.667%&lt;/span&gt; &lt;span class="err"&gt;por&lt;/span&gt; &lt;span class="err"&gt;auto&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_third&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#3B97D3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Assim que você atualizar o navegador vai ver que o layout não mudou nada do código anterior:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--edYhl-uy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/l0oqjggparwxc5zz1ozp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--edYhl-uy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/l0oqjggparwxc5zz1ozp.png" alt="O resultado visual é o mesmo com porcentagem, mas com auto a manutenção é mais feliz"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mas, volte no seu código (&lt;strong&gt;displayInlineBlock.css&lt;/strong&gt;) e altere a largura (&lt;code&gt;width&lt;/code&gt;) dos seu &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; para &lt;code&gt;20%&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Se você ir até o navegador e atualizar a página vai ver o seguinte resultado:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--L1twk-O2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/11u71fqkh8bq3shj69ie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--L1twk-O2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/11u71fqkh8bq3shj69ie.png" alt="Mesmo mudando a largura das li temos o mesmo comportamento de posicionamento"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bacana né. Utilizando o &lt;code&gt;margin-left: auto;&lt;/code&gt; não precisamos mais ficar fazendo a conta para definir o valor de &lt;code&gt;margin-left&lt;/code&gt;. Desta forma a manutenção do código fica muito mais feliz.&lt;/p&gt;

&lt;p&gt;Para finalizar o nosso desafio, só está faltando centralizar a terceira &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt;. Agora nossas &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; estão com &lt;code&gt;20%&lt;/code&gt; de largura (&lt;code&gt;width&lt;/code&gt;). Ou seja, quanto nós precisamos definir de margem à esquerda e à direita para ela ficar centralizada?&lt;/p&gt;

&lt;p&gt;Basta colocar &lt;code&gt;40%&lt;/code&gt; de margem à esquerda e à direita. Mas, se a largura das &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; forem alteradas novamente? Vamos ter que ficar mudando a propriedade &lt;code&gt;margin-left&lt;/code&gt; e &lt;code&gt;margin-right&lt;/code&gt;. Triste! Novamente temos o problema para mantermos o nosso código.&lt;/p&gt;

&lt;p&gt;Ainda bem que temos uma solução para esse problema. :-)&lt;br&gt;
Da mesma forma que nós definimos &lt;code&gt;margin-left: auto;&lt;/code&gt; para deixar que o navegador calculasse a quantidade de margem necessária para colocar no lado esquerdo do segundo elemento, com o objetivo de deixar ele posicionado no lado direito, podemos pedir para o navegador calcular de forma automática a quantidade de margem do lado esquerdo e direito para que a terceira &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; fique centralizada.&lt;/p&gt;

&lt;p&gt;Precisamos portanto adicionar o &lt;code&gt;margin-left: auto;&lt;/code&gt; e &lt;code&gt;margin-right: auto;&lt;/code&gt; no seletor da terceira &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; (&lt;code&gt;.example-item_third&lt;/code&gt;). Abra o nosso CSS (&lt;strong&gt;displayInlineBlock.css&lt;/strong&gt;) e implemente o &lt;code&gt;margin-left&lt;/code&gt; e &lt;code&gt;margin-right&lt;/code&gt;. Ah! Vamos aproveitar e voltar a largura de &lt;code&gt;33.333%&lt;/code&gt; nas &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; para o layout ficar igual ao do nosso desafio.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.example&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#FFF&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;33.333%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="err"&gt;Voltamos&lt;/span&gt; &lt;span class="err"&gt;o&lt;/span&gt; &lt;span class="err"&gt;valor&lt;/span&gt; &lt;span class="err"&gt;de&lt;/span&gt; &lt;span class="err"&gt;33.333%&lt;/span&gt;
    &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;150px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_first&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#FAA116&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_second&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#57C7C3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;margin-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_third&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#3B97D3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;margin-right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="err"&gt;Adicionamos&lt;/span&gt; &lt;span class="err"&gt;essa&lt;/span&gt; &lt;span class="err"&gt;linha&lt;/span&gt;
    &lt;span class="nl"&gt;margin-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="err"&gt;Adicionamos&lt;/span&gt; &lt;span class="err"&gt;essa&lt;/span&gt; &lt;span class="err"&gt;linha&lt;/span&gt; &lt;span class="err"&gt;também&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Beleza. Agora vai até o navegador e atualize a sua página:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ipBHd1uf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/rwbgjxg07v5lde4mm8fc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ipBHd1uf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/rwbgjxg07v5lde4mm8fc.png" alt="Está aí. Implementamos o layout do nosso desafio com um código simples e feliz"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Espero que você tenha gostado do post. É dessa forma que explicava nas turmas de &lt;a href="https://www.caelum.com.br/curso-html-css-javascript"&gt;FrontEnd da Caelum&lt;/a&gt;. Se ficou qualquer dúvida, não concorda com alguma coisa, tem alguma dica para melhorar os próximos posts. Por favor, fale! Eu realmente ouço e sempre estou tentando melhorar. Até o próximo post que vai ser sobre, &lt;code&gt;display: inline-block&lt;/code&gt;!!!&lt;/p&gt;

&lt;p&gt;Se quiser trocar conhecimento fique a vontade para entrar e um dos canais da comunidade CollabCode:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://bit.ly/discord-collabcode"&gt;Discord da CollabCode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bit.ly/telegram-collabcode"&gt;Telegram da CollabCOde&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bit.ly/whats-collabcode"&gt;Whatsapp da CollabCOde&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>css</category>
      <category>frontend</category>
      <category>display</category>
    </item>
    <item>
      <title>Como configurar ESLint e Prettier no Node?</title>
      <dc:creator>Marco Bruno 🤡</dc:creator>
      <pubDate>Tue, 29 Oct 2019 16:29:04 +0000</pubDate>
      <link>https://dev.to/collabcode/como-configurar-eslint-e-prettier-no-node-3kga</link>
      <guid>https://dev.to/collabcode/como-configurar-eslint-e-prettier-no-node-3kga</guid>
      <description>&lt;p&gt;Post in english available at SourceLevel: &lt;a href="https://sourcelevel.io/blog/how-to-setup-eslint-and-prettier-on-node" rel="noopener noreferrer"&gt;https://sourcelevel.io/blog/how-to-setup-eslint-and-prettier-on-node&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se você não sabe o que é o &lt;strong&gt;ESLint&lt;/strong&gt; e &lt;strong&gt;Prettier&lt;/strong&gt; eu recomendo você dar uma olhada no &lt;a href="https://dev.to/collabcode/como-melhorar-a-qualidade-de-codigo-com-eslint-e-prettier-117j"&gt;primeiro post&lt;/a&gt; onde expliquei o que são eles. O objetivo desse post é mais prático.&lt;/p&gt;

&lt;p&gt;Como vamos precisar de um projeto base para mostrar como configurar o ESLint e Prettier na sua aplicação Node, logo após os pré-requisitos montarei um &lt;em&gt;hello world&lt;/em&gt; (olá mundo) de API com &lt;strong&gt;Restify&lt;/strong&gt; que é o framework usado pela Netflix e outras empresas a mesma altura.&lt;/p&gt;

&lt;p&gt;Se você já tem um projeto criado, por favor só dê uma olhada nos pré-requisitos que estão logo a seguir e depois pode pular para a seção: Como configurar o ESLint em uma aplicação Node?&lt;/p&gt;

&lt;h2&gt;
  
  
  Pré-requisitos
&lt;/h2&gt;

&lt;p&gt;Ter um terminal instalado com o bash, zsh ou fish. Se estiver no windows e não tiver com o bash instalado, por favor use o powershell porque ele terá mais compatibilidade com os comandos que vou mostrar a seguir. Caso tiver qualquer erro fique à vontade para pedir ajuda nos comentários.&lt;/p&gt;

&lt;p&gt;Node (10.16.3 ou superior) e npm (6.12.0 ou superior) instalados e por último o Visual Studio Code (VSCode) instalado.&lt;/p&gt;

&lt;h2&gt;
  
  
  Criando projeto base?
&lt;/h2&gt;

&lt;p&gt;Por favor, abra o terminal e crie uma pasta com o nome de &lt;em&gt;api-happy&lt;/em&gt;. A seguir eu uso o comando &lt;code&gt;mkdir&lt;/code&gt; para criar a pasta e à frente do comando coloco o nome da pasta:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

&lt;span class="nb"&gt;mkdir &lt;/span&gt;api-happy


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Agora precisamos entrar na pasta que acabamos de criar usando o comando &lt;code&gt;cd&lt;/code&gt; e, logo à frente, o nome da pasta que queremos entrar:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

&lt;span class="nb"&gt;cd &lt;/span&gt;api-happy


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Show! Agora que estamos dentro da pasta já podemos iniciar o nosso projeto com &lt;strong&gt;node&lt;/strong&gt; usando o &lt;strong&gt;npm&lt;/strong&gt; (Node Package Manager). No terminal usaremos o comando &lt;code&gt;npm init -y&lt;/code&gt;, esse comando criará um arquivo chamado &lt;em&gt;package.json&lt;/em&gt; com algumas informações básicas de projeto como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;name (nome);&lt;/li&gt;
&lt;li&gt;version (versão);&lt;/li&gt;
&lt;li&gt;description (descrição);&lt;/li&gt;
&lt;li&gt;main (arquivo que inicia o projeto);&lt;/li&gt;
&lt;li&gt;scripts (scripts de test e outros);&lt;/li&gt;
&lt;li&gt;keywords (palavras chaves para acharem seu projeto);&lt;/li&gt;
&lt;li&gt;author (autor);&lt;/li&gt;
&lt;li&gt;license (licença).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agora que já sabemos o que o comando faz, execute ele no terminal, por favor (lembre-se que você tem que estar na pasta do projeto):&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

npm init &lt;span class="nt"&gt;-y&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Só para certificarmos que deu tudo certo, abra o seu projeto no VSCode e verifique se o arquivo &lt;em&gt;package.json&lt;/em&gt; foi criado com sucesso.&lt;/p&gt;

&lt;p&gt;O próximo passo, ainda dentro da pasta do projeto, é instalarmos uma dependência (&lt;em&gt;restify&lt;/em&gt;) no nosso projeto. Para isso precisamos usar o &lt;code&gt;npm&lt;/code&gt; usando o comando &lt;code&gt;install&lt;/code&gt;:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

npm &lt;span class="nb"&gt;install &lt;/span&gt;restify


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Caso você goste de escrever menos, você pode usar o &lt;code&gt;npm i restify&lt;/code&gt; no lugar do &lt;code&gt;npm install restify&lt;/code&gt;. Se você está acostumado a escrever o &lt;code&gt;--save&lt;/code&gt; à frente do nome do pacote (&lt;code&gt;restify&lt;/code&gt; no nosso caso) para garantir que o pacote vire uma dependência do nosso projeto e o mesmo vá para o &lt;strong&gt;package.json&lt;/strong&gt;, isso não é mais necessário. Falando no &lt;strong&gt;package.json&lt;/strong&gt;, por favor abra ele no seu VSCode e verifique se foi adicionado a chave a seguir:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"dependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"restify"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^8.4.0"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Ainda no seu VSCode com o seu projeto aberto e crie um arquivo chamado &lt;em&gt;index.js&lt;/em&gt; e cole dentro dele o código a seguir:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;restify&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;restify&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;PORT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5000&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;restify&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createServer&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; 
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;World&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}));&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;PORT&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Nesse código que acabamos de ver, de forma bem resumida, estamos criando um servidor com o &lt;em&gt;restify&lt;/em&gt; na porta 5000 que saberá responder apenas a rota &lt;code&gt;/&lt;/code&gt; com um simples &lt;code&gt;json&lt;/code&gt; de &lt;code&gt;{hello: "World"}&lt;/code&gt;. A parte mais interessante do código é que não estou seguindo qualquer padrão e de certa forma estamos mesmo a ridicularizar o código, mas estou fazendo isso para te mostrar o poder que teremos após configurarmos o &lt;strong&gt;ESLint&lt;/strong&gt; e &lt;strong&gt;Prettier&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Por último só precisamos pedir para o node subir o nosso servidor com o comando a seguir no terminal:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

node index.js


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Para esse comando funcionar é necessário executá-lo na pasta do projeto.&lt;/p&gt;

&lt;h2 id="config"&gt;Como configurar o ESLint em uma aplicação Node?&lt;/h2&gt;

&lt;p&gt;Agora chegou a hora de deixar o código amador e subirmos de nível, pensando em qualidade de código e automatização de processos. &lt;/p&gt;

&lt;p&gt;Volte ao terminal e derrube o seu servidor apertando as teclas &lt;code&gt;ctrl&lt;/code&gt; e &lt;code&gt;c&lt;/code&gt; juntas. Agora sim, temos o terminal livre para iniciar a configuração do &lt;strong&gt;ESLint&lt;/strong&gt;. Para configurar o ESLint é necessário criar um arquivo de configuração chamado &lt;em&gt;.eslintrc.json&lt;/em&gt; (esse arquivo pode ter outras extensões como: js e yaml). Criar esse arquivo manualmente é um tanto chato, felizmente não precisamos fazê-lo, podemos criá-lo de forma assistida usando o comando a seguir:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

npx eslint &lt;span class="nt"&gt;--init&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;blockquote&gt;
&lt;h3&gt;
  
  
  O que o npx?
&lt;/h3&gt;

&lt;p&gt;npx instala o pacote para você de forma global e temporária, depois que você o utiliza ele é removido. Dessa forma não ficamos mantendo pacotes globais desatualizados e também mantendo eles ocupando um espaço desnecessário. O npx surgiu na versão 5.2 do npm.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Após a execução do comando, o terminal fará perguntas sobre a configuração do &lt;strong&gt;ESLint&lt;/strong&gt;. Vamos às perguntas. Vou tomar a liberdade de fazer uma tradução das perguntas e respostas que recomendo. Não vou explicar todas as possíveis respostas para cada pergunta, mas caso você tenha qualquer dúvida não deixe de perguntar nos comentários:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/F_fHYicVZi8"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pergunta 1:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;How would you like to use ESLint? (Use arrow keys)&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Como gostaria de usar o ESLint? (Use as teclas direcionais)&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Resposta 1&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;To check syntax, find problems, and enforce code style&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Checar sintaxe, buscar problemas e forçar os padrão de código&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pergunta 2:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;What type of modules does your project use?&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Que tipo de módulos seu projeto usa?&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Respostas 2:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;JavaScript modules (import/export)&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;CommonJS (require/exports)&lt;/code&gt; &lt;strong&gt;Selecione essa opção&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;None of these&lt;/code&gt; &lt;em&gt;Nenhum desses&lt;/em&gt;&lt;br&gt;&lt;br&gt;
A resposta que vamos deixar selecionada aqui é o &lt;code&gt;CommnsJS (require/exports)&lt;/code&gt;, mas é muito comum nos projetos backend com JavaScript a galera usar o &lt;a href="https://www.npmjs.com/package/sucrase" rel="noopener noreferrer"&gt;sucrase&lt;/a&gt;, se esse for o seu caso você deve selecionar a opção &lt;code&gt;JavaScript modules (import/export)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pergunta 3:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;Which framework does your project use?&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Qual framework seu projeto usa?&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Resposta 3:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;None of these&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Nenhum desses&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pergunta 4:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;Does your project use TypeScript?&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Seu projeto usa TypeScript?&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Resposta 4:&lt;/strong&gt;&lt;br&gt;
Escreva N e em seguida aperte a tecla &lt;code&gt;ENTER&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pergunta 5:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;Where does your code run? (Press &amp;lt;space&amp;gt; to select, &amp;lt;a&amp;gt; to toggle all, &amp;lt;i&amp;gt; to invert selection)&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Onde seu projeto é executado? (Aperte &amp;lt;space&amp;gt; para selecionar, &amp;lt;a&amp;gt; para selecionar tudo, &amp;lt;i&amp;gt; para inverter a seleção)&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Resposta 5:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Deixe apenas a opção &lt;code&gt;Node&lt;/code&gt; selecionada.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pergunta 6:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;How would you like to define a style for your project?&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Como você gostaria de definir um padrão de código para o seu projeto?&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Resposta 6:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;Use a popular style guide&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Usar um padrão de código popular&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pergunta 7:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;Which style guide do you want to follow?&lt;/code&gt;&lt;br&gt;
_Qual padrão de código você quer seguir?_ &lt;br&gt;&lt;br&gt;
&lt;strong&gt;Resposta 7:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;Airbnb (https://github.com/airbnb/javascript)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pergunta 8:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;What format do you want your config file to be in?&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Qual formato você deseja o seu arquivo de configuração?&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Resposta 8:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;JSON&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pergunta 9:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;Would you like to install them now with npm?&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Você gostaria de instalá-los agora com npm?&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Resposta 9:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;Y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Pronto! Agora temos o nosso arquivo de configuração do &lt;strong&gt;ESLint&lt;/strong&gt; criado. Os pacotes para que ele funcione de forma feliz foram instalados como dependência para o ambiente de desenvolvimento em nosso projeto. Para certificar que tudo está certo, volte em seu VSCode e verifique se foi criado um arquivo &lt;em&gt;.eslintrc.json&lt;/em&gt; na raiz do seu projeto, depois abra o arquivo &lt;em&gt;package.json&lt;/em&gt;, ambos devem estar similar ao conteúdo a seguir:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;.eslintrc.json&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"commonjs"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"es6"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"node"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"extends"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"airbnb-base"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"globals"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"Atomics"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"readonly"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"SharedArrayBuffer"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"readonly"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"parserOptions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"ecmaVersion"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2018&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"rules"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;package.json&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"api-happy"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"main"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"index.js"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"test"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"echo &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Error: no test specified&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; &amp;amp;&amp;amp; exit 1"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"keywords"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"author"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"license"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ISC"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"restify"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^8.4.0"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"devDependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; 
    &lt;/span&gt;&lt;span class="nl"&gt;"eslint"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^6.5.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"eslint-config-airbnb-base"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^14.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"eslint-plugin-import"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^2.18.2"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Agora abra o arquivo &lt;em&gt;index.js&lt;/em&gt;. Infelizmente mesmo após toda a configuração que fizemos não temos nenhum tipo de alerta do nosso editor avisando que o nosso código não está seguindo o style guide do AirBnB. Isso acontece porque não instalamos o plugin do ESLint para que ele leia as configurações que acabamos de criar e nos informe os erros do nosso código. Clique no link a seguir e faça a instalação do plugin do ESLint em seu VSCode:&lt;br&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint" rel="noopener noreferrer"&gt;https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vixi! Agora se você abrir o seu arquivo &lt;em&gt;index.js&lt;/em&gt; vai se deparar com algo não muito agradável, um código cheio de sublinhados vermelhos, como na imagem a seguir:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fab4ywi7bqkqs9w0v21pu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fab4ywi7bqkqs9w0v21pu.png" alt="Erros do ESLint na index.js"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se parar o mouse sobre a &lt;code&gt;const&lt;/code&gt; que está na linha 1, aparecerá uma breve descrição do erro que o ESLint achou em seu código, conforme a imagem a seguir:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fnfkf1p3irtoe7lhimq0d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fnfkf1p3irtoe7lhimq0d.png" alt="Mostrando primeiro erro que o ESLint achou na index.js"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esse erro é simples de arrumar, só precisamos adicionar uma linha em branco após o &lt;code&gt;require&lt;/code&gt; do &lt;code&gt;restify&lt;/code&gt;. Lembrar de fazer isso vai ser chato, muito chato, mas não se preocupe! É aqui que entra a magia do &lt;strong&gt;Prettier&lt;/strong&gt;. Agora vamos partir para a configuração do Prettier que terá a responsabilidade de ler todas as configurações que colocarmos para o &lt;strong&gt;ESLint&lt;/strong&gt; e realizar as alterações necessárias uma vez que salvamos os arquivos que estamos editando.&lt;/p&gt;

&lt;p&gt;Por favor, não faça essas correções manualmente, isso só fará você sofrer e em algum momento desligará o ESLint por raiva a ele. Eu já fiz isso...kkk&lt;/p&gt;

&lt;h2&gt;
  
  
  Como configurar o Prettier com o ESLint?
&lt;/h2&gt;

&lt;p&gt;Primeiro precisamos instalar o plugin do &lt;strong&gt;Prettier&lt;/strong&gt; no nosso VSCode, faça isso usando o link a seguir: &lt;a href="https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode" rel="noopener noreferrer"&gt;https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora que já temos o Prettier instalado no VSCode podemos instalar o plugin do &lt;strong&gt;ESLint&lt;/strong&gt; para o &lt;strong&gt;Prettier&lt;/strong&gt; se comunicar com o mesmo. Abra seu terminal e, estando dentro da pasta do projeto, execute o comando a seguir. Este comando instalará todos os pacotes necessários para nossa configuração:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

npm i prettier eslint-config-prettier eslint-plugin-prettier


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Não vou entrar no detalhe de cada pacote que instalamos, mas caso tenha dúvidas não deixe de perguntar.&lt;br&gt;
Após a instalação dos pacotes, abra o arquivo &lt;em&gt;.eslintrc.json&lt;/em&gt; no VSCode e adicione no array que esta atribuído a chave &lt;code&gt;extends&lt;/code&gt; a string &lt;code&gt;"prettier"&lt;/code&gt;, conforme código a seguir:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"extends"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="s2"&gt;"airbnb-base"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="s2"&gt;"prettier"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;A seguir da chave &lt;code&gt;extends&lt;/code&gt; crie a chave &lt;code&gt;plugins&lt;/code&gt; (caso ela não exista), atribua um array para chave com a string, &lt;code&gt;"prettier"&lt;/code&gt;, conforme o código a seguir:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"extends"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="s2"&gt;"airbnb-base"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="s2"&gt;"prettier"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"plugins"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="s2"&gt;"prettier"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;A última coisa que precisamos configurar no arquivo &lt;em&gt;.eslintrc.json&lt;/em&gt; para o prettier e o ESLint funcionar de forma feliz é adicionar &lt;code&gt;rules&lt;/code&gt; conforme o código a seguir:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rules"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"prettier/prettier"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"error"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Esse é o resultado final do &lt;em&gt;.eslintrc.json&lt;/em&gt;:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"commonjs"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"es6"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"node"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"extends"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"airbnb-base"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"prettier"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"plugins"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"prettier"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"globals"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Atomics"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"readonly"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"SharedArrayBuffer"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"readonly"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"parserOptions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"ecmaVersion"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2018&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rules"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"prettier/prettier"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"error"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Abra seu arquivo &lt;em&gt;index.js&lt;/em&gt;, faça uma pequena alteração nele e depois disso salve o arquivo. Era para o prettier ter formatado seguindo os padrões e regras (style guide do AirBnB) que definimos no nosso &lt;strong&gt;ESLint&lt;/strong&gt;. Isso não acontece porque precisamos avisar o VSCode que ele deve formatar os nossos arquivos toda vez que salvarmos eles. Para garantir que essa configuração funcionará no VSCode de outro desenvolvedor que venha programar no seu projeto, você tem que criar um arquivo chamado &lt;em&gt;settings.json&lt;/em&gt; que ficará dentro de uma pasta chamada &lt;em&gt;.vscode&lt;/em&gt; e ela tem que ficar na pasta raiz do seu projeto, por favor crie esse arquivo e essa pasta e dentro do arquivo adicione o código a seguir:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"editor.formatOnSave"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Se voltar ao arquivo &lt;em&gt;index.js&lt;/em&gt; e salvá-lo novamente verá que seu arquivo será formatado automaticamente seguindo os padrões configurados. Mas pera lá, você pode reparar que o seu ESLint está reclamando das aspas duplas, e foi o prettier que colou elas como padrão. É se você chegou a conclusão que o AirBnB gosta mais de aspas simples, é isso mesmo. Então por que o prettier não seguiu essa regra? Isso acontece porque o prettier segue todas as regras que o ESLint definiu, mas ele não sobreescreve as próprias regras, se você for até a página do plugin prettier verá que ele prefere usar por padrão as aspas duplas:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F62a5qzytlmgla4cutlhz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F62a5qzytlmgla4cutlhz.png" alt="Tela das configuração do Prettier"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para mudarmos isso e pedir para ele seguir a regra de aspas simples, precisamos criar um arquivo na raiz do projeto com o nome de &lt;em&gt;prettier.config.js&lt;/em&gt; e dentro dele terá um código que tem como objetivo sobreescrever o comportamento padrão do &lt;code&gt;prettier.singleQuote&lt;/code&gt; que hoje é &lt;code&gt;false&lt;/code&gt; para &lt;code&gt;true&lt;/code&gt;:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;singleQuote&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Agora se você voltar ao seu arquivo &lt;em&gt;index.js&lt;/em&gt; e salvá-lo, verá que ele será formatado para ficar com aspas simples.&lt;/p&gt;

&lt;p&gt;Só mais um detalhe. Se abrir o arquivo &lt;em&gt;prettier.config.js&lt;/em&gt; verá que ele tem alguns problemas de compatibilidade com o style guide do AirBnB que pedirmos para o ESLint utilizar. Mais uma vez temos um padrão do prettier que vai contra os padrões do style guide que escolhemos. Recomendo você sobreescrever algumas regras do prettier para nem você nem outros devs terem problemas no futuro. Por favor, volte ao arquivo &lt;em&gt;prettier.config.js&lt;/em&gt; e deixe ele com as seguintes configurações:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;tabWidth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;semi&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;singleQuote&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;trailingComma&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;es5&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Pronto! Isso é o necessário para o prettier funcionar bem com o ESLint uma vez que você está usando o style guide do AirBnB. O importante aqui é você entender que uma vez que você escolher outro style guide é necessário verificar se o prettier não estã entrando em conflito com o seu style guide e caso estiver você precisará mudar as configurações padrões do seu prettier.&lt;/p&gt;

&lt;p&gt;Fico muito feliz em poder trocar conhecimento com você, obrigado por ter lido o post. Se tiver qualquer dúvida não deixe de perguntar. Abraço bons estudos!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Como melhorar a qualidade de código com ESLint e Prettier?</title>
      <dc:creator>Marco Bruno 🤡</dc:creator>
      <pubDate>Tue, 29 Oct 2019 16:17:06 +0000</pubDate>
      <link>https://dev.to/collabcode/como-melhorar-a-qualidade-de-codigo-com-eslint-e-prettier-117j</link>
      <guid>https://dev.to/collabcode/como-melhorar-a-qualidade-de-codigo-com-eslint-e-prettier-117j</guid>
      <description>&lt;p&gt;Se você é a pessoa que gosta que o seu código esteja todo indentado da mesma forma, gosta de usar as mesmas aspas no seu código entre outros padrões mais complexos com objetivo de ter uma qualidade de código mais feliz, este post é para você. Ele também é para você que não gosta de seguir esses padrões chatos, provavelmente porque lhe dá muito trabalho e você considera isso uma perda de tempo.&lt;/p&gt;

&lt;p&gt;Nesse post mostrarei como automatizar todo esse processo de padrões e qualidade de código enquanto você está programando no seu VSCode.&lt;/p&gt;

&lt;p&gt;Então vamos para leitura entender qual é a magia por trás do ESLint e Prettier. Se você já sabe o que eles são, recomendo você pular para parte prática e ir direto para a seção: Como configurar ESLint e Prettier?&lt;/p&gt;

&lt;h2&gt;
  
  
  O que é ESLint?
&lt;/h2&gt;

&lt;p&gt;É um &lt;strong&gt;lint&lt;/strong&gt; ou &lt;strong&gt;linter&lt;/strong&gt; para &lt;strong&gt;JavaScript&lt;/strong&gt; e &lt;strong&gt;TypeScript&lt;/strong&gt;, sim ele também é usado no mundo TypeScript! A um tempo atrás tinhamos o TSLint mas hoje ele se tornou um plugin do ESlint e a comunidade e mercado de trabalho passaram a utilizar o ESLint para ambas as linguagens.&lt;/p&gt;

&lt;blockquote&gt;
&lt;h3&gt;
  
  
  O que é lint ou linter?
&lt;/h3&gt;

&lt;p&gt;O termo &lt;strong&gt;lint&lt;/strong&gt; ou &lt;strong&gt;linter&lt;/strong&gt; não é algo só do mundo JavaScript, esse termo surgiu faz bastante tempo no &lt;a href="https://en.wikipedia.org/wiki/Lint_(software)"&gt;mundo Unix para a linguagem C&lt;/a&gt;. A responsabilidade dos lints ou linters não mudaram, eles fazem para nós uma análise no nosso código antes mesmo do nosso software ser executado, portanto enquanto você escreve o seu código o linter acusará possíveis erros de programação, bugs, construções suspeitas, além de solicitar alterações para você seguir os padrões de indentações, aspas e qualquer outras regras que você tenha informado previamente para ele.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  O que é Prettier?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Prettier&lt;/strong&gt; além de ter um logo maravilhoso é um plugin que não pode faltar no seu VSCode. Ele formata seu código de forma automática no momento que você salva seu arquivo, você pode configurar de forma bem simples os padrões que ele deve seguir nessa formatação automática que ele realiza, e na parte prática desse post eu vou mostrar como você pode falar para o prettier seguir as regras de formatação que definiremos no ESLint e dessa forma não vamos duplicar essas regras em dois lugares diferentes.&lt;/p&gt;

&lt;h2 id="eslint"&gt;Como configurar ESLint e Prettier?&lt;/h2&gt;

&lt;p&gt;O &lt;strong&gt;JavaScript&lt;/strong&gt; está cada vez mais poderoso, hoje podemos usá-lo no &lt;strong&gt;FrontEnd&lt;/strong&gt; com frameworks modernos como: &lt;strong&gt;React&lt;/strong&gt;, &lt;strong&gt;Vue&lt;/strong&gt; e &lt;strong&gt;Angular&lt;/strong&gt; (TypeScript). Além do movimento de compiladores de JavaScript para FrontEnd que vem crescendo com a adoção do &lt;strong&gt;Svelte&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Também podemos usar o &lt;strong&gt;JavaScript&lt;/strong&gt; no &lt;strong&gt;Backend&lt;/strong&gt; com o &lt;strong&gt;NodeJS&lt;/strong&gt; e frameworks como: &lt;strong&gt;Express&lt;/strong&gt; e &lt;strong&gt;Restify&lt;/strong&gt;. Temos também os frameworks que já adotaram &lt;strong&gt;TypeScript&lt;/strong&gt; como linguagem padrão como o &lt;strong&gt;NestJS&lt;/strong&gt;. Você pode usar &lt;strong&gt;JavaScript&lt;/strong&gt; até no mundo &lt;strong&gt;Mobile&lt;/strong&gt; com &lt;strong&gt;React Native&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;Como o &lt;strong&gt;JavaScript&lt;/strong&gt; está em muitos lugares, mostrarei como você pode configurar o seu ESLint e Prettier em alguns deles. Agora só escolher o mundo que quer trabalhar e clicar em um dos links a seguir para absorver todo conhecimento que você precisa:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/collabcode/como-configurar-eslint-e-prettier-no-node-3kga"&gt;Como configurar ESLint e Prettier no Node?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Como configurar ESLint e Prettier no React? &lt;strong&gt;Escrevendo&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Como configurar ESLint e Prettier no Svelte? &lt;strong&gt;Escrevendo&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>react</category>
      <category>svelte</category>
    </item>
    <item>
      <title>Pare de chutar e aprenda como funciona o display: inline</title>
      <dc:creator>Marco Bruno 🤡</dc:creator>
      <pubDate>Tue, 29 Oct 2019 15:35:09 +0000</pubDate>
      <link>https://dev.to/collabcode/pare-de-chutar-e-aprenda-como-funciona-o-display-inline-35o</link>
      <guid>https://dev.to/collabcode/pare-de-chutar-e-aprenda-como-funciona-o-display-inline-35o</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/5PS6ku8NzIE"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Nas minhas últimas turmas do curso de &lt;em&gt;FrontEnd&lt;/em&gt; da Caelum, acabei mudando a explicação das propriedades &lt;code&gt;display: inline;&lt;/code&gt; &lt;code&gt;display: block;&lt;/code&gt; e &lt;code&gt;display: inline-block;&lt;/code&gt;. Nesse post, e nos que vou fazer em sequência, tentarei transformar essa nova explicação em texto. Bora lá para este desafio :-)&lt;/p&gt;

&lt;p&gt;Para deixar a explicação mais simples e feliz, vamos pensar que temos 3 tags &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; dentro de uma &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt;. Todas &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; vão ter 150px de altura (&lt;code&gt;height: 150px&lt;/code&gt;) e a largura vai ser de 33.333% (&lt;code&gt;width: 33.333%&lt;/code&gt;). Ah! A primeira &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; será da cor laranja (background-color: #FAA116), a segunda da cor verde (&lt;code&gt;background-color: #57C7C3&lt;/code&gt;) e a terceira, e última, da cor azul (&lt;code&gt;background-color: #3B97D3&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Se quiser ir acompanhando passo a passo as explicações, você pode copiar o &lt;em&gt;HTML&lt;/em&gt; e os &lt;em&gt;CSSs abaixo, ou acessar os códigos pelo *GitHub&lt;/em&gt; ou &lt;em&gt;CodePen&lt;/em&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  HTML (index.html)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"pt-br"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;
        Exemplo dos valores inline, block e inline-block
        da propriedade display;
    &lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"css/reset.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"css/displayInlineBlock.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;ul&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example-item example-item_first"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Primeiro&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example-item example-item_second"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Segundo&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example-item example-item_third"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Terceiro&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  CSS (reset.css)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;"Open Sans"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;ol&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;li&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;list-style&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  CSS (displayInlineBlock.css)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.example&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#FFF&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;    
&lt;span class="nc"&gt;.example-item&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;33.333%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;150px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_first&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#FAA116&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_second&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#57C7C3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_third&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#3B97D3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O resultado desse código no navegador deve ficar parecido com:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F7bp9vxg1dwg7w0qbar30.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F7bp9vxg1dwg7w0qbar30.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora que temos um código de exemplo, vamos estudar os 3 valores (&lt;code&gt;inline&lt;/code&gt;, &lt;code&gt;block&lt;/code&gt; e &lt;code&gt;inline-block&lt;/code&gt;) da propriedade &lt;code&gt;display&lt;/code&gt;. Para tentar não deixar uma explicação chata, colocarei alguns desafios de como posicionar os elementos na tela e a ideia é discutirmos sobre quais dos 3 valores podemos utilizar.&lt;/p&gt;

&lt;p&gt;Nosso primeiro desafio é colocar um elemento do lado do outro, dessa maneira:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ft95oekpj7vgwj2r5gnh5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ft95oekpj7vgwj2r5gnh5.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quando estava começando como Desenvolvedor &lt;em&gt;FrontEnd&lt;/em&gt;, meu primeiro chute era colocar nas 3 &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; a propriedade &lt;code&gt;display&lt;/code&gt; com o valor &lt;code&gt;inline&lt;/code&gt;. Depois era só rezar para que os elementos ficassem um do lado do outro conforme a imagem acima.&lt;/p&gt;

&lt;p&gt;Vamos implementar o &lt;code&gt;display: inline;&lt;/code&gt; para todas as tags &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; no nosso arquivo CSS (&lt;em&gt;displayInlineBlock.css&lt;/em&gt;), ele ficará assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.example&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#FFF&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;    
&lt;span class="nc"&gt;.example-item&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;33.333%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;150px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;inline&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Só adicionamos essa linha. */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_first&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#FAA116&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_second&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#57C7C3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_third&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#3B97D3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Após alterar o CSS, dê uma atualizada no seu navegador. Você verá que o resultado não foi muito feliz:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F5j73yfi93p24sknq2tq2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F5j73yfi93p24sknq2tq2.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mas tudo bem, esse é um comportamento esperado quando utilizamos o &lt;code&gt;display: inline;&lt;/code&gt;. Agora vamos dar uma pausa nos chutes e entender como funciona essa propriedade.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como funciona o display: inline; ?
&lt;/h2&gt;

&lt;p&gt;O valor inline permite que os elementos fiquem um do lado do outro -- essa é a parte simples de perceber.&lt;/p&gt;

&lt;p&gt;Nós temos definido uma largura e uma altura para todas as &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; em nosso código, mas as propriedades &lt;code&gt;width&lt;/code&gt; e &lt;code&gt;height&lt;/code&gt; não funcionaram. Esse também é um comportamento do &lt;code&gt;inline&lt;/code&gt;. Os elementos com &lt;code&gt;inline&lt;/code&gt; não aceitam largura (&lt;code&gt;width&lt;/code&gt;), nem altura (&lt;code&gt;height&lt;/code&gt;), o tamanho do elemento é definido pelo conteúdo que ele contém.&lt;/p&gt;

&lt;p&gt;Os dois pontos acima do comportamento que comentei, juntos são o básico que precisamos saber sobre o inline. Mas temos mais um ponto que precisamos dar uma olhada…&lt;/p&gt;

&lt;p&gt;…Nós não definimos nenhum respiro entre os elementos, mas tem algum tipo de margin entre eles. Poderia ser uma margin que o navegador colocou por conta própria mas, dado que nós temos um reset.css que está zerando e tirando a margin, padding e border de todos as tags, isso também não é possível.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por que tem esses espaços entre tags que possuem a propriedade display: inline?
&lt;/h2&gt;

&lt;p&gt;Esses espaços existem porque o elemento com &lt;code&gt;display: inline&lt;/code&gt;, ganha o comportamento de uma palavra. Além dos outros dois pontos que citamos acima.&lt;br&gt;
O que estou querendo dizer com &lt;strong&gt;"comportamento de uma palavra"&lt;/strong&gt;?&lt;br&gt;
Para explicar um pouco melhor o comportamento de uma palavra, vamos adicionar um &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; com os mesmo conteúdo das nossas tags &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; no nosso &lt;em&gt;HTML&lt;/em&gt;:&lt;/p&gt;
&lt;h4&gt;
  
  
  HTML (index.html)
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"pt-br"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;
        Exemplo dos valores inline, block e inline-block
        da propriedade display;
    &lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"css/reset.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"css/displayInlineBlock.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;ul&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example-item example-item_first"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Primeiro&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example-item example-item_second"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Segundo&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example-item example-item_third"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Terceiro&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;h1&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"title"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        Primeiro
        Segundo
        Terceiro
    &lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Repare que as palavras dentro do &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; estão separadas por um &lt;strong&gt;[ENTER]&lt;/strong&gt;, da mesma forma que cada tag &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; também está separada por um &lt;strong&gt;[ENTER]&lt;/strong&gt;. Depois de fazer a alteração na &lt;em&gt;index.html&lt;/em&gt;, atualize o navegador e você terá esse resultado:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fiugidws8tm5ceep9tkeg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fiugidws8tm5ceep9tkeg.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No nosso código, quando damos um &lt;strong&gt;[ENTER]&lt;/strong&gt; para separar as palavras dentro do &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;, essa quebra de linha não acontece no navegador pois ele troca o &lt;strong&gt;[ENTER]&lt;/strong&gt; que está no código por um &lt;strong&gt;[SPACE]&lt;/strong&gt;. Lembra que cada &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; ganhou o comportamento de uma palavra após colocarmos o &lt;code&gt;display: inline&lt;/code&gt; para eles? Sacou? O espaço entre as tags &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; existe pelo mesmo motivo que temos os espaços entre as palavras que o &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; contém.&lt;/p&gt;

&lt;p&gt;Você deve estar se perguntando como faz para tirar os espaços entre as tags &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt;. Agora que entendemos o comportamento é muito simples, é só tirar o &lt;strong&gt;[ENTER]&lt;/strong&gt; que está separando os elementos. Desta forma, nós transformaremos as três tags em uma palavra. Nosso código ficará assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"pt-br"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;
        Exemplo dos valores inline, block e inline-block
        da propriedade display;
    &lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"css/reset.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"css/displayInlineBlock.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;ul&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example-item example-item_first"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Primeiro&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example-item example-item_second"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Segundo&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example-item example-item_third"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Terceiro&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;    &lt;span class="nt"&gt;&amp;lt;h1&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"title"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        Primeiro
        Segundo
        Terceiro
    &lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Quando você atualizar o navegador o layout deve ficar assim:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fy13i0xzw5o87awvkgbwd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fy13i0xzw5o87awvkgbwd.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora estamos sem os espaços entre os elementos, mas infelizmente, o nosso código não ficou nada elegante, e quanto mais tags &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; tivermos mais difícil ficará a leitura do código. Uma outra maneira que a galera utiliza para remover os espaços tentando deixar o código um pouco mais elegante e mais fácil de ler, é utilizando comentários em vez de deixar as tags na mesma linha. Veja como o código deve ficar com os comentários:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"pt-br"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;
        Exemplo dos valores inline, block e inline-block
        da propriedade display;
    &lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"css/reset.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"css/displayInlineBlock.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;ul&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example-item example-item_first"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Primeiro&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;&lt;span class="c"&gt;&amp;lt;!--
 --&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example-item example-item_second"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Segundo&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;&lt;span class="c"&gt;&amp;lt;!--
 --&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example-item example-item_third"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Terceiro&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;&amp;lt;h1&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"title"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    Primeiro
    Segundo
    TerceiroVá até o navegador e atualize a página, você terá esse resultado:
  &lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O resultado desse código no navegador vai ser o mesmo de quando deixamos as tags &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; na mesma linha. Essas são duas formas de tirar o espaçamento entre as tags.&lt;/p&gt;

&lt;p&gt;Por nossas tags &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; estarem funcionando como palavras, nós conseguimos mexer com o posicionamento delas com a propriedade &lt;code&gt;text-align&lt;/code&gt;. Ela tem que ser usada no pai das tags &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt;, por exemplo se nós quisermos que elas fiquem centralizadas, basta colocarmos na &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt; a propriedade &lt;code&gt;text-align: center&lt;/code&gt;. Vamos implementar o &lt;code&gt;text-align: center&lt;/code&gt; para a &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt; no nosso &lt;em&gt;CSS&lt;/em&gt; (&lt;strong&gt;displayInlineBlock.css&lt;/strong&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.example&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#FFF&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Só adicionamos essa linha */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;33.333%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;150px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;inline&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_first&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#FAA116&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_second&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#57C7C3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_third&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#3B97D3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vá até o navegador e atualize a página, você terá esse resultado:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fx6fo0ukj46wp60n9a96c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fx6fo0ukj46wp60n9a96c.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Também podemos deixar nossas tags &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; posicionadas no lado direito. Para fazer isso é só mudar o text-align para right.&lt;/p&gt;

&lt;p&gt;Agora você não precisa mais chutar quando for usar o valor inline da propriedade display. Lembre-se de tirar o width e height do CSS já que essas propriedades não funcionam com display: inline. Nossos códigos finais tem que ficar assim:&lt;/p&gt;

&lt;h4&gt;
  
  
  HTML (index.html)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"pt-br"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;
        Exemplo dos valores inline, block e inline-block
        da propriedade display;
    &lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"css/reset.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"css/displayInlineBlock.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;ul&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example-item example-item_first"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Primeiro&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;&lt;span class="c"&gt;&amp;lt;!--
 --&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example-item example-item_second"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Segundo&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;&lt;span class="c"&gt;&amp;lt;!--
 --&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"example-item example-item_third"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Terceiro&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;  &lt;span class="nt"&gt;&amp;lt;h1&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"title"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    Primeiro
    Segundo
    Terceiro
  &lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  CSS (reset.css)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;"Open Sans"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;ol&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;li&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;list-style&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  CSS (displayInlineBlock.css)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.example&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#FFF&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;    
&lt;span class="nc"&gt;.example-item&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;inline&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_first&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#FAA116&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_second&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#57C7C3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.example-item_third&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#3B97D3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse código também está disponível no &lt;a href="https://github.com/MarcoBrunoBR/pare-de-chutar-e-aprenda-as-propriedades-CSS-de-alinhamento/tree/8611d5e9e569d8d67c56e3f220bada7aa3091974" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; e &lt;a href="https://codepen.io/MarcoBrunoBR/pen/NRKkAW?editors=1100#0" rel="noopener noreferrer"&gt;CodePen&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Infelizmente não temos uma forma decente de implementar o layout do nosso desafio usando o display: inline. Nos próximos posts explicarei como funciona o diplay: block e display: inline-block. Até lá.&lt;/p&gt;

</description>
      <category>css</category>
      <category>display</category>
      <category>position</category>
      <category>frontend</category>
    </item>
  </channel>
</rss>
