Conceitos
Composição atômica
Como recursos, bibliotecas, templates e rotas se combinam em funcionalidades, tão granular quanto o projeto pedir.
Design atômico costuma descrever uma interface: átomos, moléculas e organismos que se combinam em páginas. O Nimbly aplica a mesma ideia à aplicação inteira. Dados, lógica e apresentação são feitos de pequenos blocos, e uma funcionalidade é uma combinação deles.
Os blocos de construção
| Bloco | Onde | Responsabilidade |
|---|---|---|
| Recurso | ext/data/<name>/.meta |
Um tipo de dado: seus campos, validação, índices e permissões |
| Biblioteca | ext/lib/<name>.php |
Lógica de negócio e preparação de dados, chamada como shortcode |
| Template | ext/tpl/<name>/index.tpl |
Um pedaço de markup, chamado como shortcode |
| Rota | ext/uri/<path>/ |
Um endereço, e a página ou resposta que ele compõe |
| Módulo | ext/modules/<name>/ |
Uma funcionalidade empacotada com rotas, templates, bibliotecas e dados próprios |
Uma funcionalidade é uma composição
A página de projetos do tutorial mostra como os blocos se combinam:
| Parte | Bloco | Reutilizado por |
|---|---|---|
| Projetos | Recurso | A página, as páginas de detalhe, o admin, a API |
| Cartão de projeto | Template | A lista de projetos e qualquer outra página que mostre um projeto |
| Cabeçalho do site | Template | Todas as páginas do site |
| Busca do detalhe | Rota com route.inc |
Um endereço por projeto publicado |
| Página de projetos | Rota | Compõe o cabeçalho, a introdução editável e os cartões |
Nenhuma dessas partes sabe mais do que precisa. O cartão exibe um registro; a rota decide quais registros mostrar; o recurso decide o que é um projeto válido. Mude o cartão e todas as listas de projetos acompanham; acrescente um campo ao recurso e o formulário do admin, a API e o histórico acompanham.
Tão granular quanto o projeto precisar
Atômico significa granular, não um conjunto de regras. Uma página pode ser um único template com todo o seu HTML, e essa é uma página Nimbly perfeitamente boa. Extraia um template quando um pedaço de markup é compartilhado, ganha dados próprios ou deixa a página mais fácil de ler. Comece de cima para baixo pela página ou de baixo para cima pelos dados, e divida em blocos menores conforme o produto cresce.
O Nimbly não traz uma biblioteca de componentes prontos. Uma biblioteca de componentes decide de antemão como são os cartões, menus e formulários de um projeto; o Nimbly deixa isso para o projeto, para que cada um componha os blocos de que seu design e seus dados realmente precisam.
Templates continuam sem lógica
Um template exibe valores, repete um template para uma lista e, no máximo, escolhe qual template vem a seguir. Decisões e cálculos ficam em bibliotecas, onde podem ser lidos e testados num só lugar. Isso mantém o markup legível para designers e desenvolvedores de frontend, e mantém as regras de negócio fora da apresentação.
[#data projects filter=published:1 sort=year|numeric|desc#]
<ul class="grid gap-8 md:grid-cols-3">
[#repeat data.projects tpl=card-project#]
</ul>
Leia a seguir
- Core e ext: onde ficam os blocos e como um projeto substitui blocos do framework.
- Templates e Bibliotecas.
- Módulos para empacotar uma funcionalidade.