Grails 具有用于服务器端模板的 GSP。这一切都很好,但是一旦数据到达网络浏览器,它就已经“熟”了。如果我想进行 AJAX 调用以更新模型、获取更新的模型,然后更新 UI,该怎么办?GSP 模板现在对我来说没用了。
我宁愿不刷新页面。人们通常在这里做什么?对服务器端和客户端都使用模板框架?
使用 GSP 和 JQuery 模板之类的东西似乎过于复杂。
我想这个问题不是特定于 Grails,而是一般的网络。
我相信人们开始使用客户端框架来管理不断增长的客户端需求(从骨干网开始,到 Angular/Ember 结束)。
如果您的需求不是那么严格,那么您可能想要使用客户端侧的太阳穴,如车把或小胡子或下划线
您可能有一个 gsp 文件,其中包含页面上包含的各种客户端模板,然后只需使用 javascript 使用示例数据或来自服务器的数据在页面上绘制这些模板。
我不同意 gsp 模板在这种情况下会丢失,除非您正在构建完全动态的体验或单页应用程序,而 grails 通常不是这种情况。
编辑:
我刚刚有一个项目,当我不得不考虑是否需要一起迁移到客户端模板时,我正在使用骨干网。在一种情况下,拥有服务器端模板会更快。我有搜索表单,并通过 Backbone 模型检索搜索结果,因此我可以根据模型数据绘制纯下划线模板,或者让服务器向我发送回 html 以包含在页面上。好吧,那些使用 Backbone 的人已经尖叫着说我必须使用下划线模板,但是因为我必须能够在新选项卡中打开搜索结果并以 Backbone 的方式这样做,有时间限制,不是选择,而是如果请求是 xhr 我为 Backbone 发送了 html 模板,否则我确实渲染了整页。虽然如果我有更多时间,我会只使用客户端模板来做所有事情。
我也使用 Angular 并且只使用客户端模板。如果我想使用服务器为 Angular 构建模板,它应该是“我什至现在都不知道”。
当我们遇到像你这样的情况时,我们使用 ajax,在我们的操作中,我们渲染 gsp 模板并在 ajax 回调中返回更新的 html。客户端,我们只是用我们从服务器收到的新 html 替换适当的元素。我们将视图设计为非常模块化,以便我们可以通过 ajax 用渲染模板替换非常精细的部分。