Skip to content

Instantly share code, notes, and snippets.

@reginadiana
Last active April 3, 2024 00:58
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save reginadiana/e2c4e57f6722d2c91ef876da0e29af9e to your computer and use it in GitHub Desktop.
Save reginadiana/e2c4e57f6722d2c91ef876da0e29af9e to your computer and use it in GitHub Desktop.
Trilha de Frontend

Trilha de Frontend

Observações sobre os materiais extras

  • Se tratam de recursos extensos como livros, cursos, documentações, materiais para consultas, etc.

  • Todos são 100% acessiveis e gratuitos para Rebasers. Os cursos da Origamid foram patrocinados pelo Alan oo/

Antes de tudo

👉 HTML

Materiais Extras

📚 [Artigo] Maneiras de se praticar desenvolvimento frontend

📚 [Video] Precisamos falar sobre Semântica - Edu Agni - Frontin Sampa 2022

📚 [Video] Clean code para front-end: Princípios da engenharia de software para programar melhor

📚 [Video] Boas práticas para escrever um HTML profissional

📚 [Video] O que é considerado frontend avançado? | Hipsters.Talks. Fiz algumas anotações aqui

👉 CSS

Propriedadas de atribuição/caracterização do elemento

Propriedades de posicionamento do elemento

Propriedades para formação do tamanho de um elemento

Exercicio/Bonus

📚 [Consulta] Arquivo de Reset

📚 [Curso] HTML e CSS

📚 [Curso] CSS Flexbox

📚 [Curso] CSS Grid

📚 [Livro] HTML e CSS

📚 [Game] cssbattle

📚 [Game] Flexbox

📚 [Game] Grid

📚 [Game] Seletores

📚 [Ferramenta] Nomeador de Cores. Ajuda a manter um padrão, sem precisar ter uma discução no time sobre essas nomenclaturas.

👉 JS

Materiais Extras

📚 [Curso] JS ES6

📚 [Livro] JS

📚 [Game] Hackerrank

📚 [Game] Exercism

👉 DevTools

Materiais Extras

📚 Documentação Oficial do DevTools

👉 Figma

👉 SEO

👉 Acessibilidade

Materiais Extras

📚 Checklist de Acessibilidade

👉 Responsividade

Materiais Extras

📚 Design Responsivo

👉 Usabilidade

👉 Gerenciamento de Pacotes

Materiais Extras

📚 Automação Front End com NPM - Curso Origamid

👉 Performance

Materiais Extras

📚 Web Dev é uma ótima de fonte de documentação que fala sobre como mensurar e melhorar o código para que tenha boa performance e acessibilidade.

👉 Formatação de Código

👉 Vue

Materiais Extras

📚 Curso de VueJS 2.0 na origamid

👉 React

Libs em projetos (extra)

📚 React Router

📚 React i18n

📚 React PDF

📚 React PDF Re-render

📚 React Formik

📚 Redux

📚 Styled-Components

Materiais Extras

📚 [Curso] React

📚 [Livro em ingles] Boas práticas de React

👉 Jest

Materiais Extras

📚 DOC 2022

📚 DOC 2017

Objetivos

HTML

:octocat: Conhecer a importancia de manter a estrutura do documento com semantica (sentido) por fatores como SEO e acessibilidade.

:octocat: Conhecer quais são as principais tags que existem e quando usá-las

:octocat: Conhecer quais atributos podem ser usados em determinadas tags e seus valores padrão

✏️ Como práticar: Busque por sites e observe visualmente como ele está organizado. Pegue papel e caneta e desenhe essa estrutura juntando esses bloquinhos. Defina quais seriam as tags que dariam sentido ao que representam. Ex: para dar sentido a um titulo, podemos usar uma tag de titulo como h1. Depois, inspecione o site e veja como foi realmente organizado. Compare os resultados.

CSS

:octocat: Conhecer e entender quais as propriedades são compativeis com diversos tipos de browsers.

