Javascript 服务器视图模板与带有ajax请求的客户端模板

Javascript 服务器视图模板与带有ajax请求的客户端模板,javascript,html,ajax,handlebars.js,pug,Javascript,Html,Ajax,Handlebars.js,Pug,我目前很难找到一个好的解决方案来确定如何/何时在服务器端“呈现”(生成html)数据,而不是在客户端通过ajax请求呈现数据 下面是一个示例问题 “我的客户机代码”在每个页面上都有一个搜索栏,在用户点击“提交”之前,该搜索栏应提供搜索结果预览。其路径是/ajax/search?query=… 用户点击submit后,客户端向路由/results发送请求,并返回结果页面 我可以想到两种选择,两种选择似乎都有利弊 我可以在服务器上使用Jade(或其他模板引擎)呈现所有生成的html代码,如下调用所示

我目前很难找到一个好的解决方案来确定如何/何时在服务器端“呈现”(生成html)数据,而不是在客户端通过ajax请求呈现数据

下面是一个示例问题

“我的客户机代码”在每个页面上都有一个搜索栏,在用户点击“提交”之前,该搜索栏应提供搜索结果预览。其路径是
/ajax/search?query=…

用户点击submit后,客户端向路由
/results
发送请求,并返回结果页面

我可以想到两种选择,两种选择似乎都有利弊

我可以在服务器上使用Jade(或其他模板引擎)呈现所有生成的html代码,如下调用所示(在Node.js中完成):

或者我可以发送一个空白html页面,如下所示:

HTML

在客户机上进行渲染可以减少冗余代码(我的Jade模板并没有像我的Handlebar模板那样做),并且我可以访问DOM之外的数据(它们存在于模型中,通过主干)

在服务器上进行渲染可以减少对服务器的一次调用,用户无需等待加载原始页面和完成第二个ajax请求即可查看结果


如果您对可能的解决方案有任何建议,我们将不胜感激。

穿上用户的鞋子,做任何让您感觉最好的事情,不要担心微观优化…@dandavis-hmm,好的。我现在决定采用第二种选择,但我希望了解什么是常见的,或者最好是“最佳”的做法。蟋蟀的鸣叫声证明了这一点。根据我的个人经验,确实没有明确的答案。至少现在还没有。如果没有这一点,就回到其他标准去做什么;对于您的用户来说,什么更容易维护和更好?同样,这与您的需求和工具有关。
app.get('/results', function(request, response) {
   var results = getResultsFrom(request);
   response.render('resultsPage', results);
});
<div class="search_results"></div>
<script id="search_result_template" type="text/handlebars-template">
   <!-- Client side template code -->
</script>
    // Type should be of the form '/ajax/search?=...'
    results.url = "/ajax/search"+ $(location).attr('search')
    results.fetch();
    // Render the html generate inside the .search_results div
    resultsView.render();