Angular 6 e Firebase — Desenvolvendo um portfólio (parte 2)

Kheronn K. Machado
5 min readAug 27, 2018

Template e ajustes iniciais

Para o desenvolvimento da aplicação, vamos utilizar um layout pronto no intuito de realizarmos poucas modificações no design (não consegui pensar em outra desculpa).

Escolhi o template do site startbootsrap. No endereço a seguir há uma galeria com alguns modelos:

https://startbootstrap.com/template-categories/portfolios/

Link do Template escolhido (Freelancer)

https://github.com/BlackrockDigital/startbootstrap-freelancer/archive/gh-pages.zip

Basicamente o que eu fiz foi indicar no meu arquivo index.html quais são os arquivos de estilos, atualizando os apontamentos corretamente. Isso garante que toda a aplicação utilizará os mesmos modelos. Também coloquei o endereço dos scripts para o funcionamento de alguns recursos do bootstrap.

Acesse o repositório e clone o projeto:

https://github.com/kheronn/portfolio

Componentes e Rotas

Tudo no angular é considerado componente. Desenvolver seguindo esse princípio facilita o desenvolvimento e a manutenção do código.

Para criação de componentes utilizando cli, digitamos no terminal:

ng generate component nome-component

ou na forma abreviada.

ng g c nome-component

Vamos criar inicialmente dois componentes. No terminal digite:

ng g c homeng g c menu-principal

Após a execução dos comandos, observe na estrutura de pastas do projeto que um diretório com 4 arquivos foram criado para cada componente.

home.component.html

Arquivo HTML onde definimos o template.

home.component.scss

Arquivo para estilizar os componentes usando CSS.

home.component.spec.ts

Para realização de testes unitários

home.component.ts

Classe onde codificamos os métodos, atributos do componente e toda a lógica necessária.

A mesma lógica serve para o menu-principal.

A home será o ponto de entrada da aplicação. Logo devemos configurar uma rota que nos permita acessar a partir da raiz (/) nossa componente principal.

No arquivo app.component.html limpe o código gerado na criação do projeto, deixando somente a tag

<router-outlet></router-outlet>

app.component.html

No arquivo app-routing.module.ts vamos definir a rota, passando no array de configurações Routes o caminho e o componente relacionado (linhas 5 a 9).

No arquivo menu-principal.html, vamos colocar as tags de navegação. O arquivo fica assim:

<nav class=”navbar navbar-expand-lg bg-secondary fixed-top text-uppercase” id=”mainNav”>
<div class=”container”>
<a class=”navbar-brand js-scroll-trigger”
routerLink=”/” href=””>Portfólio </a>
<button class=”navbar-toggler navbar-toggler-right text-uppercase bg-primary text-white rounded” type=”button” data-toggle=”collapse”
data-target=”#navbarResponsive” aria-controls=”navbarResponsive” aria-expanded=”false” aria-label=”Toggle navigation”>
Menu
<i class=”fa fa-bars”></i>
</button>
<div class=”collapse navbar-collapse” id=”navbarResponsive”>
<ul class=”navbar-nav ml-auto”>
<li class=”nav-item mx-0 mx-lg-1">
<a class=”nav-link py-3 px-0 px-lg-3 rounded js-scroll-trigger” href=”#portfolio”>Portfolio</a>
</li>
<li class=”nav-item mx-0 mx-lg-1">
<a class=”nav-link py-3 px-0 px-lg-3 rounded js-scroll-trigger” routerLink=”/admin” href=”#”>Painel</a>
</li>
<li class=”nav-item mx-0 mx-lg-1">
<a class=”nav-link py-3 px-0 px-lg-3 rounded js-scroll-trigger” routerLink=”/contato” href=”#”>Contato</a>
</ul>
</div>
</div>
</nav>

menu-principal.html

O que fazemos foi definir os apontamentos utilizando o atributo routerLink nas tags <a> do menu. O primeiro routerLink aponta justamente para a entrada da aplicação “/”.

