freeCodeCamp/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/use-a-template-engines-powe...

2.8 KiB

id title challengeType forumTopicId dashedName
5895f70bf9fc0f352b528e64 Usar as capacidades de um mecanismo de modelos 2 301567 use-a-template-engines-powers

--description--

Uma das maiores características do uso de um mecanismo de modelos (template engine) é poder passar variáveis do servidor para o arquivo de modelo antes de renderizá-lo em HTML.

No seu arquivo Pug, você pode usar uma variável fazendo referência ao nome da variável como #{variable_name} em linha com outro texto em um elemento ou usando um sinal de igual no elemento sem um espaço, como em p=variable_name, que atribui o valor da variável ao texto do elemento p.

O Pug tem a ver com usar o espaço em branco e as tabulações para mostrar elementos aninhados e diminuir a quantidade de código necessária para fazer um belo site. Leia a documentação do Pug para obter mais informações sobre uso e sintaxe.

Exemplo:

<!--Typing this using Pug-->
head
   script(type='text/javascript').
     if (foo) bar(1 + 5);
 body
   if youAreUsingPug
       p You are amazing
     else
       p Get on it!

<!--will lead to creating this code-->
 <head>
   <script type="text/javascript">
     if (foo) bar(1 + 5);
   </script>
 </head>
 <body>
   <p>You are amazing</p>
 </body>

Olhando para nosso arquivo pug index.pug, incluído em seu projeto, podemos ver as variáveis title e message.

Para passar esses dados de nosso servidor, você precisará adicionar um objeto como um segundo argumento para res.render com as variáveis e seus valores. Para exemplificar, passe este objeto e configure as variáveis para sua visualização do índice: {title: 'Hello', message: 'Please login'}

Deve se parecer como o seguinte: res.render(process.cwd() + '/views/pug/index', {title: 'Hello', message: 'Please login'}); Em seguida, atualize a página e você deve ver esses valores renderizados em sua visualização no ponto correto conforme descrito no arquivo index.pug!

Envie sua página quando você achar que ela está certa. Se você estiver encontrando erros, pode conferir o projeto concluído até este ponto.

--hints--

O Pug deve renderizar as variáveis corretamente.

(getUserInput) =>
  $.get(getUserInput('url') + '/').then(
    (data) => {
      assert.match(
        data,
        /pug-variable("|')>Please login/gi,
        'Your projects home page should now be rendered by pug with the projects .pug file unaltered'
      );
    },
    (xhr) => {
      throw new Error(xhr.statusText);
    }
  );

--solutions--

/**
  Backend challenges don't need solutions, 
  because they would need to be tested against a full working project. 
  Please check our contributing guidelines to learn more.
*/