起初,网站是静态的,服务器直接返回硬盘上网页文件的内容。
进而,在静态内容里穿插几行代码,就动态了,用过 ASP 的都知道是怎么回事。
(早期 PHP 也那样,可是后来 PHP 也发展了)
后来有了前端和后端的分工,前端负责实现网站的样式和交互,后端负责内容,
模板引擎就是一种前后端分离的实现方式。
但模板引擎仍然是在服务器上生成所有页面内容。虽然他们来自不同人的工作。
再后来,有人觉得这样每次刷新页面,变化的不变的都要从服务器传到客户端,
代价大,就搞了所谓 ajax,就是你所说的后面那种模式(的一部分)。
而传统方案有可能导致前后端的界线不那么明确,比如你 jinja2 里实现的逻
辑本质上还是 python 代码,把一个浮点数渲染成字符串,模板做,没问题,
把一个 datetime 对象渲染成字符串,模板做,还凑合,那要把一个 ORM 对象
渲染成一个表单呢?前端不可避免的要接触到后端的逻辑,不利于解耦。
另外,如果要实现浏览器和用户的交互,前端肯定要用到 javascript,但模板
引擎要么就是后端语言(比如 jinja2 - python,当然 jinja2 也有其它语言
的实现),要么就是一种生造的语言。既然前端已经用了 javascript,那为什
么要再学一种新的呢?
所以后者现在更时兴,因为界线就在 HTTP 请求上,后端无论什么语言,实现
的都是一样的 HTTP 响应,前端只用 javascript 来解析响应,填充页面就行
了。页面的空壳,就像最初的网站一样,直接由 HTTP 服务器来处理。
两种方式也可能有交集,比如用 ajax 请求渲染好的 HTML 页面(的一部分),
或者说首页用模板填充,翻第二页的时候用 API 动态加载。两种都不是万能的
得看具体情况。
【 在 ToTOtOToT 的大作中提到: 】
: 最近在学flask,发现里面的jinja2在渲染填充网页方面很强大,基本上都可以通过后台获取数据后,直接用模板渲染得到网页然后推送给浏览器。
: 印象中,还有一种模式是用javascript动态获取数据,然后动态渲染填充网页。而web框架主要提供一个静态页面的展现和相应API。
: 感觉对简单的网页来说,这两个方案没什么差别。但是还是想了解一下,决定两者的选择会有哪些方面的考量?
: ...................
--
FROM 221.217.55.*