{"componentChunkName":"component---src-templates-single-template-tsx","path":"/criando-um-blog-com-vuejs-o-nuxtjs","result":{"data":{"site":{"siteMetadata":{"siteUrl":"https://blog.nandomoreira.dev","author":{"name":"Fernando Moreira","site":"https://nandomoreira.dev","social":{"disqus":"fernandomoreira"}}}},"markdownRemark":{"html":"<h2>Introdução</h2>\n<p>Todo mundo (devs) tá acostumado a criar blogs utilizando o <a href=\"https://jekyllrb.com\">Jekyll</a> e hospedá-los no <a href=\"https://pages.github.com/\">GitHub pages</a>. E se eu disser que existem muitas outras plataformas para criar projetos estáticos?</p>\n<p>Não que eu esteja dizendo que o Jekyll é uma ferramenta ruim, muito pelo contrário! O Jeyll abriu minha mente para o mundo dos <strong>geradores de sites estáticos</strong>.</p>\n<p>No site <a href=\"https://www.staticgen.com/\">staticgen</a> você encontrará uma série de projetos, aplicações e ferramentas, em várias linguagens diferentes e todas elas tem o mesmo proprósito: <strong>Fazer o build de um projeto estático</strong>, ou seja gerar HTML, CSS e JS final para o seu projeto.</p>\n<p>Nesse artigo nós iremos utilizar a tecnologia <a href=\"http://link\">Server Side Rendering (SSR)</a> ou Renderização do lado do servidor em pt-BR, e para isso usaremos o <strong><a href=\"https://vuejs.org/\">Vue.js</a></strong> com o <strong><a href=\"https://nuxtjs.org/\">Nuxt.js</a></strong>.</p>\n<h2>O que é Vue.JS?</h2>\n<p>O <strong>Vue.js</strong> é uma biblioteca (lib) javascript para o desenvolvimento de <strong>componentes reativos para interfaces web modernas</strong> <em>(Reactive Components for Modern Web Interfaces)</em>.</p>\n<h2>O que é o Nuxt.js?</h2>\n<p>Traduzindo de <a href=\"https://nuxtjs.org/guide\">nuxtjs.org/guide</a>: O <strong>Nuxt.js</strong> é uma estrutura para a criação de aplicativos do Universal Vue.js.</p>\n<h2>O que é SSR?</h2>\n<p>Vue.js é uma lib para construir aplicativos do lado do cliente. Por padrão, os componentes Vue produzem e manipulam DOM no navegador do cliente. No entanto, também é possível renderizar os mesmos componentes HTML direto do servidor e enviá-los para o navegador do cliente e continuar manipulando via javascript (SPA).</p>\n<p>Um aplicativo Vue.js criado pelo servidor também pode ser considerado <strong>\"isomórfico\"</strong> ou <strong>\"universal\"</strong>, no sentido de que a maioria do código do seu aplicativo é executado no servidor e no cliente.</p>\n<p>Utilizando SSR podemos manter a acessibilidade padrão do HTML e deixá-lo acessivel por bots como o Google e outros, juntando assim o melhor dos dois mundos, SEO + SPA.</p>\n<hr>\n<h2>Instalando</h2>\n<p>Para instalar o Nuxt.js você precisa dos seguintes pré-requisitos:</p>\n<ol>\n<li>Conhecimento em JavaScript</li>\n<li>Node v6 ou superior</li>\n<li>npm ou yarn</li>\n<li><a href=\"https://github.com/vuejs/vue-cli\">vue-cli</a> global: <code class=\"language-text\">npm install -g vue-cli</code></li>\n</ol>\n<blockquote>\n<p><strong>OBS:</strong> O <strong><a href=\"https://github.com/vuejs/vue-cli\">vue-cli</a></strong> é uma CLI simples para <em>scaffolding</em> de projetos Vue.js, ele vai fazer algumas perguntas como <strong>Nome do projeto</strong>, <strong>Descrição</strong> e <strong>Autor</strong>.</p>\n</blockquote>\n<p>Vamos seguir a mesma instalação feita no site do Nux.js em <a href=\"https://nuxtjs.org/guide/installation\">nuxtjs.org/guide/installation</a>.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-bash line-numbers\"><code class=\"language-bash\">vue init nuxt-community/starter-template blog-with-vuejs\n<span class=\"token builtin class-name\">cd</span> blog-with-vuejs/\n<span class=\"token function\">yarn</span> <span class=\"token comment\"># ou npm install</span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span></span></pre></div>\n<p>Os comandos acima foram executados no terminal, você pode executar todos de uma só vez concatenando com <code class=\"language-text\">&amp;&amp;</code> cada um deles.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-bash line-numbers\"><code class=\"language-bash\">vue init nuxt-community/starter-template blog-with-vuejs <span class=\"token punctuation\">\\</span>\n  <span class=\"token operator\">&amp;&amp;</span> <span class=\"token builtin class-name\">cd</span> blog-with-vuejs/ <span class=\"token punctuation\">\\</span>\n  <span class=\"token operator\">&amp;&amp;</span> <span class=\"token function\">yarn</span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span></span></pre></div>\n<p><strong>O que foi executado</strong></p>\n<ol>\n<li>Iniciamos um projeto chamado <code class=\"language-text\">blog-with-vuejs</code>;</li>\n<li>Entramos dentro do diretório com o comando: <code class=\"language-text\">cd blog-with-vuejs/</code>;</li>\n<li>Instalamos as dependencias do projeto com o comando: <code class=\"language-text\">yarn</code> (Você também pode executar <code class=\"language-text\">yarn install</code> ou <code class=\"language-text\">npm install</code>)</li>\n</ol>\n<hr>\n<h2>Estrutura de um projeto Nuxt.js</h2>\n<p>A estrutura padrão de um aplicativo <strong>Nuxt.js</strong> destina-se a fornecer um ótimo ponto de partida para pequenas e grandes aplicações. Claro, você é livre para organizar seu aplicativo, como quiser.</p>\n<table class=\"table table-bordered table-striped\">\n  <tbody>\n    <tr>\n      <td><strong>Diretório <code class=\"highlighter-rouge\">assets</code></strong></td>\n      <td>Esse diretório contém seus recursos não compilados, como Less, SASS, Stylus ou JavaScript.</td>\n    </tr>\n    <tr>\n      <td><strong>Diretório <code class=\"highlighter-rouge\">component</code></strong></td>\n      <td>Esse diretório contém seus componentes Vue. O Nuxt.js não carrega automaticamente esses componentes.</td>\n    </tr>\n    <tr>\n      <td><strong>Diretório <code class=\"highlighter-rouge\">layouts</code></strong></td>\n      <td>Esse diretório contém os layouts da sua aplicação. <br><em>Este diretório não pode ser renomeado.</em></td>\n    </tr>\n    <tr>\n      <td><strong>Diretório <code class=\"highlighter-rouge\">middleware</code></strong></td>\n      <td>Esse diretório contém o Middleware de sua aplicação. O Middleware permite que você defina funções personalizadas que podem ser executadas antes de\n        renderizar uma página ou um grupo de páginas (layouts).</td>\n    </tr>\n    <tr>\n      <td><strong>Diretório <code class=\"highlighter-rouge\">pages</code></strong></td>\n      <td>Esse diretório contém as views e rotas da sua aplicação. O framework lê todos os arquivos <code class=\"highlighter-rouge\">.vue</code> dentro desse\n        diretório e cria o router da aplicação. <br><em>Este diretório não pode ser renomeado.</em></td>\n    </tr>\n    <tr>\n      <td><strong>Diretório <code class=\"highlighter-rouge\">plugins</code></strong></td>\n      <td>Esse diretório contém os plugins JavaScript que deseja executar antes de instanciar o aplicativo Vue.js da raiz.</td>\n    </tr>\n    <tr>\n      <td><strong>Diretório <code class=\"highlighter-rouge\">static</code></strong></td>\n      <td>Esse diretório contém seus arquivos estáticos. Cada arquivo dentro deste diretório é mapeado para a raiz do seu site <code class=\"highlighter-rouge\">/</code>.\n        Exemplo: <code class=\"highlighter-rouge\">/static/robots.txt</code> é mapeado como <code class=\"highlighter-rouge\">http://seusite.com/robots.txt</code>\n        <br><em>Este diretório não pode ser renomeado.</em></td>\n    </tr>\n    <tr>\n      <td><strong>Diretório <code class=\"highlighter-rouge\">store</code></strong></td>\n      <td>Esse diretório contém seus arquivos do <strong>Vuex Store</strong>. A opção Vuex Store é implementada na estrutura do Nuxt.js. A criação de um\n        arquivo <code class=\"highlighter-rouge\">index.js</code> neste diretório habilita essa opção automaticamente. <br><em>Este diretório não pode ser\n          renomeado.</em></td>\n    </tr>\n    <tr>\n      <td><strong>Arquivo <code class=\"highlighter-rouge\">nuxt.config.js</code></strong></td>\n      <td>Esse arquivo contém a configuração personalizada do <strong>Nuxt.js</strong>. <br><em>Este arquivo não pode ser renomeado.</em></td>\n    </tr>\n    <tr>\n      <td><strong>Arquivo <code class=\"highlighter-rouge\">package.json</code></strong></td>\n      <td>Esse arquivo contém suas dependências e scripts da sua aplicação. <br><em>Este arquivo não pode ser renomeado.</em></td>\n    </tr>\n  </tbody>\n</table>\n<blockquote>\n<p>Veja na <a href=\"https://nuxtjs.org/guide/directory-structure\">documentação do Nuxt.js</a> para saber mais informações sobre esses diretórios e arquivos que eu citei acima.</p>\n</blockquote>\n<hr>\n<h2>Executando</h2>\n<p>Agora vamos rodar o projeto que foi criado pelo Vue-cli em desenvolvimento, para isso basta executar o comando <code class=\"language-text\">yarn dev</code> ou <code class=\"language-text\">npm run dev</code> em seu terminal.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-bash line-numbers\"><code class=\"language-bash\">$ <span class=\"token function\">yarn</span> dev <span class=\"token comment\"># ou npm run dev</span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span></span></pre></div>\n<p>Basta abrir: <a href=\"http://localhost:3000\">localhost:3000</a></p>\n<p><figure class=\"gatsby-resp-image-figure\" style=\"\">\n    <span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 1000px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 62.066974595842964%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsSAAALEgHS3X78AAABOklEQVQoz62Ty26CQBSG58l0213fAl3ZvkMfoOvqorXppouGTZOy7BJU0h0bCCHcEhWEIgKDMKfDzVAbW208yZcc5j/nZ65oNp11ZUV51jTtwXGcsWVZY9M0T4L23Ou6/sLzfAepqjqAM4UkSQNE3Zn6G1O2hyCEbH/R48JAUZQeMgyjXxtmpApo8y32tBpS/wxkWe4jugc/DKteAnmel/ntxyuM3t/KvBhr1/xpuCuEqsnMPLgc3sAFcw36alEZAWmbHjfDINyA4/qw9D2YL12YL1zwgjWs/ADWVDt6ho0hTtOy8TMIIdzEEEYxJAmmeQRxgk9fchNplkGYxBAlCWCcts7nwJLpKTO1gAuhgW7+jqyVN+zVxrVhD9m2fbaLTR/JFeI4rjOZTB4pQ8roPwiCcCeK4hPLst0vFk165aNwoIgAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n        <source\n          srcset=\"/static/1e5670a4c63ac08117708498304d46fa/bc904/criando-um-blog-com-javascript-vuejs-localhost.webp 250w,\n/static/1e5670a4c63ac08117708498304d46fa/4be29/criando-um-blog-com-javascript-vuejs-localhost.webp 500w,\n/static/1e5670a4c63ac08117708498304d46fa/03f31/criando-um-blog-com-javascript-vuejs-localhost.webp 1000w,\n/static/1e5670a4c63ac08117708498304d46fa/9579c/criando-um-blog-com-javascript-vuejs-localhost.webp 1500w,\n/static/1e5670a4c63ac08117708498304d46fa/b1218/criando-um-blog-com-javascript-vuejs-localhost.webp 2000w,\n/static/1e5670a4c63ac08117708498304d46fa/bcaa8/criando-um-blog-com-javascript-vuejs-localhost.webp 3464w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/webp\"\n        />\n        <source\n          srcset=\"/static/1e5670a4c63ac08117708498304d46fa/43fa5/criando-um-blog-com-javascript-vuejs-localhost.png 250w,\n/static/1e5670a4c63ac08117708498304d46fa/c6e3d/criando-um-blog-com-javascript-vuejs-localhost.png 500w,\n/static/1e5670a4c63ac08117708498304d46fa/da8b6/criando-um-blog-com-javascript-vuejs-localhost.png 1000w,\n/static/1e5670a4c63ac08117708498304d46fa/2e9ed/criando-um-blog-com-javascript-vuejs-localhost.png 1500w,\n/static/1e5670a4c63ac08117708498304d46fa/9fabd/criando-um-blog-com-javascript-vuejs-localhost.png 2000w,\n/static/1e5670a4c63ac08117708498304d46fa/6437d/criando-um-blog-com-javascript-vuejs-localhost.png 3464w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/png\"\n        />\n        <img\n          class=\"gatsby-resp-image-image\"\n          src=\"/static/1e5670a4c63ac08117708498304d46fa/da8b6/criando-um-blog-com-javascript-vuejs-localhost.png\"\n          alt=\"Imagem mostrando o link localhost:3000\"\n          title=\"Imagem mostrando o link localhost:3000\"\n          loading=\"lazy\"\n          style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        />\n      </picture>\n    </span>\n    <figcaption class=\"gatsby-resp-image-figcaption\">Imagem mostrando o link localhost:3000</figcaption>\n  </figure></p>\n<p>Se você visualizar o código fonte você verá todo o HTML renderizado pelo Nuxt, algo como isso:</p>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-html line-numbers\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>body</span> <span class=\"token attr-name\">data-n-head</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span><span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>__nuxt<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">data-server-rendered</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>true<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span>\n      <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>nuxt-progress<span class=\"token punctuation\">\"</span></span><span class=\"token style-attr language-css\"><span class=\"token attr-name\">\n      <span class=\"token attr-name\">style</span></span><span class=\"token punctuation\">=\"</span><span class=\"token attr-value\"><span class=\"token property\">width</span><span class=\"token punctuation\">:</span>0%<span class=\"token punctuation\">;</span><span class=\"token property\">height</span><span class=\"token punctuation\">:</span>2px<span class=\"token punctuation\">;</span><span class=\"token property\">background-color</span><span class=\"token punctuation\">:</span>#3B8070<span class=\"token punctuation\">;</span><span class=\"token property\">opacity</span><span class=\"token punctuation\">:</span>0<span class=\"token punctuation\">;</span></span><span class=\"token punctuation\">\"</span></span>\n    <span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span><span class=\"token punctuation\">></span></span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>section</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>container<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span><span class=\"token punctuation\">></span></span>\n          <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>VueToNuxtLogo<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n            <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Triangle Triangle--two<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n            <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Triangle Triangle--one<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n            <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Triangle Triangle--three<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n            <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Triangle Triangle--four<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n          <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n          <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>h1</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>title<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>blog-with-vuejs<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>h1</span><span class=\"token punctuation\">></span></span>\n          <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>h2</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>subtitle<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>Nuxt.js project<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>h2</span><span class=\"token punctuation\">></span></span>\n          <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>links<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n            <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>a</span> <span class=\"token attr-name\">href</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>https://nuxtjs.org/<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">target</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>_blank<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>button--green<span class=\"token punctuation\">\"</span></span>\n              <span class=\"token punctuation\">></span></span>Documentation<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>a</span>\n            <span class=\"token punctuation\">></span></span>\n            <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>a</span>\n              <span class=\"token attr-name\">href</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>https://github.com/nuxt/nuxt.js<span class=\"token punctuation\">\"</span></span>\n              <span class=\"token attr-name\">target</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>_blank<span class=\"token punctuation\">\"</span></span>\n              <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>button--grey<span class=\"token punctuation\">\"</span></span>\n              <span class=\"token punctuation\">></span></span>GitHub<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>a</span>\n            <span class=\"token punctuation\">></span></span>\n          <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>section</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>text/javascript<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"><span class=\"token language-javascript\">\n    window<span class=\"token punctuation\">.</span>__NUXT__ <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n      layout<span class=\"token operator\">:</span> <span class=\"token string\">'default'</span><span class=\"token punctuation\">,</span>\n      data<span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n      error<span class=\"token operator\">:</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">,</span>\n      state<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n      serverRendered<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span>\n  </span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>/_nuxt/manifest.6577d27b1c69002c3e9a.js<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">defer</span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>/_nuxt/common.65aa6f5764a5ec5e7c56.js<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">defer</span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>/_nuxt/app.9a3a71120f4feff88235.js<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">defer</span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>body</span><span class=\"token punctuation\">></span></span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></pre></div>\n<p>Note que dentro da tag <code class=\"language-text\">&lt;body&gt;</code> não tem apenas o famoso div <code class=\"language-text\">&lt;div id=&quot;app&quot;&gt;&lt;/div&gt;</code> como estamos acostumados a ver em SPA`s feitas com Vue e esse é o maior ponto positivo de um app que usa <strong>SSR</strong>.</p>\n<hr>\n<p>See you ✌️</p>\n<p>/ end</p>","excerpt":"Introdução Todo mundo (devs) tá acostumado a criar blogs utilizando o Jekyll e hospedá-los no GitHub pages. E se eu disser que existem muitas outras…","timeToRead":6,"frontmatter":{"category":["vue"],"date":"há 9 anos","datePublished":"2017-11-05T00:00:00.000Z","description":"Essa é a parte 1 de uma série onde iremos usar a tecnologia SSR (Server Side Rendering) para criar um blog e no final hospeda-lo no GitHub pages e no Netlify.","path":"/criando-um-blog-com-vuejs-o-nuxtjs","tags":["vue","javascript"],"title":"Criando um blog com Vue.js e Nuxt.js","image":{"publicURL":"/static/criando-um-blog-com-javascript-vuejs-ebd5c2aa1260dd12581493938d2f9a22.jpg","name":"criando-um-blog-com-javascript-vuejs"}},"fields":{"readingTime":{"words":974}}}},"pageContext":{}}}