<?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>Forem: Richard Manzoli</title>
    <description>The latest articles on Forem by Richard Manzoli (@manzoliric).</description>
    <link>https://forem.com/manzoliric</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%2F581985%2F55c1e128-394e-4329-9541-0aa6cae7c716.jpg</url>
      <title>Forem: Richard Manzoli</title>
      <link>https://forem.com/manzoliric</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/manzoliric"/>
    <language>en</language>
    <item>
      <title>Extensões do Visual Studio Code para um Front-end</title>
      <dc:creator>Richard Manzoli</dc:creator>
      <pubDate>Wed, 13 Sep 2023 01:36:17 +0000</pubDate>
      <link>https://forem.com/manzoliric/extensoes-do-visual-studio-code-para-um-front-end-2pgk</link>
      <guid>https://forem.com/manzoliric/extensoes-do-visual-studio-code-para-um-front-end-2pgk</guid>
      <description>&lt;p&gt;Hoje vim trazer extensões do Visual Studio Code que eu uso e que me ajudam muito no dia a dia, esse post foi inspirado no post &lt;a href="https://dev.to/laryssa/extensoes-do-visual-studio-code-para-um-sre-2nj5"&gt;Extensões do Visual Studio Code para um SRE&lt;/a&gt; da &lt;a href="https://dev.to/laryssa"&gt;Laryssa Araujo&lt;/a&gt; onde ela mostra as ferramentas que ela usa no dia a dia como uma SRE.&lt;/p&gt;

&lt;p&gt;Não vou falar sobre todas as extensões que eu tenho instalado aqui, tenho algumas para mexer com Elixir/Phoenix, Docker e etc... vou falar apenas das que eu mais uso e que me ajudam no dia a dia como Front-end.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-rename-tag"&gt;Auto Rename Tag&lt;/a&gt;: Essa extensão é muito útil para quem trabalha com HTML, ela renomeia a tag de abertura e fechamento automaticamente, evitando que você tenha que ficar renomeando as tags manualmente.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker"&gt;Code Spell Checker&lt;/a&gt;: Essa extensão é muito útil para corrigir erros de digitação, ela verifica a palavra e mostra se existe algum erro de digitação, exemplo quando escrevemos &lt;code&gt;lenght&lt;/code&gt; ao invés de &lt;code&gt;length&lt;/code&gt;, que acontece muito comigo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker-portuguese-brazilian"&gt;Brazilian Portuguese - Code Spell Checker&lt;/a&gt;: Essa extensão é uma extensão da extensão anterior, ela adiciona um dicionário de palavras em português, para que a extensão anterior possa verificar as palavras em português.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=SimonSiefke.svg-preview"&gt;Svg Preview&lt;/a&gt;: Essa extensão mostra uma prévia do SVG direto no VSCode, assim você não precisa abrir o arquivo no navegador para ver o svg.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=Equinusocio.vsc-community-material-theme"&gt;Community Material Theme&lt;/a&gt;: Essa extensão é apenas o tema que eu mais gosto, gosto de usar a versão &lt;code&gt;Material Theme Darker&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=PKief.material-icon-theme"&gt;Material Icon Theme&lt;/a&gt;: Essa extensão é apenas o tema de ícones que eu mais gosto.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=wix.vscode-import-cost"&gt;Import Cost&lt;/a&gt;: Essa extensão mostra o tamanho do pacote que você está importando, assim você pode ver se o pacote é muito grande e se vale a pena usar ele.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens"&gt;Git Lens&lt;/a&gt;: Essa extensão é bem completa, tem muita coisa, mas para falar a verdade eu uso muito ela para verificar quem fez a última alteração no arquivo direto no VSCode e também conseguir ir direto para o arquivo no GitHub ou Pull Request.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=GitHub.copilot"&gt;GitHub Copilot&lt;/a&gt;: Essa extensão não tem muito que dizer, é o famoso GitHub Copilot, tem me ajudado bastante a criar códigos que são mais repetitivos,e também funciona muito bem para documentação e comentários.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig"&gt;EditorConfig for VS Code&lt;/a&gt;: Essa extensão é muito útil para quem trabalha em projetos com várias pessoas, ela ajuda a manter o padrão de código, como por exemplo, &lt;code&gt;indent_style&lt;/code&gt;, &lt;code&gt;indent_size&lt;/code&gt;, &lt;code&gt;insert_final_newline&lt;/code&gt; e etc... criamos um arquivo &lt;code&gt;.editorconfig&lt;/code&gt; na raiz do projeto e configuramos o que queremos que seja o padrão.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>frontend</category>
      <category>vscode</category>
    </item>
    <item>
      <title>Minha história de suporte técnico a desenvolvedor front-end</title>
      <dc:creator>Richard Manzoli</dc:creator>
      <pubDate>Thu, 24 Aug 2023 13:10:39 +0000</pubDate>
      <link>https://forem.com/manzoliric/minha-historia-de-suporte-tecnico-a-desenvolvedor-front-end-1khi</link>
      <guid>https://forem.com/manzoliric/minha-historia-de-suporte-tecnico-a-desenvolvedor-front-end-1khi</guid>
      <description>&lt;p&gt;E ai, hoje vim contar um pouco como foi o meu começo como desenvolvedor front-end, como eu comecei a me interessar por programação e como foi a minha primeira oportunidade, espero que gostem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExcXZyNWhtMzJsOHR2ZHpzcGpsYjFpeDJ5bTJ1a3NhbHpsazNpMHp5NCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/IF0sPM4TThQPTbGrix/giphy-downsized-large.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExcXZyNWhtMzJsOHR2ZHpzcGpsYjFpeDJ5bTJ1a3NhbHpsazNpMHp5NCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/IF0sPM4TThQPTbGrix/giphy-downsized-large.gif" width="540" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1 - O Começo
