我有一个包含动态内容的网页,比如说是一个产品页面。当用户直接访问example.com/product/123时,我希望能够在服务器上呈现我的产品模板并将HTML发送到浏览器。然而,当用户稍后点击链接/product/555时,我想使用JavaScript在客户端更新模板。
我想使用类似Knockout.js或Angularjs的东西,但我不知道如何在服务器上预先填充这些模板的一些初始数据,并仍然使客户端模板正常工作。例如,如果我的Angular模板如下所示:
似乎我的唯一选择是将服务器渲染的 HTML 与单独的匹配模板一起发送到浏览器...?
在这种情况下,我想避免编写每个模板两次。这意味着我需要切换到 JavaScript 作为我的服务器语言(这让我感到不满意),或选择一个可以编译成 Java 和 JavaScript 的模板语言,然后找到一种方式将其集成到 Play Framework 中(这是我目前使用的框架)。
有人有什么建议吗?
我想使用类似Knockout.js或Angularjs的东西,但我不知道如何在服务器上预先填充这些模板的一些初始数据,并仍然使客户端模板正常工作。例如,如果我的Angular模板如下所示:
<ul>
<li ng-repeat="feature in features">
{{feature.title}}
<p>{{feature.description}}</p>
</li>
</ul>
当用户直接访问URL时,我需要一个仍然作为Angular模板工作的东西,但是填充了当前产品的html。显然这样做行不通:
<ul>
<li ng-repeat="feature in features">Hello
<p>This feature was rendered server-side</p>
</li>
<li>Asdf <p>These are stuck here now since angular won't replace them when
it updates.... </p></li>
</ul>
似乎我的唯一选择是将服务器渲染的 HTML 与单独的匹配模板一起发送到浏览器...?
在这种情况下,我想避免编写每个模板两次。这意味着我需要切换到 JavaScript 作为我的服务器语言(这让我感到不满意),或选择一个可以编译成 Java 和 JavaScript 的模板语言,然后找到一种方式将其集成到 Play Framework 中(这是我目前使用的框架)。
有人有什么建议吗?
ng-hide
的建议非常有前途。你能否把这个建议放到你的回答正文中呢? - Ian Clark