Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DRAFT] DOCS: Next App Router #27

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open

Conversation

PedroAmorimG
Copy link

Parte de roteamento possivelmente pronta.

@PedroAmorimG
Copy link
Author

Parte de roteamento e APIs feita, necessitam de revisão.

@pafev pafev requested a review from EdPPF March 4, 2024 20:11

## Introdução

O `App Router` foi introduzido na versão 13 do next.js e foi construído utilizando o `React Server Components`.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Acho uma boa colocar aqui a sigla que você usou pra se referir aos RSCs depois.

Suggested change
O `App Router` foi introduzido na versão 13 do next.js e foi construído utilizando o `React Server Components`.
O `App Router` foi introduzido na versão 13 do next.js e foi construído utilizando o `React Server Components (RSC)`.


O `App Router` foi introduzido na versão 13 do next.js e foi construído utilizando o `React Server Components`.

O `App Router` trabalha com o diretório app para a criação de rotas que podem ou não serem de acesso público, por padrão componentes deste diretório são `RSCs`. As páginas são criadas nas rotas e irão herdar certas características definidas por arquivos especiais como `navbar` e `footer` definidos no arquivo `layout.tsx` da rota.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Só umas correções de português e de estrutura da frase

Suggested change
O `App Router` trabalha com o diretório app para a criação de rotas que podem ou não serem de acesso público, por padrão componentes deste diretório são `RSCs`. As páginas são criadas nas rotas e irão herdar certas características definidas por arquivos especiais como `navbar` e `footer` definidos no arquivo `layout.tsx` da rota.
O `App Router` trabalha com o diretório app para a criação de rotas que podem ou não ser de acesso público. Por padrão, componentes deste diretório são `RSCs`. As páginas são criadas nas rotas e irão herdar certas características definidas por arquivos especiais, como `navbar` e `footer`, definidos no arquivo `layout.tsx` da rota.

O `App Router` trabalha com o diretório app para a criação de rotas que podem ou não serem de acesso público, por padrão componentes deste diretório são `RSCs`. As páginas são criadas nas rotas e irão herdar certas características definidas por arquivos especiais como `navbar` e `footer` definidos no arquivo `layout.tsx` da rota.

