作者:赵魏璇
链接:https://www.zhihu.com/question/28725977/answer/116177149
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 
作者:貘吃馍香
链接:https://www.zhihu.com/question/28725977/answer/41877597

区别在于以下几点

1、后端渲染
实现:后端拼字符串呗…… (理论上后端模板也是字符串)
好处:模板统一在后端。前端(相对)省事,不占用客户端运算资源(解析模板),只要不大改结构,文字啥的小修改后端改了就好了。
坏处:占用(部分、少部分)服务器运算资源、,response 出的数据量会(稍)大点,模板改了前端的交互和样式什么的一样得跟着联动修改。

2、前端模板
实现:看这个吧……关于模板引擎的工作方式和性能? - 前端开发 但不仅限于正则替换这一招,扫token 生成语法树,再根据语法树拼接也行,或者使用 DOM 模板,借助 DOM API 处理也行,反正招儿多了去了。
好处:不占用服务端运算资源(解析模板),模板在前端(很有可能仅部分在前端),改结构变交互都前端自己来了,改完自己调就行。不用麻烦后端再联调神马的。
坏处:占用(一部分、少部分)客户端运算资源(解析模板)。前端代码多点,毕竟包含模板代码了么。脚本是不是首次下就慢点了(看你在意不在意这个毕竟能304和CDN啥的)。可能造成前后两份模板的情况,总归要后端吐出个首屏啥的先让用户看见吧。那这部分页面模板不就是后端拼好了吐出来的么。

3、jquery的html,append等方法(包括浏览器原生相关DOM API)
实现:……这就不说了吧,不就是直接插内容或者DOM节点么。除非后端是直接吐出拼好的页面,否则不关后端是通过接口吐的html字符串还是模板数据,怎么着不都得是通过这些玩意整页面里去么。
好处:(兴许是)灵活…… 还有因为一竿子捅到底了,直接使用(前端可控的)最终API,所以除了是后端直接吐的页面外,这种方式是(相对)执行效率最高的……
坏处:各种字符串和DOM节点拼来拼去真的很烦……

1.前端渲染是在客户端完成字符串替换,后端渲染当然在服务器完成,这并不说明前端渲染下载的资源就一定比后端渲染要少,有时候需要下载的东西更多,比如多了模板语法,多了某一种模板js文件,你知道,一个页面的性能的绝大部分还是取决于你下载的内容重量。
2.大部分人说前端渲染可以在客户端生成代码而无需下载,但是生成代码也是非常耗时间的操作,同样生成代码也需要根据服务器返回的数据,还是需要等待数据下载完成才能着手生成代码。
3.单页面应用可以使用前端渲染,在性能不差的条件下能给服务器减少一点压力,而且体验也要好一点,但是除此之外,就要放弃一些东西,比如搜索引擎优化,关键字优化。
4.后台渲染还有一个非常明显的优点,就是可能生成缓存片段,生成静态化文件,这也可以减少数据库查询的性能,甚至减少渲染页面的开销,这对相对数据变化不大的页面非常高效。这些如果在配合一款内存数据库,真的可以非常高效的解决大部分问题
5.从可维护或者工程化来讲,前端渲染更好维护,后端也省了很多工作,但是后端省的工作并不是不需要做,只是转给了前端而已,前端这个时候可能需要维护俩套代码,最后你会发现,本来应该相同的代码最后不同了,这是因为某一天你偷个懒,直接更新了模板而没有更新你的静态文件。。。

