在单个文件中加载骨干/下划线模板

Loading templates in a single file for backbone / underscore

本文关键字:下划线 单个 文件 加载      更新时间:2023-09-26

我有一个骨干应用程序,它由symfony2服务器提供服务。

我有许多骨干视图,每个视图都有几个模板,这些模板在不同的时间使用underscore的模板引擎渲染。

我正在努力找出如何以最高效率为客户端服务下划线模板。

到目前为止,我已经用twig编写了所有模板,然后在初始请求期间将它们作为内联脚本标记呈现给响应HTML。这导致在用户第一次进入我的应用程序时,服务器的响应时间很长。

输出示例:

<html>
<head>
   ...
</head>
<body>
    <script type="text/template" id="template1">
        <div class="example">
            <%= someparam %>
        </div>
    </script>
    <script type="text/template" id="template2">
        <div class="anotherExample">
            <%= otherparam %>
        </div>
    </script>
    ...
    ...
    ...
</body>
</html>
替代

现在我正在寻找一个更好的方式来加载这些模板。也许是通过在单个文件(如外部JS文件)中的第二个请求中获取它们。但是,无论我尝试过什么,我都发现很难访问单个模板(如通过id引用它们)或将它们全部保持在一个有效的结构中(在单个文件中,没有太多的字符串操作或太多的http请求)。

TL;博士

如何加载多个下划线模板?

您可以考虑JST方法,即将模板连接到单个javascript文件中。该模式将在主干模式教程中进行描述。

我不熟悉Symfony/Twig,所以我不知道是否有任何可用的工具。根据你的问题,我猜很容易使用现有的工具将模板渲染成javascript文件,而不是HTML文档。

我认为更好的方式为你-它的预编译模板,尝试使用jsttojs,它会帮助你得到一个单一的文件与所有的模板。

例如,从命令行
jsttojs templates compiled/templates/index.js --ext mustache --watch

或使用grunt的解决方案,grunt-jsttojs