saibrotech / mentoria

Repositório para gestão das atividades de mentoria para transição de carreira realizada pela SaibroTech
GNU General Public License v3.0
4 stars 1 forks source link

Fazer seção 22 do curso WebDev Udemy (Angela Yu) #148

Closed AndreBuitoni closed 1 year ago

AndreBuitoni commented 1 year ago

Seção 22 - EJS

Link do MIRO (anotações da aula) Anotações da aula EJS no Miro

Repositório da aula no GitHub: https://github.com/AndreBuitoni/Web-Development/tree/main/todolist-v1

AndreBuitoni commented 1 year ago

AULA 266 - Creating your first EJS Template

Nessa aula, achei interessante o uso do SWITCH. Eu não conhecia esse código ainda. Ou, pelo menos, não lembrava dele. Na imagem abaixo, o início do nosso servidor. Implementando um template usando EJS Image

No HTML, a sintaxe do EJS é feita com <%= insiraSuaVariavelAqui %> Image

O resultado prático é uma frase que mostra o dia atual: Image

AndreBuitoni commented 1 year ago

AULA 267 - Running Code inside the EJS Template

Demonstração simples de como podemos usar tags EJS para executar Javascript dentro do arquivo EJS que contém o HTML. Para isso a tag é <% insiraAquiSeuJavascript %> Image

Resultado: O estilo do h1 ficou azul. Image

Extras:

As diferentes TAGS EJS podem ser consultadas no site www.ejs.co Image

AndreBuitoni commented 1 year ago

Aula 268 - Passing Data from your Webpage to your Server

Utilizamos um formulário simples com um input e um botão submit para enviar dados via POST REQUEST para o servidor. Image

O servidor então recebe os dados inseridos no input, adiciona esses dados num array global com o método push e então redireciona o usuário novamente para o diretório raiz "/" onde agora será renderizado o array atualizado de itens da lista. Image

Variável itens Image

Renderização da Lista no app.get("/") Image

Resultado Prático Image

Ah! Só faltou passar o código usado para criar a lista: Image

AndreBuitoni commented 1 year ago

Aula 269 - The Concept of Scope in the context of Javascript

Aula teórica explicando o conceito de escopo dentro de Javascript e abordando um pouco sobre as diferenças entre var, let e const. Recomendou usar let ao invés de var sempre que possível. Trocou todos os var por let no código.

AndreBuitoni commented 1 year ago

Aula 270 - Adding Pre-made CSS Stylesheets to your website

Adicionamos um CSS já pronto para o projeto e então adicionamos as classes e as divs necessárias para utilizar o CSS. Poucas novidades aqui.

O mais interessante foi aprender a autorizar o express a usar arquivos estáticos dentro da pasta public com o seguinte código: app.use(express.static("public"))

Image

Arquivo CSS https://github.com/AndreBuitoni/Web-Development/blob/main/todolist-v1/public/css/styles.css

AndreBuitoni commented 1 year ago

Aula 271 - Understanding templates vs layouts

Aprendemos a diferença entre Templates e Layouts.

Utilizamos nossa TO DO LIST como um TEMPLATE para gerar um outra lista específica para tarefas do trabalho: Image

Por outro lado, criamos o HEADER e o FOOTER como páginas separadas para servirem de LAYOUTS que podem ser reutilizados em várias outras páginas. Para chamá-los, basta uma linha de código: <%- include('header'); -%> <%- include('footer'); -%>

Apenas para futura referência, segue breve explicação do ChatGPT sobre a diferença entre Templates e Layouts em EJS: Image

AndreBuitoni commented 1 year ago

Aula 272 - Understanding node module exports: How to pass functions and data between files

Criamos nosso próprio módulo para melhor entender o que são os módulos do Node. Image

Depois, fizemos a requisição desse módulo no servidor: Image

Por fim, nos livramos do código extra que estava dentro do app.get("/") (e que agora está no módulo date.js) e simplesmente chamamos o método necessário do nosso módulo com uma linha: Image

Essa aula conclui o capítulo sobre EJS.

piantino commented 1 year ago

Massa André, aprendeu bastante coisa que pode ser utilizado no backend em NodeJs e conceitos como formulários e templates que são utilizados em vários frameworks e linguagens diferentes.