后端渲染html、前端模板渲染html,jquery的html的更多相关文章

  1. vue前端渲染和thymeleaf模板渲染冲突问题

    vue前端渲染和thymeleaf模板渲染冲突问题 话不多说直接上现象: 解决办法: 在此做个记录吧,说不定以后会碰到 <<QIUQIU&LL>>

  2. 前端模板文件化jQuery插件 $.loadTemplates

    工作中使用前端模板引擎,如 artTemplate.jsRender,来替代拼接字符串. 可是直接把模板写在页面上会带来页面臃肿,模板无法重用,与 ASP.NET等后端语言语法冲突等问题. 所以将多个 ...

  3. Django——2 路由分配设置 re_path正则匹配 include总路由 url传参 name使用 模板渲染render方法 模板渲染方法

    Django 路由分配设置 re_path正则匹配 include总路由设置 url额外参数的传递 name的使用 模板的渲染:render方法   路由的分配中, 可以设定相应的转换器加以约束,比如 ...

  4. 细说后端模板渲染、客户端渲染、node 中间层、服务器端渲染(ssr)

    细说后端模板渲染.客户端渲染.node 中间层.服务器端渲染(ssr) 前端与后端渲染方式的发展大致经历了这样几个阶段:后端模板渲染.客户端渲染.node 中间层.服务器端渲染(ssr). 1. 后端 ...

  5. jquery jtemplates.js模板渲染引擎的详细用法第一篇

    jquery jtemplates.js模板渲染引擎的详细用法第一篇 Author:ching Date:2016-06-29 jTemplates是一个基于JQuery的模板引擎插件,功能强大,有了 ...

  6. [Flask] Flask问题集(后端模板渲染项目)

    1.redirect和render_template的区别? redirect:重定向,会改变url render_template:模板渲染,用模板来渲染当前页,不会改变url 2.关于 'g' 对 ...

  7. 出位的template.js 基于jquery的模板渲染插件

    找了好几款基于jquery的模板渲染插件,无一感觉很难用(教程较少.绑定不统一),也可能我智商问题,比如jquery template.js .jtemplate.js. 然后在github上找到这一 ...

  8. jquery jtemplates.js模板渲染引擎的详细用法第三篇

    jquery jtemplates.js模板渲染引擎的详细用法第三篇 <span style="font-family:Microsoft YaHei;font-size:14px;& ...

  9. jquery jtemplates.js模板渲染引擎的详细用法第二篇

    jquery jtemplates.js模板渲染引擎的详细用法第二篇 关于jtemplates.js的用法在第一篇中已经讲过了,这里就直接上代码,不同之处是绑定模板的方式,这里讲模板的数据专门写一个t ...

随机推荐

  1. 深入理解jvm--Java中init和clinit区别完全解析(转)

    转自:http://blog.csdn.net/u013309870/article/details/72975536 init和clinit区别 ①init和clinit方法执行时机不同 init是 ...

  2. Tomcat 发布项目 conf/Catalina/localhost 配置 及数据源配置

    本文介绍通过在tomcat的conf/Catalina/localhost目录下添加配置文件,来发布项目.因为这样对 tomcat 的入侵性最小,只需要新增一个配置文件,不需要修改原有配置:而且支持动 ...

  3. 导入tensorflow:ImportError: libcublas.so.9.0: cannot open shared object file: No such file or director【转】

    本文转载自:https://blog.csdn.net/ksws0292756/article/details/80034086 版权声明:本文为博主原创文章,转载请一定附上博主原文链接,并署名转自Z ...

  4. [CF600E]Lomsat gelral

    题意翻译 一棵树有n个结点,每个结点都是一种颜色,每个颜色有一个编号,求树中每个子树的最多的颜色编号的和. 线段树合并板子题,没啥难度,注意开long long 不过这题$dsu$ $on$ $tre ...

  5. crontab 定时执行脚本出错,但手动执行脚本正常

    原因: crontab 没有去读环境变量,需要再脚本中手动引入环境变量,可以用source 也可以用export 写死环境变量. 为了定时监控Linux系统CPU.内存.负载的使用情况,写了个Shel ...

  6. Firefox管理已经保存的账号和密码

    https://support.mozilla.org/en-US/kb/password-manager-remember-delete-change-and-import You can easi ...

  7. class []的用法

    span[class='test']    =>匹配所有带有class类名test的span标签 span[class *='test']  =>匹配所有包含了test字符串的class类 ...

  8. git看不到别人创建的远程分支

    解决办法: $ git fetch //取回所有分支(branch)的更新.如果只想取回特定分支的更新,可以指定分支名,例:$ git fetch <远程主机名> <分支名> ...

  9. UVA-10801 Lift Hopping (最短路)

    题目大意及分析:一道简单的最短路...好几天没写程序了,憋得难受!!! 代码如下: # include<iostream> # include<cstdio> # includ ...

  10. PHP与Java集成开发详解(一)

    很久以前,有人从www上看到看到天空上一个很亮的亮点,它就是Java语言,与此同时,在另一个地方一位梦想家也看到了一个亮点,它就是PHP. 时间一天天过去,这两个亮点也变得越来越亮,很快,它们受到了编 ...