!!!
Para mais informações sobre [React Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sugestão de estrutura, de novo

Suggested change
Para mais informações sobre [React Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components).
Para mais informações, acesse [React Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components).

!!!

!!!
O App Router não trabalha exclusivamente com `server components`, se for necessário o uso de `client components` adicione a linha `"use client"` no topo do arquivo da página.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
O App Router não trabalha exclusivamente com `server components`, se for necessário o uso de `client components` adicione a linha `"use client"` no topo do arquivo da página.
O App Router não trabalha exclusivamente com `server components`. Se for necessário o uso de `client components`, adicione a linha `"use client"` no topo do arquivo da página.

- [Loading](https://nextjs.org/docs/app/building-your-application/routing/loading-ui-and-streaming#instant-loading-states): Define a UI da rota, enquanto a página principal não estiver completa. Dependendo do design pode ser utilizada uma página esqueleto, uma barra de loading ou o que vier de sua imaginação, desde que a página de loading não fique muito pesada, desse modo, causando problemas de performance.

!!!
Esses arquivos deverão ser da extensão `.js`, `.jsx` ou .tsx. Dê preferência ao uso da extensão `.tsx `(TypeScript).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Esses arquivos deverão ser da extensão `.js`, `.jsx` ou .tsx. Dê preferência ao uso da extensão `.tsx `(TypeScript).
Esses arquivos deverão ser da extensão `.js`, `.jsx` ou `.tsx`. Dê preferência ao uso da extensão `.tsx` (TypeScript).


### Criando páginas e layouts

As páginas são arquivos com o nome `page.tsx` que apresentam a estrutura do React e vão desempenhar o papel de criar UIs especificas a determinada rota. Elas tornam a rota acessível para visitantes e por padrão são ´Server Components´.
Copy link
Collaborator

@EdPPF EdPPF Mar 6, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
As páginas são arquivos com o nome `page.tsx` que apresentam a estrutura do React e vão desempenhar o papel de criar UIs especificas a determinada rota. Elas tornam a rota acessível para visitantes e por padrão são ´Server Components´.
As páginas são arquivos com o nome `page.tsx` que apresentam a estrutura do React e vão desempenhar o papel de criar UIs especificas a determinada rota. Elas tornam a rota acessível para visitantes e por padrão são `Server Components`.

===

!!!
Uma rota é publicamente acessível, somente se existir um arquivo do tipo `page.tsx` ou `route.ts`.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Uma rota é publicamente acessível, somente se existir um arquivo do tipo `page.tsx` ou `route.ts`.
Uma rota é publicamente acessível somente se existir um arquivo do tipo `page.tsx` ou `route.ts`.

!!!

!!!
Para padrões avançados de roteamento, como Rotas em paralelo ou interceptação de rotas, [veja](https://nextjs.org/docs/app/building-your-application/routing#advanced-routing-patterns)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Outra sugestão de estrutura da frase. Pode mudar o que adicionei pro que achar melhor

Suggested change
Para padrões avançados de roteamento, como Rotas em paralelo ou interceptação de rotas, [veja](https://nextjs.org/docs/app/building-your-application/routing#advanced-routing-patterns)
Para padrões avançados de roteamento, como Rotas em paralelo ou interceptação de rotas, veja *[Advanced Routing Patterns](https://nextjs.org/docs/app/building-your-application/routing#advanced-routing-patterns)*

===

!!!
Para mais informações sobre [redirecionamento](https://nextjs.org/docs/app/building-your-application/routing/redirecting).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Para mais informações sobre [redirecionamento](https://nextjs.org/docs/app/building-your-application/routing/redirecting).
Para mais informações, acesse [redirecionamento](https://nextjs.org/docs/app/building-your-application/routing/redirecting).


### Criando uma rota de API

Para criar uma rota API é necessário escrever um arquivo com o nome `route.ts`, nele será construída a API da rota.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Para criar uma rota API é necessário escrever um arquivo com o nome `route.ts`, nele será construída a API da rota.
Para criar uma rota API é necessário escrever um arquivo com o nome `route.ts`, onde será construída a API da rota.


O corpo da função tem como objetivo a aquisição dos dados a serem transmitidos pela API ou a realização de mudanças no banco de dados, provavelmente vai entrar alguma lógica envolvendo o banco de dados nessa parte.

Por fim, as APIs `route handler` do next precisam do `return` de uma `Response`, nessa `Response` utilize o método `json` para a transmissão dos dados coletados ou código de status.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Por fim, as APIs `route handler` do next precisam do `return` de uma `Response`, nessa `Response` utilize o método `json` para a transmissão dos dados coletados ou código de status.
Por fim, as APIs `route handler` do next precisam do `return` de uma `Response`. Nessa `Response` utilize o método `json` para a transmissão dos dados coletados ou código de status.

===

!!!
Em uma rota não pode conter uma `page` e um `route handler` ao mesmo tempo, pois haverá conflito e o `route handler` prevalecerá. Por isso, recomendo criar um diretório `api` na rota para colocar o `route handler`.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Em uma rota não pode conter uma `page` e um `route handler` ao mesmo tempo, pois haverá conflito e o `route handler` prevalecerá. Por isso, recomendo criar um diretório `api` na rota para colocar o `route handler`.
Em uma rota não pode conter uma `page` e um `route handler` ao mesmo tempo, pois haverá conflito e o `route handler` prevalecerá. Por isso, é recomendado criar um diretório `api` na rota para colocar o `route handler`.


## Interações com banco de dados

Podemos utilizar diferentes métodos para a busca de dados para formar a página do site, sendo eles `server-side` ou `client-side`, normalmente esses dados serão recebidos em formato `JSON`. Os dados podem vir de APIs existentes na internet ou de APIs internas alimentadas com o próprio banco de dados para `client components` e os dados podem vir de APIs externas ou diretamente do banco de dados para os `server components`.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Podemos utilizar diferentes métodos para a busca de dados para formar a página do site, sendo eles `server-side` ou `client-side`, normalmente esses dados serão recebidos em formato `JSON`. Os dados podem vir de APIs existentes na internet ou de APIs internas alimentadas com o próprio banco de dados para `client components` e os dados podem vir de APIs externas ou diretamente do banco de dados para os `server components`.
Podemos utilizar diferentes métodos para a busca de dados para formar a página do site, sendo eles `server-side` ou `client-side`. Normalmente, esses dados serão recebidos em formato `JSON`. Os dados podem vir de APIs existentes na internet ou de APIs internas alimentadas com o próprio banco de dados para `client components`, ou então podem vir de APIs externas ou diretamente do banco de dados para os `server components`.


### Server Side

Quando precisamos buscar dados para criar a página no lado do servidor pode-se utilizar `fetch` ou `axios` para buscar por dados externos e uma função com busca direta no banco de dados para dados internos.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Quando precisamos buscar dados para criar a página no lado do servidor pode-se utilizar `fetch` ou `axios` para buscar por dados externos e uma função com busca direta no banco de dados para dados internos.
Quando precisamos buscar dados para criar a página no lado do servidor, pode-se utilizar `fetch` ou `axios` para buscar por dados externos e uma função com busca direta no banco de dados para dados internos.


### Client Side

Quando precisar de dados no lado do cliente, poderá ser utilizados `fetch` e `axios` para buscar dados no servidor via `route handlers`.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Quando precisar de dados no lado do cliente, poderá ser utilizados `fetch` e `axios` para buscar dados no servidor via `route handlers`.
Quando precisar de dados no lado do cliente, poderão ser utilizados `fetch` e `axios` para buscar dados no servidor via `route handlers`.

```

===
Os dados coletados podem ser utilizados do jeito que for necessário, exemplo de uso abaixo:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Os dados coletados podem ser utilizados do jeito que for necessário, exemplo de uso abaixo:
Os dados coletados podem ser utilizados do jeito que for necessário, como no exemplo abaixo:

ou algo assim.

Copy link
Collaborator

@EdPPF EdPPF left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@PedroAmorimG , fiz a review da sua PR até agora. São só umas sugestões de estrutura do que você escreveu e algumas correções de português, mas no conteúdo em si não consegui achar nenhum erro.

E, aliás, se você tiver recebido uns 10 emails sobre meus comentários, foi mal... Ainda tô aprendendo a usar essa feature do GitHub.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants