目前web开发中充斥着各类各样的模板引擎,从前端到后端,性能优劣暂且不论,剖析其大致工做方式,能够归纳为:实例化模板!也就是将Controller处理结果生产的Model数据经过模板引擎渲染View(模板引擎约定的模板),再把渲染后的结果呈现给用户。只不过度前端模板引擎和后端模板引擎之分。 javascript
后端模板引擎,据我接触的Beetl所言,就是在服务器端,实现页面渲染。今天@九月推荐给个人一些前端模板引擎,是工做在前端(也就是客户端,将渲染工做交给了客户端浏览器处理)。比较了一下他们的工做原理,咱们站在更好的节省服务器性能的角度考虑,能够实现一种新的web开发模式,这种模式,不只能够兼顾Web显示方式,并且还兼容客户端访问形式,并且不须要花费太多的代价。 html
首先咱们必需要明确一点,服务器的核心职责是什么?网络服务若是按照MVC模式来表述,服务器的核心职责应该是Controller,数据库的核心职责是Model,客户端或者浏览器的职责是View。从服务器的核心职责上讲,它应该仅仅是接收客户端的请求并做出应答!服务器只负责处理数据,对页面的渲染应该彻底交给客户端来完成,并且客户端是能够胜任的。若是你将浏览器当作是一个能够提供丰富支持的客户端就应该理解了,其实B/S模式本质上也是C/S。 前端
咱们之前开发的WEB程序,对浏览器的概念比较淡泊,形成这样的缘由也许是咱们对浏览器的认识不够形成的。可能咱们认为浏览器很傻瓜,一切都须要咱们告诉他改怎么作怎么作才能正确的完成任务,因此咱们不得不把浏览器本该作的工做抢过来完成--渲染页面!可是目前浏览器已经足够强大,再配合强大的JavaScript,能够说是“再也不傻瓜”了! java
那咱们如今就应该回归本质,让他们各司其责,作本身最拿手的事! git
好了,我作了这么多铺垫,最重要的目的就是提出一种新的WEB开发模式(也许这个模式早已经出现,我可能刚刚感觉到她的魅力而已),这种模式能够兼顾为客户端与浏览器提供服务。 github
大体思路以下: web
当客户端请求服务器时,服务器首先判断请求介质类型,若是是浏览器,将请求处理后的数据汇同页面反馈给浏览器,此页面包含了页面渲染逻辑和处理后的数据,剩下的任务交给浏览器解释;若是请求介质是诸如移动定制客户端,则仅仅须要将数据反馈给客户端便可。 数据库
做为对上一步的优化,若是客户端是浏览器,它需求再次请求同类资源时,彻底能够告知服务器端只须要传递数据便可,仍旧沿用以前的页面处理方式显示数据。 后端
经过这样的处理,能够大大减小浏览器与服务器端交互数据,让服务器更专一于业务,从而达到客户端按需索取的目的。 浏览器
实现这样的处理能够借助于简单的服务器端模板引擎和稍微复杂的前端模板引擎,也就是把浏览器该干的事,还给浏览器!
一些关于前端的模板引擎参考文档:
(1)【javascript激增的思考03】MVVM与Knockout
(2)artTemplate--新一代 javascript 模板引擎
(3)JS的模板引擎实现(一)