Szukałem odpowiedzi w sieci, ale nie mogłem nic znaleźć. Ta mała przekąska kodu naprawdę mnie frustruje, ponieważ nie mogę jej zrozumieć. (Jest to część wtyczki o nazwie: 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>
- Więc jaki to typ
text/x-tmpl
? - Co to jest
{%
i co to jest%}
? - Jaki parser wykonuje ten kod?
- ...
... ale chciałbym wiedzieć wszystko na ten temat.
Odpowiedzi:
x-tmpl nie ma prawdziwego znaczenia, po prostu powstrzymuje przeglądarkę przed interpretacją skryptu jako javascript.
Jest używany głównie z szablonami jquery lub wiązaniem szablonów knockoutjs .
W pewnym momencie obiekt danych javascript zostanie użyty w połączeniu z szablonem do renderowania kodu HTML. Wartości w obiekcie danych zastąpią wartości oznaczone przez {%} i podobne w szablonie, z niektórymi sekcjami {%} odzwierciedlającymi przepływ kodu, na przykład pętle itp.
Nie jestem pewien, która biblioteka szablonów używa {%}, jednak nie jest to szablony jquery, jsrender czy knockout. Trzeba by sprawdzić, do jakich bibliotek odwołuje się przykładowy kod.
źródło
Niestandardowy. Wygląda jednak na szablon.
Część języka szablonów.
Prawdopodobnie jeden napisany w JavaScript i zaimportowany w innym
<script>
elemencie na tej samej stronie.źródło
jQuery-File-Upload
ma zależność, odJavaScript-Templates
której używa niestandardowegotext/x-tmpl
typu MIMEźródło
Powyższy kod odwołuje się do projektu Django Jquery File Upload znajdującego się tutaj https://github.com/sigurdga/django-jquery-file-upload
{%%} To tagi szablonu Django. Aby uzyskać więcej informacji, odwiedź https://docs.djangoproject.com/en/dev/ref/templates/
Te znaczniki zostaną przeanalizowane przez system szablonów django
źródło