&lt;/h2&gt;

&lt;p&gt;Tudo que começou quando eu estava trabalhando como suporte em uma empresa de T.I, essa empresa prestava serviços como formatação de computadores, configuração de redes, limpeza física de computadores e tudo que um suporte técnico faz, era um trabalho relativamente chato, eu morava em Itaquera, Zona Leste de SP e tinha que atender clientes em Interlagos, Berrini, Paulista, para quem conhece SP, sabe o tempo que é a demora para chegar nesses lugares vindo da Zona Leste.&lt;br&gt;
Após uns dois anos trabalhando como suporte, eu comecei a me interessar por redes e queria seguir como Analista de redes, mas em toda entrevista que eu ia, eu não passava, porque pelo menos na época, precisava de uma faculdade ou de certificação para trabalhar com isso e eu não tinha dinheiro para arcar com isso.&lt;/p&gt;

&lt;h2&gt;
  
  
  2 - Como me interessei por programação
&lt;/h2&gt;

&lt;p&gt;Até que um dia, fui em um cliente formatar alguns computadores e essa empresa era uma agência que tinha alguns desenvolvedores trabalhando e acabei curtindo o que eu vi, pessoal trabalhando no Macbook, tomando um café, pessoal de chinelo e com tattoo (na época eu tinha tinha tattoo na mão e isso me tratava em algumas entrevista como Analista de redes) e foi ali que percebi que aquilo ali poderia ser algo legal de se fazer, estava bem cansado de ter que ficar indo de cliente a cliente formatando computadores, então comecei a ficar olhando o que eles estavam fazendo nos computadores, comecei a perguntar o que era aquilo e lembro até hoje que um desenvolvedor me falou para estudar HTMl, CSS e Javascript e foi ali que tudo começou.&lt;/p&gt;

&lt;h2&gt;
  
  
  3 - Como comecei a estudar
&lt;/h2&gt;

&lt;p&gt;Na mesma semana comecei a pesquisar sobre o mundo de programação e vi o que ele tinha me falado sobre HTML, CSS e Javascript, significava "Front-end", então comecei a fazer o que todo mundo fazer, estudar sobre HTML, CSS e Javascript, comecei com o básico, criando HTML sem estilo nenhum, apenas colocando tags e textos como se fosse um jornal, depois fui colocando cores nos textos e fiquei nisso pelo menos uns 3 meses, sem usar Javascript, porque eu não conseguia entender lógica de programação de jeito nenhum, aquilo não entrava na minha cabeça.&lt;br&gt;
Até que ganhei um curso num sorteio do Fernando Daciuk, o nome do curso chama "Curso JavaScript Ninja" ele foi o curso que me fez entender Javascript e lógica de programação, a didática do Daciuk é incrível e devo muito a esse curso e a esse sorteio.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/TJawtKM6OCKkvwCIqX/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/TJawtKM6OCKkvwCIqX/giphy.gif" width="380" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4 - Fase de reprovar em entrevistas (reprovei numas 10)
&lt;/h2&gt;

