【问题标题】:Front end templates vs. back end templates前端模板与后端模板
【发布时间】:2015-03-01 19:47:35
【问题描述】:
为什么客户端和服务器端都有模板引擎?在服务器端处理路由不是很自然吗?在什么情况下最好在服务器端进行路由和模板化?在客户端?有没有你想同时使用的情况?
我环顾四周,但没有发现任何东西可以简单地解释这一点。我想我错过了什么。
谢谢!
【问题讨论】:
标签:
angularjs
node.js
handlebars.js
pug
templating
【解决方案1】:
让我一一回答你的问题:
为什么客户端和服务器端都有模板引擎?
很简单,减少服务器端的负载!想象一下,成千上万的用户向服务器端引擎(让我称之为 web/app 服务器)请求,所有请求都从服务器集群处理和服务(以主机为代价)。相信我,从服务器的角度来看,它非常昂贵。另一种选择是只将数据提供给执行表示逻辑的客户端引擎。由于它是客户端中的单个用户数据/逻辑,因此重量轻且速度快。关键是它减少了服务器的负载。
在服务器端处理路由不是很自然吗?
这不仅是自然的,而且是服务器端必须做的(开始)。但是,正如所解释的,在客户端执行表示逻辑可以使用户体验更好。这就是带有 AngularJS 等客户端框架的单页应用程序的由来!
什么情况下最好在服务器端做路由和模板?
在服务器端的情况下不使用术语模板。然而,演示模板(布局和组件)主要在客户端完成,功能模板(数据)在服务器端。服务器端模板只不过是 Web 服务 (API)。
在客户端呢?
如前所述,所有表示层的东西(HTML、CSS、JavaScript)。
在某些情况下您想同时使用两者吗?
我会说,在所有情况下。但是,最好的候选者是门户网站,而不是网站。
希望我能理解您的问题,并且我的回答对您有所帮助。
【解决方案2】:
使用 Angular 这样的 SPA 框架,您只需渲染一次 HTML,然后依靠 Web API 调用来检索您的数据并将其绑定到视图。由于 Web API 调用返回 JSON 模型,因此需要前端模板来在视图中呈现模型。
您将依赖服务器端路由和模板来呈现初始页面,并依赖客户端路由和模板来进行任何后续用户交互(即通过 Web API 调用检索数据)。