Template engine 的意义
如今 Template engine 的数量令人瞠目
除了最最著名的PHP以外, 在python ruby和perl世界中有无数的项目关注这一领域, 编程天才们各显神通, 有的注重速度(mako), 有的宣称完全 xml based(genshi), 还有的将其他语言中的成功产品克隆到自己的语言当中(Perl的mason就被用其他语言重写), 甚至还有模仿 python 缩进方式的 Template engine, 和针对 CSS 的专用 Template engine 出现, 可谓创意无限.
每一个 web framework 也把 Template engine 作为一项重要的指标, 比如 django 和 rails, 在易用性上做足文章.
让我们回到原点, 我们为什么要使用 Template engine , 其实最根本的原因有二:
1. 我们要重用某些html, 比如有三个html的头部是公用的, 通过模板引擎的整合可以让我们在修改的时候省去打开每一个文件的麻烦.
2. 我们需要将视图view和控制器controller分开, 所以需要 Template engine 将model的数据(controller的变量)渲染到HTML模板中.
相比之下, 第 1 点出于劳动人民的朴素愿望, 也可能是当年PHP被设计出来的初衷.
第 2 点就稍微阳春白雪一点, 提倡 MVC 也就是这几年流行的事情.
最后写总结的时候, 稍稍预测一下未来:
未来我们要写的是web application, 不单单是普通的web page了, 由于ajax的使用, 极有可能把render放到browser上, 后台部分变成纯粹的 web service, 也就是说服务器不再需要 template engine. 或许SSI(Server Side Includes)将会重新登上历史舞台.
这下有人又要问了, 搜索引擎如何搜索包含大量JavaScript且没有内容的网页?
没错, 我也思考了很久. 答案是, 由于后台变成了web service, 搜索引擎就可以直接爬web service得到类似于 rss 这样的标准数据, 而不用去担心无数不规范的 html 了, 的确是更好的选择.
除了最最著名的PHP以外, 在python ruby和perl世界中有无数的项目关注这一领域, 编程天才们各显神通, 有的注重速度(mako), 有的宣称完全 xml based(genshi), 还有的将其他语言中的成功产品克隆到自己的语言当中(Perl的mason就被用其他语言重写), 甚至还有模仿 python 缩进方式的 Template engine, 和针对 CSS 的专用 Template engine 出现, 可谓创意无限.
每一个 web framework 也把 Template engine 作为一项重要的指标, 比如 django 和 rails, 在易用性上做足文章.
让我们回到原点, 我们为什么要使用 Template engine , 其实最根本的原因有二:
1. 我们要重用某些html, 比如有三个html的头部是公用的, 通过模板引擎的整合可以让我们在修改的时候省去打开每一个文件的麻烦.
2. 我们需要将视图view和控制器controller分开, 所以需要 Template engine 将model的数据(controller的变量)渲染到HTML模板中.
相比之下, 第 1 点出于劳动人民的朴素愿望, 也可能是当年PHP被设计出来的初衷.
第 2 点就稍微阳春白雪一点, 提倡 MVC 也就是这几年流行的事情.
最后写总结的时候, 稍稍预测一下未来:
未来我们要写的是web application, 不单单是普通的web page了, 由于ajax的使用, 极有可能把render放到browser上, 后台部分变成纯粹的 web service, 也就是说服务器不再需要 template engine. 或许SSI(Server Side Includes)将会重新登上历史舞台.
这下有人又要问了, 搜索引擎如何搜索包含大量JavaScript且没有内容的网页?
没错, 我也思考了很久. 答案是, 由于后台变成了web service, 搜索引擎就可以直接爬web service得到类似于 rss 这样的标准数据, 而不用去担心无数不规范的 html 了, 的确是更好的选择.
feed