做者:赵魏璇
连接:https://www.zhihu.com/question/28725977/answer/116177149
来源:知乎
著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。
做者:貘吃馍香
连接:https://www.zhihu.com/question/28725977/answer/41877597
区别在于如下几点
一、后端渲染
实现:后端拼字符串呗…… (理论上后端模板也是字符串)
好处:模板统一在后端。前端(相对)省事,不占用客户端运算资源(解析模板),只要不大改结构,文字啥的小修改后端改了就行了。
坏处:占用(部分、少部分)服务器运算资源、,response 出的数据量会(稍)大点,模板改了前端的交互和样式什么的同样得跟着联动修改。html
二、前端模板
实现:看这个吧……关于模板引擎的工做方式和性能? - 前端开发 但不只限于正则替换这一招,扫token 生成语法树,再根据语法树拼接也行,或者使用 DOM 模板,借助 DOM API 处理也行,反正招儿多了去了。
好处:不占用服务端运算资源(解析模板),模板在前端(颇有可能仅部分在前端),改结构变交互都前端本身来了,改完本身调就行。不用麻烦后端再联调神马的。
坏处:占用(一部分、少部分)客户端运算资源(解析模板)。前端代码多点,毕竟包含模板代码了么。脚本是否是首次下就慢点了(看你在乎不在乎这个毕竟能304和CDN啥的)。可能形成先后两份模板的状况,总归要后端吐出个首屏啥的先让用户看见吧。那这部分页面模板不就是后端拼好了吐出来的么。前端
三、jquery的html,append等方法(包括浏览器原生相关DOM API)
实现:……这就不说了吧,不就是直接插内容或者DOM节点么。除非后端是直接吐出拼好的页面,不然不关后端是经过接口吐的html字符串仍是模板数据,怎么着不都得是经过这些玩意整页面里去么。
好处:(兴许是)灵活…… 还有由于一竿子捅到底了,直接使用(前端可控的)最终API,因此除了是后端直接吐的页面外,这种方式是(相对)执行效率最高的……
坏处:各类字符串和DOM节点拼来拼去真的很烦……
1.前端渲染是在客户端完成字符串替换,后端渲染固然在服务器完成,这并不说明前端渲染下载的资源就必定比后端渲染要少,有时候须要下载的东西更多,好比多了模板语法,多了某一种模板js文件,你知道,一个页面的性能的绝大部分仍是取决于你下载的内容重量。 2.大部分人说前端渲染能够在客户端生成代码而无需下载,可是生成代码也是很是耗时间的操做,一样生成代码也须要根据服务器返回的数据,仍是须要等待数据下载完成才能着手生成代码。 3.单页面应用可使用前端渲染,在性能不差的条件下能给服务器减小一点压力,并且体验也要好一点,可是除此以外,就要放弃一些东西,好比搜索引擎优化,关键字优化。 4.后台渲染还有一个很是明显的优势,就是可能生成缓存片断,生成静态化文件,这也能够减小数据库查询的性能,甚至减小渲染页面的开销,这对相对数据变化不大的页面很是高效。这些若是在配合一款内存数据库,真的能够很是高效的解决大部分问题 5.从可维护或者工程化来说,前端渲染更好维护,后端也省了不少工做,可是后端省的工做并非不须要作,只是转给了前端而已,前端这个时候可能须要维护俩套代码,最后你会发现,原本应该相同的代码最后不一样了,这是由于某一天你偷个懒,直接更新了模板而没有更新你的静态文件。。。