Enquanto que os links painel e admin apontam para /admin e /contato.

Essas rotas serão criadas posteriormente.

Ao abrir o arquivo menu-principal.component.ts, notamos o decorator @Component que marca a classe como um componente angular. Vamos utilizar o seletor dessa classe para chamar nosso menu em todas as páginas da aplicação.

Na class app.component.html, incluímos o seletor do menu assim;

<app-menu-principal></app-menu-principal>
<router-outlet></router-outlet>

Finalmente, vamos deixar nossa página home.component.html com elementos básicos.

Após a tag body, ficou assim:

<!-- Header -->
<header class=”masthead bg-primary text-white text-center”>
<div class=”container”>
<img class=”img-profile img-fluid mb-5 d-block mx-auto” src=”assets/img/eu.jpg” alt=””>
<h1 class=”text-uppercase mb-0">Kheronn Khennedy Machado</h1>
<hr class=”star-light”>
<h2 class=”font-weight-light mb-0">Professor — Analista/Programador Full Stack</h2>
</div>
</header>
<!-- About Section -->
<section class=”bg-primary text-white mb-0" id=”about”>
<div class=”container”>
<h2 class=”text-center text-uppercase text-white”>About</h2>
<hr class=”star-light mb-5">
<div class=”row”>
<div class=”col-lg-4 ml-auto”>
<p class=”lead”>Freelancer is a free bootstrap theme created by Start Bootstrap. The download includes the complete
source files including HTML, CSS, and JavaScript as well as optional LESS stylesheets for easy customization.</p>
</div>
<div class=”col-lg-4 mr-auto”>
<p class=”lead”>Whether you’re a student looking to showcase your work, a professional looking to attract clients,
or a graphic artist looking to share your projects, this template is the perfect starting point!</p>
</div>
</div>
<div class=”text-center mt-4">
<a class=”btn btn-xl btn-outline-light” href=”#”>
<i class=”fa fa-download mr-2"></i>
Download Now!
</a>
</div>
</div>
</section>
<!-- Footer -->
<footer class=”footer text-center”>
<div class=”container”>
<div class=”row”>
<div class=”col-md-4 mb-5 mb-lg-0">
<h4 class=”text-uppercase mb-4">Location</h4>
<p class=”lead mb-0">Kheronn K. Machado
<br>Wenceslau Braz — Paraná</p>
</div>
<div class=”col-md-4 mb-5 mb-lg-0">
<h4 class=”text-uppercase mb-4">Around the Web</h4>
<ul class=”list-inline mb-0">
<li class=”list-inline-item”>
<a class=”btn btn-outline-light btn-social text-center rounded-circle” href=”#”>
<i class=”fa fa-fw fa-facebook”></i>
</a>
</li>
</ul>
</div>
<div class=”col-md-4">
<h4 class=”text-uppercase mb-4">About Freelancer</h4>
<p class=”lead mb-0">Freelance is a free to use, open source Bootstrap theme created by
<a href=”http://startbootstrap.com”>Start Bootstrap</a>.</p>
</div>
</div>
</div>
</footer>
<div class=”copyright py-4 text-center text-white”>
<div class=”container”>
<small>Copyright &copy; Angular 6 e Firebase 2018</small>
</div>
</div>

home.component.html

Troquei o ícone no banner principal por um foto minha. Precisei deixar alterar o estilo.

No arquivo home.component.scss criei uma classe img-profile definindo o tamanho e deixando a imagem circular

.img-profile{
width: 128px;
border-radius: 50%;
}

home.component.scss

No terminal, digite novamente ng serve -o no terminal para ver como ficou.

Parte 3 —

https://medium.com/@kheronn.machado/angular6-firebase-portfolio-part3-c63ba1cd83cd

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Kheronn K. Machado
Kheronn K. Machado

Written by Kheronn K. Machado

Professor, pesquisador e desenvolvedor.

No responses yet

Write a response