Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, galera. Venho pensando numa linguagem de template para evitar que códigos de programação sejam usados nos arquivos HTML.
Com minha pouca experiência, na tentativa de tornar a coisa extremamente simples, determinei 2 coisas:
Para a sintaxe, lembrei de como eu organizava o código na época em que eram feitos todos em tabela. E era algo mais ou menos assim:
<!-- paginas -->
<table ...
<!-- fim paginas -->
<!-- conteudo -->
<table ...
<!-- fim conteudo -->
Tendo isso em mãos, cheguei ao seguinte modelo da linguagem:
<div id="nav">
<ul>
<!-- pages -->
<!-- current? -->
<li><a href="{href}"><!-- title --></a></li>
<!-- else -->
<li><a href="{href}" class="current"><!-- title --></a></li>
<!-- /? -->
<!-- /pages -->
</ul>
</div>
Onde <!-- matriz --><!-- /matriz --> seria o loop, em que todas as variáveis usadas dentro seriam propriedades do objeto corrente da matriz, sem a necessidade de referenciá-lo; <!-- current? --><!-- else --><!-- /? --> a condição; {href} a saída dentro de atributo HTML; e <!-- title --> (que seria o equivalente a matriz[x][title]) a saída em conteúdo HTML.
Como o template deve informar quais dados ele espera receber, o início de todos os arquivos HTML seria composto de algo parecido com:
<!-- has pages[current, href, title, desc] -->
<!-- has content -->
<!DOCTYPE html>
...
Bom, é isso. Preciso de sugestões, informações, críticas etc.
Obrigado. Um abraço.
Ainda acho que o Smarty oferece uma complexidade desnecessária pro template. Ele está mais voltado a quem sabe lógica de programação do que para quem só está acostumado com HTML e CSS.
Smarty:
{foreach $foo as $bar}
{if $bar@iteration is div by 4}
</tr><tr>
{/if}
<td>{$bar}</td>Eu acho que isso poderia ser simplificado para:
<!-- foo -->
<!-- is_div? -->
</tr><tr>
<td><!-- content --></td>Realmente, hoje, usar a Smarty é matar formiga com bala de canhão.
Mas você já experimentou outras alternativas, sei lá, como o Twig por exemplo. Eu não uso, mas me pareceu interessante e sem toda complicação desnecessária.
E esse framework de domínio específico não foi criado por "qualquer um". Por trás dele está o Fabio Potencier, criador do Symfony então, no nda, no nada, ruim não deve ser.
Mas acredito que esse Twig é complexo do mesmo modo que o Smarty, seria legal ter algo bem simples, tão legal quanto impossível.
Como eu disse eu não uso, mas pela documentação é notável o quão mais simples ele é.
Como todo framework, biblioteca ou componente terceirizado haverá a curva de aprendizado. Mas pelo menos num primeiro momento, a do Twig me pareceu bem simples.
Não estou defendendo-o, longe disso, afinal só quem usa pode afirmar, mas como a primeira impressão é a que fica, se eu precisasse, eu daria uma chance.
Pois é. Eu estou envolvido num projeto de consultoria para web designers free lancers que estão iniciando no mercado, permitindo que eles possam oferecer sistemas complexos (dinâmicos) com conhecimento apenas em HTML e CSS.
Acontece que muitos deles nem HTML sabem, nós teríamos que ensinar. Por isso seria interessante que a linguagem de template fosse muito próxima à natureza do HTML (e não à lógica de programação, como costuma ser).
Não vejo problemas em criar isso, mas é sempre bom ter sugestões. O Twig eu não conhecia, por exemplo.
Quer criar uma linguagem de template? Mas como?
Se a pessoa sequer save HTML, então ela não deve trabalhar com Web. Ou ela atua exclusivamente no desenvolvimento da arte e o verdadeiro webdesigner se coça pra exportar corretamente, ou ela tem de aprender a fazer por si mesma.
Nesse quesito, algo que eu acho ser de extrema importância, é a documentação do framework/biblioteca ter um capítulo específico para Designers, que pegue na mão da pessoa e guie por toda a base de funcionamento.
Mas mesmo assim, o mínimo de conhecimento de HTML a pessoa tem de ter.
Eu só acho que você não deveria reinventar a roda. Criar um sistema de templates é complicado pois análise de tokens não é uma coisa trivial, pelo meno não com PHP que é a linguagem que eu programo.
Uma idéia que me ocorreu agora, seria você criar um simples replacer, que converteria as marcações em estilo de comentários pelas devidas tags proprietárias do sistema de templates que escolher, seja o Twig ou outro.
Arquivo replace.php
<?php
str_replace("{tabela}", "<table>", file_get_contents(index.php));
str_replace("{/tabela}", "</table>", file_get_contents(index.php));
?>
Arquivo index.php
<?php include ('replace.php'); ?>
{tabela}
...
{/tabela}
Algo assim será que funcionaria? :huh:
De uma forma bem sucinta, o objetivo desse meu projeto é profissionalizar os "sobrinhos", se é que me entende. :yay:
O que você disse é perfeito e é o que norteia isso tudo:
>
o mínimo de conhecimento de HTML a pessoa tem de ter
Sobre a linguagem, quando pensei em comentários, também pensei na possibilidade de ter que fazer tudo do zero. Como os comentários são elementos DOM válidos e a maioria das linguagens possui uma biblioteca para lidar com XML/HTML, eu já elimino a tarefa de ter que ficar procurando pelos tokens.
O PHP, por exemplo, tem aquela biblioteca DOMDocument. Usando o XPath, eu posso procurar por "//comment()" e ter acesso a todos os comentários do documento. O trabalho se "resumiria" em identificar os comandos e processar o conteúdo.
Mas a ideia que você deu foi excelente e vai poupar um trabalho enorme. Eu não preciso aplicar a função de cada comando, basta substituir por algo que já faça a mesma coisa. Mas eu estava pensando, nem precisa ser pra outra linguagem de template, eu posso trocar diretamente pra instruções PHP e deixar que o próprio faça o trabalho sujo com eval().
<!-- pages -->
<li>...
<!-- /pages -->
Para:
<?php foreach($pages as $page): ?>
<li>...
<?php endforeach; ?>Uma dica, evite eval() sempre que possível.
Dá para criar umas funções no estilo de HTML Helper de frameworks e usar para criar os templates, mas sei lá se seria algo "correto" de se fazer. :ermm:
Eu acho que não seria mesmo o mais correto porque a função dos View Helpers é agilizar o trabalho do programador já experiente. Pessoas que tem conhecimento pra fazer determinada tarefa com ou sem o helper e que pode se dar ao "luxo" de utilizá-lo.
Esse tópico tá bem fora de contexto, vamos movê-lo para outra sala mais adequada, Moderadores?
A princípio, eu realmente queria dicas sobre sintaxe e, claro, referências de outras linguagens, do ponto de vista de quem trabalha com HTML. Mas acho que agora o problema (ou a solução) está mais para a programação, então, se for possível, podem transferir o tópico pra área de PHP.
Não é pra isso que aquele tal de Smarty serve?