:octocat: Saber como acessar elementos html com os diferentes tipos de seletores.

:octocat: Saber a diferença entre seletores e qual a diferença em termos de performance ao usá-los para capiturar um elemento e aplicar as propriedades css.

:octocat: Entender sobre o porque evitar o uso do !important

:octocat: Dica: O sentimento sobre o css de que ele "é mágica" ou "não te obedece" são sinais que mostram que precisamos entender mais a fundo sobre o que as propriedades fazem.

:octocat: Ser capaz de construir elementos geometricos básicos como circulos, retangulos, quadrados, triangulos, etc

:octocat: Ser capaz de construir elementos de design básicos como botões, cabeçalhos, rodapés, modais, listas, formulários, etc.

DevTools

:octocat: Saber a importancia dessa ferramenta para o desenvolvimento frontend;

:octocat: Ser capaz de abrir a ferramenta;

Inspector

:octocat: Entender as principais divisões da barra Inspector;

:octocat: Ser capaz de encontrar o código html respectivo aos elementos apresentados na tela;

:octocat: Entender o que é o box model e como interpretá-lo;

:octocat: Ser capaz de encontrar as propriedades css do respectivo elemento selecionado; Neste ponto, vale tanto as propriedades que estão sendo aplicadas como aquelas que foram sobrescritas;

:octocat: Ser capaz de gerenciar as propriedades (adicionar, remover, alterar);

:octocat: Ser capaz de gerenciar a visão de dispositivo. Ex: Iphone4, IphoneX, colocar em landscape, etc;

:octocat: Ser capaz de simular eventos de pseudo elementos como hover, actived, visited, etc e observar as mudanças.

Lighthouse

:octocat: Entender o que significa;

:octocat: Ser capaz de gerar uma auditoria/report;

:octocat: Ser capaz de identificar o que a auditoria está apontando como pontos de melhoria e quais aqueles que já estão sendo atendidos;

:octocat: Ser capaz de encontrar o material de referencia para cada um dos pontos de melhoria.

:octocat:

Application

:octocat: Entender o que significa;

:octocat: Ser capaz de encontrar dados referentes aos cookies, local storage e session storage;

:octocat: Ser capaz de limpar todos os dados citados acima;

Console

Network

Performance

:octocat: Ser capaz de gerar um report a partir do lighthouse;

Web Frontend

Frontend é uma área bastante ampla que vai muito além construir o layout proposto pelo designer. É necessário que site tenha boa usabilidade, acessibilidade, performance, que seja responsivo, se comunique com o backend, etc.

Não podemos esquecer que o usuário sempre vai considerar primeiro o que ele está vendo na tela, e muitas vezes, é o que ele vai considerar como "entrega de valor".

Palavras e Conceitos Chave:

❤️ BFF

❤️ Segurança

❤️ Conceito de Componentes

❤️ Ciclo de vida de componentes

❤️ Responsividade

❤️ Etapas de construção do DOM

❤️ Usabilidade

❤️ Animações

❤️ Lidando com API's: axios, fetch

❤️ Arquitetura do css

❤️ Design Tokens

❤️ Testes

❤️ Especificidade

❤️ lighthouse O Lighthouse é uma das funcionalidades do dev tools, originalmente criada para ser usada no navegador Chrome. Com ela é possível realizar métricas de performance, acessibilidade, SEO, etc.

image

image

O ideal é que a metrica seja realizada em aba anonima, assim os dados de armazenamento local e o cache não vão interferir no carregamento da página.

❤️ Design thinking Em um primeiro momento, pode parecer que, por mais que o design thinking seja um processo feito pelo UX/UI e PO/PM, não seja importante para o dev.

Porém, já aconteceram situações em que tive que participar um pouco desse processo e conversar com o PO sobre o que eu achava sobre o que foi proposto por ele e se, houvesse algum tipo de empecilho técnico, de dar outras sugestões para que, de um jeito ou de outro, o problema do usuário fosse resolvido.

