Estava procurando a resposta na rede, mas não encontrava nada. Esse pequeno pedaço de código realmente me frustra, pois não consigo entender. (Faz parte do plugin chamado: jQuery File Upload)
<script id="template-download" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
<tr class="template-download fade">
{% if (file.error) { %}
<td></td>
<td class="name"><span>{%=file.name%}</span></td>
<td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
<td class="error" colspan="2"><span class="label label-important">{%=locale.fileupload.error%}</span> {%=locale.fileupload.errors[file.error] || file.error%}</td>
{% } else { %}
<td class="preview">{% if (file.thumbnail_url) { %}
<a href="{%=file.url%}" title="{%=file.name%}" rel="gallery" download="{%=file.name%}"><img src="{%=file.thumbnail_url%}"></a>
{% } %}</td>
<td class="name">
<a href="{%=file.url%}" title="{%=file.name%}" rel="{%=file.thumbnail_url&&'gallery'%}" download="{%=file.name%}">{%=file.name%}</a>
</td>
<td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
<td colspan="2"></td>
{% } %}
<td class="delete">
<button class="btn btn-danger" data-type="{%=file.delete_type%}" data-url="{%=file.delete_url%}">
<i class="icon-trash icon-white"></i>
<span>{%=locale.fileupload.destroy%}</span>
</button>
<input type="checkbox" name="delete" value="1">
</td>
</tr>
{% } %}
</script>
- Então, que tipo é
text/x-tmpl
? - O que são essas tags
{%
e%}
? - Qual analisador executa este código?
- ...
... mas gostaria de saber tudo sobre isso.
Respostas:
x-tmpl não tem nenhum significado real, ele simplesmente impede o navegador de interpretar o script como javascript.
É usado principalmente com modelos jquery ou vinculação de modelos knockoutjs .
Em algum ponto, um objeto de dados javascript será usado em conjunto com o modelo para renderizar algum html. Os valores no objeto de dados substituirão aqueles marcados com {%} e semelhantes no modelo, com algumas seções {%} refletindo o fluxo do código, como loops etc.
Não tenho certeza de qual biblioteca de modelos usa {%}, no entanto, não é jquery templates, jsrender ou knockout. Você teria que verificar quais bibliotecas estão sendo referenciadas no código de amostra.
fonte
Um fora do padrão. Mas parece um modelo.
Parte da linguagem do modelo.
Provavelmente um escrito em JavaScript e importado em outro
<script>
elemento na mesma página.fonte
jQuery-File-Upload
tem uma dependência deJavaScript-Templates
qual usa otext/x-tmpl
tipo mime não padrãofonte
O código acima faz referência ao projeto Django Jquery File Upload encontrado aqui https://github.com/sigurdga/django-jquery-file-upload
Os {%%} são tags de template Django. Para obter mais informações, visite https://docs.djangoproject.com/en/dev/ref/templates/
Essas tags serão analisadas pelo sistema de modelos django
fonte