&lt;p&gt;Após ter ficado quase 1 ano estudando programação em paralelo com meu trabalho como suporte, comecei a mandar currículos para todas as vagas que eu via no InfoJobs e Catho (não conhecia o Linkedin), entrava em site de empresas, pegava o contato da empresa e mandava meu currículo explicando que estava procurando a primeira oportunidade como front-end, algumas pessoas responderam e fui acabei marcando algumas entrevista e acabei indo mal em TODAS, na época o pessoal pedia muito Grunt, Bootstrap, Wordpress, JQuery e eu não sabia nada disso, eu sabia HTML, CSS e um pouco de Javascript, mas foi ai que ter feito entrevista mesmo sem passar, me ajudou muito, porque eu comecei a entender o que o mercado pedia e comecei a estudar essas tecnologias para passar nas próximas.&lt;/p&gt;

&lt;h2&gt;
  
  
  5 - Primeira oportunidade
&lt;/h2&gt;

&lt;p&gt;Após ter ficado mais uns 6 meses indo em entrevistas, pegando feedback, acabei arrumando meu primeiro emprego como Desenvolvedor PHP, eu nem sabia PHP, mas o pessoal na época queria alguém que tivesse conhecimento em Wordpress e por incrível que pareça, eu consegua mexer um pouco em Wordpress sem saber PHP, dentro dessa empresa eu comecei a realmente entender o que era programação, mexer em plugins com PHP dentro do Wordpress, fluxo de local -&amp;gt; staging -&amp;gt; produção, testes e tudo mais, consegui evoluir bastante nessa primeira oportunidade, comecei a trabalhar com Laravel na época que foi muito bom para o meu aprendizado e entender que nem tudo a gente fazia com na mão, tinha ferramentas para nos auxiliar.&lt;br&gt;
Até que um dia que essa empresa faliu e eu acabei sendo demitido, mas por sorte do destino, a outra empresa que assumiu os projetos da antiga empresa, viu que eu era commiter do código e acabou me contratando, sorte do destino, acredito.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/Dh5q0sShxgp13DwrvG/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/Dh5q0sShxgp13DwrvG/giphy.gif" width="600" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6 - Segunda oportunidade (a que me fez realmente entender o que era programação)
&lt;/h2&gt;

&lt;p&gt;Depois de ter sido contratado graças aos meus commits, essa empresa começou a me pedir para estudar ReactJS, Sass, Webpack e foi ai que realmente eu comecei a estudar me interessar mais por front-end, comecei a criar sites e landing pages usando ReactJS, comecei a realmente entender sobre Javascript (sim, eu sabia mais ReactJS do que javascript), precisava entender mais sobre o que era o &lt;code&gt;this&lt;/code&gt;, &lt;code&gt;class&lt;/code&gt;, &lt;code&gt;loops&lt;/code&gt; e etc...&lt;br&gt;
Foi uma época punk, eu era o único front-end do time, um estagiário/junior que não sabia Javascript, mexendo com ReactJS, fiz muita cagada (desculpa Bianca), mas também aprendi muito na marra mesmo, porque eu não tinha ninguém para me ajudar (o que foi bem ruim), eu tinha que me virar, pesquisar, ler documentação, trabalhar e chegar me casa ja estudando para entender melhor sobre os assuntos.&lt;/p&gt;

&lt;h2&gt;
  
  
  7 - Final
&lt;/h2&gt;

&lt;p&gt;Isso é só o começo que queria contar, queria mostrar que nem tudo tem um caminho certo, seu primeiro emprego pode ser diferente de onde você quer chegar no futuro e esta tudo bem, mas acho que já ficou bem grande, esse é apenas o começo da minha carreira como desenvolvedor, mas como ficou bem grande, acho que vou parar por aqui e quem sabe escrevo mais um pouco sobre o que aconteceu depois disso, como cheguei a ser senior e etc...&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Lidando com erros no Nuxt 2</title>
      <dc:creator>Richard Manzoli</dc:creator>
      <pubDate>Wed, 23 Aug 2023 11:12:29 +0000</pubDate>
      <link>https://forem.com/manzoliric/lidando-com-erros-no-nuxt-2-2197</link>
      <guid>https://forem.com/manzoliric/lidando-com-erros-no-nuxt-2-2197</guid>
      <description>&lt;p&gt;E aí, hoje estou aqui para falar um pouco sobre como lidar com erros no Nuxt 2, utilizando o layout de erros.&lt;/p&gt;

