88

在网上寻找答案,但找不到任何东西。这段代码真的让我很沮丧,因为我无法理解它。(它是插件的一部分,名为: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>
  • 那么,什么类型text/x-tmpl呢?
  • 这些{%%}标签是什么?
  • 什么解析器执行这段代码?
  • ...

...但想知道这一切。

4

4 回答 4

64

x-tmpl 没有实际意义,它只是阻止浏览器将脚本解释为 javascript。

它主要与 jquery 模板或knockoutjs 模板绑定一起使用。

在某些时候,一个 javascript 数据对象将与模板一起使用来呈现一些 html。数据对象中的值将替换模板中标有 {%} 和类似内容的值,其中一些 {%} 部分反映了代码流,例如循环等。

我不确定哪个模板库使用 {%} 但是,它不是 jquery 模板、jsrender 或淘汰赛。您必须检查示例代码中引用了哪些库。

于 2012-04-05T09:19:34.397 回答
12

那么,text/x-tmpl 是什么类型呢?

一个非标准的。虽然看起来像一个模板。

这些 {% 和 %} 标签是什么?

模板语言的一部分。

什么解析器执行这段代码?

可能是用 JavaScript 编写并导入<script>同一页面上的另一个元素。

于 2012-04-05T09:17:00.930 回答
1

jQuery-File-Upload依赖于JavaScript-Templates使用非标准text/x-tmplmime 类型

于 2019-10-07T10:53:30.093 回答
-3

上面的代码引用了这里的项目 Django Jquery File Upload https://github.com/sigurdga/django-jquery-file-upload

{% %} 是 Django 模板标签。有关更多信息,请访问https://docs.djangoproject.com/en/dev/ref/templates/

这些标签将被 django 模板系统解析

于 2012-09-05T16:26:03.387 回答