Cursos / Informática para Internet / Desenvolvimento Backend / Aula
Iniciando a construção do layout do blog iremos até o projeto disponibilizado na primeira aula e abriremos o arquivo index.html. Esse arquivo é uma página inicial, totalmente estática, de um blog.
Para prosseguir, devemos manter somente o conteúdo que não sofre alterações, por exemplo: cabeçalho, rodapé e barra lateral. Então, crie um arquivo na pasta layout nomeando-o de 'layout-blog.ejs' e adicione o código abaixo:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Blog do IMD</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container">
<a class="navbar-brand" href="#">Blod do IMD</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Alterna navegação">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item active">
<a class="nav-link" href="#">Home <span class="sr-only">(Página atual)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Clientes</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Serviços</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Contanto</a>
</li>
</ul>
</div>
</div>
</nav>
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item active" aria-current="page">Home</li>
</ol>
</nav>
<div class="container">
<div class="row">
<div class="col-md-8">
<%- body %>
</div>
<div class="col-md-4">
<div class="card mb-4">
<div class="card-header">
Busca
</div>
<div class="card-body">
<div class="input-group">
<input class="form-control" type="text" placeholder="Digite aqui...">
<button class="btn btn-secondary ml-2">Buscar</button>
</div>
</div>
</div>
<div class="card mb-4">
<div class="card-header">
Categorias
</div>
<div class="card-body">
<dib class="row">
<div class="col-lg-6">
<ul class="list-unstyled">
<li><a href="#">Web Design</a></li>
<li><a href="#">Javascript</a></li>
<li><a href="#">CSS</a></li>
</ul>
</div>
<div class="col-lg-6">
<ul class="list-unstyled">
<li><a href="#">Web Design</a></li>
<li><a href="#">Javascript</a></li>
<li><a href="#">CSS</a></li>
</ul>
</div>
</dib>
</div>
</div>
<div class="card mb-4">
<div class="card-header">
Autor
</div>
<div class="card-body">
<div class="text-center">
<img src="/static/imgs/avatar.jpg" class="rounded-circle" alt="">
</div>
<p class="py-3">Lorem ipsum dolor sit amet consectetur, adipisicing elit. Ex, sit architecto
tenetur, odit impedit quam corporis a libero assumenda suscipit fugiat in nesciunt labore
pariatur dolor ipsam sed ducimus nemo.</p>
</div>
</div>
</div>
</div>
</div>
<footer class="bg-dark py-3">
<p class="text-white text-center">Desenvolvido pelo IMD</p>
</footer>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"
integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"
integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
crossorigin="anonymous"></script>
</body>
</html>
Após o layout criado, é preciso criar uma rota para que quando o usuário acesse essa rota seja realizado algum processamento e renderizada a página. Então, na pasta de "rotas", crie um arquivo chamado index.rota.js e implemente o código abaixo:
const express = require('express')
const router = express.Router()
router.get('/', async (req, res) => {
res.render('pages/post', {layout: 'layout/layout-blog.ejs'})
})
module.exports = router
A rota anterior irá buscar um arquivo que ainda não existe na pasta pages. Então, é preciso criá-lo com o nome de ''posts.ejs e implementar o código que será injetado na marcação feita no layout. A implementação deve ser feita conforme se vê abaixo:
<%- contentFor('body') %>
<p> Conteúdo injetado! </p>
Apesar de ter criado a rota, o express ainda não pode enxergá-la. Então, no arquivo index.js inclua as linhas abaixo:
const indexRoute = require('./rotas/index.rota')
app.use('/', indexRoute)
Versão 5.3 - Todos os Direitos reservados