❤️ Construção dos elementos básicos de design (menu, listas, cards, modais, carrossel, botões, loaders formas geométricas como circulo, quadrado, triângulo, retângulo, etc)

❤️ Uso de frameworks css como bootstrap, tailwindcss, antdesign, materialize, material design, entre outros.

❤️ Pré-processadores como sass e less O sass e o less não mudam completamente a forma do css, ou seja, ao utilizá-los, não precisamos nos preocupar em pensar que estamos de fato aprendendo uma linguagem nova. A diferença é que eles adicionam lógica ao css, permitindo a utilização de variáveis, loops e que possamos acessar elementos um dentro do outro por exemplo, facilitando o desenvolvimento.

❤️ Uso de dados moveis Quanto mais fazemos requests de recursos externos como bater em uma API, carregar uma imagem com alta resolução, fonte family, etc, mais banda de internet o usuário precisará usar, fazendo com o que 3G do coitado acabe logo. Ou seja, se o publico alvo do cliente são usuários que acessarão muito mais via celular, é importante levar isso em consideração durante o desenvolvimento.

❤️ Uso da ferramenta dev tools para inspeção de elementos, monitoramento das requests, métricas do lighthouse, armazenamento local, debug de javascript, entre outros.

❤️ Comunicação com o design e PO Em algum momento da nossa carreira como devs vamos olhar para o que foi proposto pelo time de UX e pensar: "Será que estão loucos? Isso não é fácil de fazer ... ou, simplesmente não dá para fazer como estão dizendo".

E é nesse momento que a skill Saber se comunicar com o time de UX/UI e PO é necessária, porque a menos que esse time já tenha muita vivencia com desenvolvimento, eles vão realmente acreditar que "tudo é possível".

Precisamos usar uma linguagem "não técnica" para explicar se determinada funcionalidade é viável. As vezes vamos precisar dar uma média de tempo para que ela seja desenvolvida. E se não foi possível, é muito bacana que a gente consiga dar alternativas e explicar do porque não pode ser feito.

Pode parecer simples, mas vai por mim, não é.

Além disso, devemos lembrar que estamos trabalhando para dar vida ao trabalho que o UX/UI fez, que com certeza também não foi só montar as telas no Figma.

❤️ Mobile First Significa não só começar o desenvolvimento do layout pela versão mobile e depois ir adaptando para as versões tablet e desktop, mas considerar que, apesar da CPU (processamento) em dispositivos mobile ser menor, que seja possível acessar todas as funcionalidades por ele.

Ao garantir que tudo funcione no mobile, apesar da CPU e dados moveis serem menores, é muito mais fácil que funcione no desktop.

Para saber mais: https://medium.com/@Vincentxia77/what-is-mobile-first-design-why-its-important-how-to-make-it-7d3cf2e29d00

❤️ Armazenamento local (cookies, local storage, cache, etc) O armazenamento local é muito útil para "salvar" pequenos dados referente a ações que o usuário tenha que fazer apenas uma vez como dar "ok" em um modal, concordar com as políticas do site, etc, além de tokens de sessão.

Para saber mais: https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API https://www.freecodecamp.org/news/everything-you-need-to-know-about-cookies-for-web-development/

❤️ Performance Hoje, sabemos que 80% da performance de um site depende do carregamento no frontend, ou seja, isso está diretamente ligado com usabilidade e vendas.

Os principais fatores que vejo impactar nas aplicações são o uso massivo de javascript, carregamento de fontes e imagens, integrações e plugins, além de requests muito demoradas e sem necessidade de serem processadas no momento em que a página é carregada.

❤️ Semântica no HTML Em teoria, podemos abrir um bloco de notas, digitar qualquer texto, salvar como .html e abrir no navegador e ter o resultado na tela, mas um bom código deve ser organizado e fazer sentido.

