Referência
Convenções de código
Onde fica cada coisa, nomes, componentes, estilo e commits.
Algumas convenções mantêm um projeto Nimbly fácil de entender, para o desenvolvedor que o escreveu, o designer que o estiliza e quem vier depois.
Onde fica cada coisa
| O quê | Onde |
|---|---|
| Markup | Templates: ext/tpl/ para partes reutilizáveis, ext/uri/ para rotas |
| Lógica e preparação de dados | Bibliotecas em ext/lib/ |
| O formato dos seus dados | Definições de recursos em ext/data/<resource>/.meta |
| Estilos | ext/theme.css e classes do Tailwind nos templates |
| Cores e temas | ext/tailwind.theme.js |
| Uma funcionalidade empacotada | ext/modules/<name>/ |
Os templates continuam sem lógica e as bibliotecas não contêm HTML. Assim, um designer pode mudar qualquer parte da interface sem ler PHP, e um desenvolvedor pode mudar uma regra sem mexer no markup.
Nomes
Templates: primeiro o tipo, depois o assunto. Os cartões ficam juntos, as seções também, e as páginas também:
| Tipo | Usado para | Exemplo |
|---|---|---|
page- |
O conteúdo de uma página | page-about, page-contact |
section- |
Uma seção dentro de uma página | section-home-hero |
card- |
Um item repetido | card-project, card-team-member |
form- |
Um formulário | form-newsletter |
icon- |
Um ícone inline | icon-arrow-right |
btn- |
Um botão ou estilo de botão | btn-preview |
Escreva card-project, não project-card.
PHP: snake_case em todo lugar. Funções, variáveis, parâmetros e nomes de arquivo: prepare_projects_sc(), $project_count, ext/lib/prepare-projects.php. O arquivo da biblioteca usa hífens porque também é o nome do shortcode, [#prepare-projects#].
Recursos e campos: minúsculas, plural para o recurso. projects, team-members; campos como title, title_slug, published, sort_order.
Componentes
Um componente é um template reutilizável com tudo de que precisa dentro da própria pasta:
ext/tpl/photo-collage/index.tpl the markup
ext/tpl/photo-collage/style.css its own CSS, imported from ext/theme.css
- Autossuficiente. A página só chama
[#photo-collage#]; o componente não depende da página ao redor. - Definido por quem chama. O que varia a cada uso é definido antes da chamada:
[#set collage_columns=3 overwrite#], depois[#photo-collage#]. - Portátil. Um bom componente funciona quando copiado para outro projeto.
A maioria das partes da interface são componentes. Transforme-o em módulo só quando ele também trouxer dados ou rotas próprios.
Estilo
- Use as cores do tema (
primary,secondarye os tokens próprios do projeto) em vez de cores fixas da paleta, para que um redesign seja uma mudança num único lugar. - Quando uma lista longa de classes se repete em vários elementos, dê a ela um pequeno template próprio e reutilize-o. Poucas classes ficam inline.
- Coloque entre aspas as listas de classes guardadas numa variável,
[#set card-style="rounded-2xl bg-white"#], para que o build as encontre.
Estilo de código
- Use sempre chaves em
if,else,forewhile, também em volta de uma única linha, em PHP e JavaScript. - Corrija a causa, não o sintoma: quando falta um dado num template, corrija onde o dado é carregado; quando um layout quebra, corrija o layout em vez de esconder o overflow.
- Mantenha tudo tão pequeno quanto a necessidade atual permite. Nada de campos, configurações ou abstrações "para depois".
Commits
Use Conventional Commits: um tipo, um escopo opcional e uma linha clara.
feat(projects): filter the overview by sector
fix(header): logo and menu no longer overlap on phones
style(cards): align the card titles
Se mais contexto ajudar, acrescente-o depois de uma linha em branco. A primeira linha se sustenta sozinha.