&lt;p&gt;Já se deparou com essa tela de erro quando o usuário acessa uma rota que não existe? &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404"&gt;404 Not Found&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---ERT0ZSx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b1r1b9jztznptclv0h7i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---ERT0ZSx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b1r1b9jztznptclv0h7i.png" alt="Erro de rota não encontrada" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Podemos lidar com esse tipo de erro e muitos outros usando um layout do Nuxt chamado &lt;code&gt;error&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  1 - Criando o layout de erro
&lt;/h2&gt;

&lt;p&gt;Dentro da pasta &lt;code&gt;/layouts&lt;/code&gt;, vamos criar um arquivo chamado &lt;code&gt;error.vue&lt;/code&gt; com uma estrutura básica para visualizarmos imediatamente a tela de erro. Com isso, teremos acesso a uma página diferente, mais amigável e descritiva para o usuário.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"error-container"&lt;/span&gt;&lt;span class="nt"&gt;&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;"error__code"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;404&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"error__message"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Oops! Parece que você se perdeu.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"error__message"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      A página que você está procurando não foi encontrada.
    &lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"error__back-link"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Voltar para a página inicial&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;style&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"scss"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nv"&gt;$font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Arial&lt;/span&gt;&lt;span class="o"&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="nv"&gt;$error-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mh"&gt;#e74c3c&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$text-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mh"&gt;#333&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$link-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mh"&gt;#3498db&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="nv"&gt;$font-family&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="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;justify-content&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="nl"&gt;align-items&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="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100vh&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.error-container&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="k"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nt"&gt;__code&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;6rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;bold&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="nv"&gt;$error-color&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="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nt"&gt;__message&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="mi"&gt;.5rem&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="nv"&gt;$text-color&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;10px&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="k"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nt"&gt;__back-link&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="nv"&gt;$link-color&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;text-decoration&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;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;style&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KtdRlZMs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/da7unadn40ixt9m0wvk3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KtdRlZMs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/da7unadn40ixt9m0wvk3.png" alt="Tela de erro - status 400" width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2 - Lidando com erros
&lt;/h2&gt;

&lt;p&gt;Uma característica interessante desse layout de erro é que temos uma prop chamada &lt;code&gt;error&lt;/code&gt; que é sempre enviada. No primeiro exemplo, fixamos um 404 e textos como exemplo, mas podemos tornar isso dinâmico com essa prop.&lt;/p&gt;

&lt;p&gt;Adicionando o script abaixo já conseguimos usar o computed &lt;code&gt;statusCode&lt;/code&gt; para definir um titulo e lidar com condicionais para a página e usar no lugar do &lt;code&gt;404&lt;/code&gt; estático e também ajustar os textos para diferentes erros caso exista.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;// Ajustar o template
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"error-container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;v-if=&lt;/span&gt;&lt;span class="s"&gt;"statusCode === 404"&lt;/span&gt;&lt;span class="nt"&gt;&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;"error__code"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;statusCode&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"error__message"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Oops! Parece que você se perdeu.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"error__message"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        A página que você está procurando não foi encontrada.
      &lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"error__back-link"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Voltar para a página inicial&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;v-else&lt;/span&gt;&lt;span class="nt"&gt;&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;"error__code"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;statusCode&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"error__message"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Oops! Parece que tivemos um problema.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"error__message"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Atualize a página para tentar novamente&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

// Adicionar esse script ao arquivo error.vue
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;props&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Object&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;computed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;statusCode&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="k"&gt;this&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="nx"&gt;statusCode&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;head&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="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;title&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;statusCode&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="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ew8jI_II--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/82w0xvvmjh6537ms25fk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ew8jI_II--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/82w0xvvmjh6537ms25fk.png" alt="Tela de erro - status 500" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;É isso! Com um simples layout de erro, conseguimos lidar com o erro &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404"&gt;404 Status Code&lt;/a&gt; e com o &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500"&gt;500 Status Code&lt;/a&gt;.&lt;br&gt;
Podemos melhorar essa página usando componentes para lidar com cada erro ou utilizar computed properties no lugar dos textos em vez de usar condicionais, fica a critério.&lt;/p&gt;

&lt;p&gt;Abraços e até a próxima! 🌵&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
