Skip to content

Instantly share code, notes, and snippets.

@phaelfp
Last active February 24, 2022 00:23
Show Gist options
  • Save phaelfp/147fc8a3360bae32dd8c0e34d4145ee4 to your computer and use it in GitHub Desktop.
Save phaelfp/147fc8a3360bae32dd8c0e34d4145ee4 to your computer and use it in GitHub Desktop.
Aula de React Feliz

🎉 React com Micro FrontEnd - Aulas de React Feliz

O objetivo desse curso é preparar as pessoas para um ambiente que trabalhe com Squads utilizando React. Normalmente quando temos times focados em partes do produto e comum a adoção da arquitetura de Micro FrontEnd.

Layout no Figma CollabChat.fig

Um gif do layout

Amostra do Layout

Squads

  • Account
  • Home
  • Chat

Projects

Clients

  • client-collabchat
  • client-collabchat-account
  • client-collabchat-chat
  • client-collabchat-home

Backend for FrontEnd

...

Como criar setas com CSS - Parte I | Mód06 - Aula07

Creating A ReactJS-Inspired “Props” Object In AngularJS

VS Code - IDE

Plugins recomendados

✨ 1ª Aula

Tópicos abordados:

  • Layout Mobile First - Técnica muito utilizada no mercado!
    • Primeiro se faz o layout para o mobile e depois para o desktop
    • Porque a maioria dos acessos as aplicações web hoje são provenientes do Celular.
  • Explicado o conceito de Squads e Micro FrondEnd. Exemplos: Gmail, Spotify.
  • Explicado o que é React e as formas de se criar um projeto com React
    • Site do Vite Js 🚀 Iremos utilizar este
    • Site do Create React App - Foi o primeiro a ser desenvolvido
    • Site do Next JS - É um Framework para utilizar com o React
  • Explicado porque algumas ferramentas precisam de build (bundle) e algumas ferramentas para build Web Pack, Gulp, RollupJS é a que o Vite JS utiliza.
  • Explicado o que quem é responnsável compilação do JS do React JS Babel e que tem outros como o EsBuild e o Remix
  • Comandos para se criar um novo projeto React
    • yarn create vite [Name Project] --template react (Para projetos JavaScript)
    • yarn create vite [Name Project] --template react-ts (Para projetos com TypeScript)
    • npx create-next-app@latest ou yarn create next-app (Para projetos JavaScript)
    • npx create-next-app@latest --typescript ou yarn create next-app --typescript (Para projetos com TypeScript)
    • npx create-react-app my-app ou yarn create react-app my-app (Para projetos JavaScript)
    • npx create-react-app my-app --template typescript ou yarn create react-app my-app --template typescript (Para projetos --template typescript)

yarn create vite chatcollab --template react-js

cd chatcollab

continua na próxima aula

✨ - 2ª Aula

Criando o repositório no github e comitando o trabalho anterior

#/home/rfpereira/github/live/chatcollab> git init

#/home/rfpereira/github/live/chatcollab> git remote add origin [email protected]:phaelfp/chatcollab.git

Antes de continuar vamos fazer algumas configurações para padronização de código em projetos

  • Instalar o eslint yarn create @eslint/config
    • How would you like to use ESLint? style
    • What type of modules does your project use? esm
    • Which framework does your project use? react
    • Does your project use TypeScript? No
    • Where does your code run? browser
    • How would you like to define a style for your project? Use a popular style guide -> airbnb
    • What format do you wnat your config file to be in? JSON
    • Would you like to install them now with npm? Yes

Para auxiliar o eslint na padronização de código utilizamos o Prettier

Antes de fazermos esta configuração temos que instalar os plugins para nossa IDE

Visual Code - IDE de desenvolvimento

Abrir o vscode com o projeto #/user/rfpereira/github/lives/chatcollab>code .

Plugins

  • Para ter os recursos do Eslint na IDE usamos o plugin ESLint
  • Para ajudar na formatação/padronização do código usamos o plugin Prettier - Code formatter

Depois de instalar os plugins voltamos ao terminal para fazer a instalação do eslint config with prettier e o prettier

#/user/rfpereira/github/lives/chatcollab>yarn add -D eslint-config-prettier prettier

O parametro -D é utilizado para instalar o pacote somente em desenvolvimento.

Depois do termino da instalação abrir o arquivo .eslintrc acessar a sessão extends e adicionar "prettier" depois de "airbnb",

Depois abrir o arquivo .prettierrc e colar o código abaixo

{
  "singleQuote": true,
  "trailingComma": "all",
  "semi": true
}

Ctrl + Shift + p digitar Save without Formatting e clicar

