84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
用Java开发写前端页面,传统方式如JSP,模版引擎如Freemarker,Velocity,Thymeleaf,单入口(配合Angular.js,Vue.js等前端框架),只有一个index.html,所有的功能都在这个页面中完成。
业精于勤,荒于嬉;行成于思,毁于随。
单页应用讲究前端渲染,很可能服务器端返回的是一个近乎空的html,类似:
html
客户端(浏览器)下载这段html可以瞬间完成,然后剩下的事就交给前端的这个adsfsafsa234q234.bundle.js脚本来动态的添加DOM元素,添加样式。。。。。
adsfsafsa234q234.bundle.js
DOM
这里要注意的是,前端渲染照样需要模板引擎,如果你看AngularJS的话,他的数据是这样被绑定的:
AngularJS
{{ pageTitle }} {{ user.name }}
而你谈到的诸如:Freemarker,Velocity,Thymeleaf之类的模板引擎是在后端接收到请求之后,组合数据直接渲染html成字符串,然后返回给前端的方式。
Freemarker
Velocity
Thymeleaf
所以二者侧重点不同
@leftstick 回答的真是太棒了。。
根据我工作中的经验,我总结几点。
单页应用的好处:
只有一个页面,降低了复杂性;
完全前后端分离,数据交互通过ajax进行;
部署方便,只要部署css/html/javascript就行;
把渲染放到了客户端,可以降低服务器的压力;
后端的工作量会减小。
坏处么?还没有遇到。。欢迎 @leftstick 补充
哦。坏处是前端的工作量会加大。。哈哈。。
但是要有大局意识啊。前后端整体看来,工作量应该还是减小的。
想到了一个老生常谈的坏处:
不利于SEO
但是这种单页应用一般都是做的后台管理,所以根本不需要SEO,如果能被搜索到,我想大部分人都会禁止掉爬虫来爬你的后台的。。
当然,如果是互联网型的单页应用,可能就需要SEO了。貌似也有相应的解决方案。没深究过。
服务器端渲染和客户端渲染的区别。服务器端渲染是在服务器端生成整个页面发送到客户端,而客户端渲染,则只在第一次拉取整个页面,以后就是拉取数据本身,大大节约了网络开销。
单页应用讲究前端渲染,很可能服务器端返回的是一个近乎空的
html
,类似:客户端(浏览器)下载这段
html
可以瞬间完成,然后剩下的事就交给前端的这个adsfsafsa234q234.bundle.js
脚本来动态的添加DOM
元素,添加样式。。。。。这里要注意的是,前端渲染照样需要模板引擎,如果你看
AngularJS
的话,他的数据是这样被绑定的:而你谈到的诸如:
Freemarker
,Velocity
,Thymeleaf
之类的模板引擎是在后端接收到请求之后,组合数据直接渲染html
成字符串,然后返回给前端的方式。所以二者侧重点不同
@leftstick 回答的真是太棒了。。
根据我工作中的经验,我总结几点。
单页应用的好处:
只有一个页面,降低了复杂性;
完全前后端分离,数据交互通过ajax进行;
部署方便,只要部署css/html/javascript就行;
把渲染放到了客户端,可以降低服务器的压力;
后端的工作量会减小。
坏处么?还没有遇到。。欢迎 @leftstick 补充
哦。坏处是前端的工作量会加大。。哈哈。。
但是要有大局意识啊。前后端整体看来,工作量应该还是减小的。
想到了一个老生常谈的坏处:
不利于SEO
但是这种单页应用一般都是做的后台管理,所以根本不需要SEO,如果能被搜索到,我想大部分人都会禁止掉爬虫来爬你的后台的。。
当然,如果是互联网型的单页应用,可能就需要SEO了。貌似也有相应的解决方案。没深究过。
服务器端渲染和客户端渲染的区别。
服务器端渲染是在服务器端生成整个页面发送到客户端,而客户端渲染,则只在第一次拉取整个页面,以后就是拉取数据本身,大大节约了网络开销。