E essa é a principal função do HTML: dar sentido ao conteúdo que será mostrado na tela. Ou seja, apenas lendo o código devemos saber o que é um titulo, um paragrafo, uma imagem, um menu, etc.

Por isso, é importante que o HTML seja o mais semântico possível. Hoje em dia os conteúdos dos sites são tão padronizados que é bem difícil não ter uma tag especifica para o tipo de conteúdo que queremos trazer.

Na duvida, a w3school trás uma lista com várias tags disponíveis para consulta: https://www.w3schools.com/TAGS/default.ASP

❤️ Normalize css ou reset css Por mais que voce não tenha escrito nenhum css no projeto, os browsers já trazem os seus próprios estilos default associados a cada uma das tags HTML. Pode ser um display, margin, font-size, mas eles já vem pré-definidos e podem mudar de acordo com o tipo de browser.

Quando eu estava começando, desenvolvia o layout em um browser como o Crhome e quando abria no Firefox ... surprise! Estava diferente.

Para amenizar esse problema, usa-se o normalize ou reset no css para "limpar" essas propriedades default e conseguir garantir um layout mais padronizado entre browsers.

Para saber mais:

https://elad.medium.com/normalize-css-or-css-reset-9d75175c5d1e https://www.geeksforgeeks.org/difference-between-resetting-and-normalizing-in-css/

❤️ Compatibilidade entre browsers Um dos desafios com o desenvolvimento frontend é que algumas coisas são diferentes entre browsers, como as propriedades css por exemplo. Propriedades mais novas podem não funcionar em browsers mais antigos, por isso, é sempre bom dar uma verificada na documentação ou no site Can I Use para não ter surpresas.

❤️ Acessibilidade Acessibilidade é um ponto importante que surge quando estamos desenvolvendo o frontend. Um site acessível significa que ele pode ser usado por pessoas que tem problemas de visão, audição, que tenha dificultardes motoras, etc, ou seja, temos que pensar na usabilidade usando apenas o teclado, no contraste e tamanho das cores e considerando o HTML semântico para que os softwares de leitura consigam "ler" a página.

Para saber mais: https://imasters.com.br/front-end/o-que-e-acessibilidade-web-e-como-tornar-seu-site-mais-acessivel


Dev's de referencia que publicam conteúdo na comunidade:

Rafaella Ballerini

Mario Solto

Willian Justin

Gabs Ferreira

Diego Eis. O Diego tem focado mais em produto ultimamente, mas já trabalhou e escreveu bastante sobre frontend.

Principais linguagens: html, css, javascript

Principais frameworks: React, Vue, Angular

Jogos:

Cursos: A plataforma Origamid trás muitos cursos voltados para o frontend e design. Para quem está iniciando, daria enfase aos cursos HTML e CSS para iniciantes, Javascript. Como voce já está em um projeto com React, é uma boa fazer dele também React

Talks O que é considerado frontend avançado, Meu resumo

Renderizando imagens

Boas práticas de HTML

História do Frontend - Fabio Akita

Artigos: Como se tornar um desenvolvedor frontend

Coleção de materiais sobre métricas e como melhorar a performance e usabilidade no frontend:

https://web.dev/learn-web-vitals/

https://web.dev/metrics/

https://web.dev/fast/

Conteúdo/Materiais de auxilio: Frontend Roadmap Mozilla Apesar da comunidade dizer que o conteúdo do Mozila é melhor, mais atualizado, etc, pessoalmente adoro o w3schools também, porque ele é super organizado, é possível fazer o login e seguir trilhas de estudos com provinhas de conceito, eles mostram os exemplos na tela (try it yourself)

Livros: Meus livros sobre frontend no DriveGoogle

Libs legais para usar no React:

📚 i18next

📚 Styled-Components permite a criação de componentes com estilos personalizados em css, deixando o jxs mais "clean"

📚 Redux gerência e compartilha estados

📚 Formik fornece componentes prontos para lidar com formulário

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment