【问题标题】:When to use JavaScript template engines?何时使用 JavaScript 模板引擎?
【发布时间】:2011-01-05 19:53:09
【问题描述】:

这是来自 Ben Nadel 的演示单页长寿命 AJAX 应用程序的 JavaScript 模板示例,取自:[source]

<script id="contact-list-item-template" type="application/template">

    <li class="contact clear-fix">

            <div class="summary">
                    <a class="name">${name}</a>
            </div>

            <div class="actions">
                    <a href="javascript:void( 0 )" class="more">more</a> &nbsp;|&nbsp;
                    <a href="#/contacts/edit/${id}" class="edit">edit</a> &nbsp;|&nbsp;
                    <a href="#/contacts/delete/${id}" class="delete">delete</a>
            </div>

            <dl class="details clear-fix">
                    <dt>
                            name:
                    </dt>
                    <dd>
                            ${name}
                    </dd>
                    <dt>
                            phone:
                    </dt>
                    <dd>
                            ${phone}
                    </dd>
                    <dt>
                            email:
                    </dt>
                    <dd>
                            ${email}
                    </dd>
            </dl>

    </li>

我想问一下使用这样的 JavaScript 模板引擎的目的是什么? 是为了节省带宽吗?这只是Separation of concerns 的问题吗?它是否有助于解决浏览器内存泄漏问题?

什么时候应该使用模板引擎,什么时候使用原始 HTML AJAX 响应更容易?

相关讨论:

JQuery templating engines

【问题讨论】:

  • 我也想知道:我们什么时候使用客户端模板?
  • @Jr:请参考我的回答。

标签: javascript html templates memory-leaks separation-of-concerns


【解决方案1】:

模板化在一些场景中是一个很好的解决方案:

  • 从服务器加载所有数据,尤其是在富豪列表显示中
  • 在列表中添加或更新新项目
  • 您需要在页面中添加新的复杂内容的任何地方
  • 任何需要客户端 HTML 渲染的东西

来源:http://www.west-wind.com/Weblog/posts/509108.aspx

【讨论】:

  • “任何需要客户端 HTML 渲染的东西”。 (实际上)不是所有的 HTML 都需要渲染吗?或者你的意思是当 javascript 被用来动态渲染东西的时候?
【解决方案2】:

template engine 使我们能够在应用程序中使用静态模板文件。在运行时,模板引擎将模板文件中的变量替换为实际值,并将模板转换为发送给客户端的 HTML 文件。这种方法可以更轻松地设计 HTML 页面。

不过,我们各有利弊

优点:

  • 鼓励良好的代码组织(数据生成与 演示代码)。
  • 输出生成更具表现力(模板语法不 需要大量的字符串连接)
  • 提高生产力(常见问题,例如输出编码、 迭代、条件等已被处理)。
  • 总体上通常需要较少的代码(尤其是 Jade 的语法非常简洁)

缺点:

  • 一些性能开销,即您可以动态生成 HTML 这比模板引擎快。
  • 还有一件事要学

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多