Para verificar Ctrl + , e clicar no icon da configuração JSON no topo a direita e verificar se tem a linha "editor.formatOnSave": true, e a linha "[javascriptreact]":{"editor.defaultFormatter": "esbenp.prettier-vscode"}

Para que esta configuração siga em todos que iram trabalhar no projeto temos que copiar aa linhas mensionadas acima e no projeto criar uma pasta .vscode e dentro dela criar m arquivo settings.json e colar as linhas entre {} abrir bigodes e fechar bigodes

Para informar os plugins necessários também acompanharem o projeto é só irmos em cada Plugin clicar na engrenagem e depois em na ultima opção Add to Workspace Recommendations e depois disso será criado dentro da pasta .vscode o arquivo extensions.json

Mesmo tendo o Eslint e o Prettier instalado e configurado no Visual Code o desenvolvedor pode desablitar a sua funcionalidade Então utilizamos um recurso do Git chamada Hooks.

Navegando no diretório do projeto após ter executado o git init temos um diretório oculto (.git) dentro dele temos o diretório hooks com exemplos das ações do git que podemos fazer o hook.

Neste caso temos que utilizar o pre-commit, so que é um role fazer isso na mão então iremos utilizar uma ferramenta que já faz isso para gente que é indicada pelo vite que é o Husky sendo que tem uma forma de utiliza-lo melhor que é lint-staged

#/user/rfpereira/github/lives/chatcollab>npx mrm@2 lint-staged

Já vai instalar e configurar o lint-staged e o husky para gente ficar feliz!

Para padronizar os commits vamos utilizar o gitmoji

  • npm i -g gitmoji-cli

Para configurar o hook prepare-commit-msg para utilizar o padrão do commit

  • npx gitmoji -i

Agora vamos continuar o processo de versionamento.

#/home/rfpereira/github/live/chatcollab>git add .

#/home/rfpereira/github/live/chatcollab>git commit Não precissa passar o -m já que vamos utilizar o gitmoji

Storybook

Uma das mais utilizadas ferramentas de documentação de interface principalmente com React.

Instalar no projeto

  • npx sb init

Iniciar o Storybook

  • yarn storybook

Dentro do projeto vamos criar um pasta dentro de src com o nome components

Criação do nosso primeiro componente

Vamos criar o component Title para o título de boas-vindas.

Dentro da pasta components vamos criar uma pasta Title e dentro dela vamos criar os arquivos:

  • index.js
  • Title.stories.jsx Documentação do component para o Storybook
  • Title.jsx
  • Title.style.js

Title.stories.jsx

import React from 'react';
import Title from '.';

export default {
  title: 'Components/Title',
  component: Title,
};

const Template = (args) => <Title {...args} />;

export const Default = Template.bind({});
Default.args = {
  children: 'Default',
};

export const Small = Template.bind({});
Small.args = {
  children: 'Small',
};

Title.jsx

import Style from './Title.style';

const Title = function titleComponent({ children }) {
  return <Style.Title>{children}</Style.Title>;
};

export default Title;

index.js

import Title from './Title';

export default Title;

Title.style.js

import styled from 'styled-components';

const Style = {};

Style.Title = styled.h1`
  font-size: 40px;
`;

export default Style;

Instalar uma dependencia para tratar o CSS o Styled Components

  • yarn add styled-components

Plugin Visual Code - IDE

  • Adicionar o Styled Components não esqueca de clicar na engrenagem e adicionar o plugin no Workspace como fizemos nos outros plugins

Esplicou o conseito de JSON e a sua extruturação como exemplo ele pegou o nome dos usuários do chat e a cor que aparece o nome do usuário.

chat.json

{
	"user": "Ryhu02",
	"color": "orange"
}

Exemplicou como seria em xml

chat.xml

<chat>
	<user>
		<name>Ryhu02</name>
		<color>orange</color>
	</user>
</chat>

Como temos que representar uma lista de usuários utilizamos o []

chat.json

{
	"chat" :[
		{
			"name":"tostavioo",
			"color":"orange"
		},{
			"name":"HakkoFrost",
			"color":"black"
		},{
			"name":"Dymar",
			"color":"yellow"
		}
	]
}

Mesmo arquivo se fosse no formato XML

chat.xml

<chat>
	<user>
		<name>tostavioo</name>
		<color>orange</color>
	</user>
	<user>
		<name>HakkoFrost</name>
		<color>black</color>
	</user>
	<user>
		<name>Dymar</name>
		<color>yellow</color>
	</user>
</chat>

Falou sobre a dúvida da Danicaus quando utilizar o JSON.parse() e o JSON.stringfy()

const json = '{"result": true, "count":42}';

const obj = JSON.parse(json);

// isso não funciona
// console.log(json.count);

console.log(obj.count);

console.log(obj.result);

console.log(obj);

console.log(JSON.stringfy(obj));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment