2

为了避免编写为动态页面手动生成 HTML 的 JavaScript 代码(不仅丑陋,而且根本不 DRY),并且考虑到简单和优雅(相对于性能),使用基于字符串的优点是什么客户端上的模板,例如 Mustache.js 或 Handlebars.js,分别检索 json 数据和模板,而不是使用检索服务器端呈现的 html 片段的 REST API?

我的印象是客户端模板是在动态页面上保持简单的最佳方法,但是在使用它之后我发现维护这样的页面有点复杂,它的主要优点是更好的性能和带宽使用,这通常不是我的主要目标。

4

1 回答 1

1

我目前正在使用 Twitter 的 Hogan 库,在此之前我使用的是 Trimpath 库。我是客户端模板的忠实信徒;但它们不应该被滥用。这里有几个论点:

  1. 就像服务器端模板一样,它有助于区分应用程序逻辑和表示。与其在运行时手动创建 DOM 元素的层次结构,不如使用 HTML 定义模板并使用来自 javascript 的数据呈现它,从而创建更易读和更优雅的代码。

  2. 我发现使用客户端模板来重复层次结构(例如 Twitter 帖子、博客条目、新闻文章等)是很实用的……服务器只发送 JSON 数据(大部分时间通过 AJAX 调用),并且数据可以立即绑定到模板。

  3. 我使用的模板引擎使用生成的 HTML 字符串更新 innerHTML。据说这比 DOM 操作更快,但我自己从未运行过基准测试。

  4. 桌面应用程序和 RIA 可以从客户端模板中受益匪浅。他们可以在不依赖第三方解决方案的情况下驱动他们的界面。

  5. 我们可以很容易地在我们的项目中拥有服务器端模板和客户端模板。他们可以很好地合作。在 web 项目中,我不建议我们将模板移植到客户端,只从服务器发送数据。例如,我使用带有 INCLUDE 语句的服务器端模板来构建整个页面。一个模板可以包含另一个模板结构来构建界面。对于客户端模板来说,这是一项复杂的任务,只会创建不必要的代码和开销。

于 2012-11-07T14:48:28.627 回答