入门概念|Thymeleaf与Vue

理解thymeleaf是什么?

​ thymeleaf和vue的区别

​ th是渲染html模板的引擎,vue是前端框架,虽然这么说,但是在这里得先弄明白一件事,即什么是前后端分离?

前后端分离是什么?

​ 原始的时候,使用的是JSP渲染页面,也就是说用户点开网址,看到的其实是JSP渲染的页面;这样做有个毛病,就是页面交互和页面渲染的工作都交付个了JSP去做,导致后台压力很大。

​ 当前后端进行分离后,前端使用前端框架与Vue等对页面进行渲染,后端则专注于提供前端渲染所需的接口。这样后端就不负责页面展示及交互的工作内容了,回归到了提供服务本身。

我刚开始接触前后端分离的时候,正值它开始慢慢扩散的时候,也还没有意识到它带来的好处。觉得它甚是麻烦,当我改一个接口的时候,我需要同时修改两部分的代码,以及对应的测试。反而,还不如直接修改原有的模板来得简单。

可是当我去使用这个,由前后端分离做成的单页面应用时,我开始觉得这些是值得。当页面加载完后,每打开一个新的链接时,不再需要等网络返回给我结果;我也能快速的回到上一个页面,像一个 APP 一样的体现这样的应用。整个过程里,我们只是不断地从后台去获取数据,不需要重复地请求页面------因为这些页面的模板已经存在本地了,我们所缺少的只是实时的数据。
一篇优秀的博文,关于前后端分离https://segmentfault.com/a/1190000009329474?_ea=2038402,将前后端分离从技术角度上升到思想高度。

回归--> thymeleaf和vue的区别是什么?

​ th是模板引擎,什么是模板引擎?就是生成html模板的软件,依靠th,调用th里面的各种写好的函数库,可以在html文件里动态的输出数据,类似于jsp的功能。

​ 而vue是js的框架,js是基于v8引擎实现的一个脚本语言,可以实现很多函数功能,让网页动态呈现。

如果说是JQuery是手工作坊,那么Vue.js就像是一座工厂,虽然Vue.js做的任何事情JQuery都可以做,但无论是代码量还是流程规范性都是前者较优。

​ 如果一定要比较的话,th是强化版html,vue是强化版的jq。

关于th的一些搜索及阅读文档的结论:

​ th是Java写的,有点类似于JSP的东西,支持数据的实时渲染功能,而它是如何实现渲染功能的呢?即th的数据哪里来的?

​ 这不得不从Java是如何实现网络通信说起,也就是说不从Java.socket这么底层说起了(我也没去细了解,大概是最底层的网络api);

Java可以实现服务器功能的底层是sun提供了servlet包,让Java程序可以根据不同请求作出相应,这就有了服务器的基础。

(这个包是作为JavaEE的扩展包而存在的,理论上是要收费的)

​ Java是通过servlet实现的服务器功能,这个servlet是基于http协议的,即只要是基于http协议的请求过来了,我就能给你一个基于http协议的respond。当一个请求过来的时候,可以根据servlet这个包的设计,我们可以在域对象(request,application( ServletContext ),session)里面添加 各种数据,然后当这个请求前往相应的网页时,网页就从这些域对象里面取数据,然后实现交互的功能。

​ 讲到这里差不多servlet的通信流程就大致清晰了,在撤回到刚开始的问题,th的数据哪里来呢?刚才说到servlet会重新进入一个网页,而不进入一个普通的网页,而是进入一个整合了th框架的网页,这个网页需要的数据被th框架标记出来,当有数据需要显示的时候,th就去就域对象里找,根据key去找value,找到了就放上去。---在这一过程,和JSP几乎是一模一样的,而取数据用的标记,也非常相似,因此说th是JSP风格和功能的延展。

​ 综上所述,th可以用来在SpringBoot框架上搭建单体项目使用,但是不适合前后端分离的项目。

其实也就是因为SpringBoot不给用JSP了,只给用th了,所以我学了这个,本质上就是SpringBoot框架上的JSP。

servlet与servlet域对象

​ 尚硅谷王振国讲的JavaWeb缺少对servlet和域对象的整体讲解,这里我整理一下。

​ servlet是Java实现服务器功能的重要组件,servlet中含有三个域对象,都是用来存放数据的,不过用途不同;这三个域对象分别是request、session、application,分别是在请求时创建,会话开始时创建,服务器部署时创建,初次之外还有cookie,session的底层是依靠cookie实现的。

​ 这里面有很多可以去了解的东西,涉及到了http协议,我觉得以后有时间了可以去详细的看一看。

相关推荐
scheduleTTe9 分钟前
Nginx
服务器·前端·nginx
techdashen18 分钟前
不开端口,不配 DNS,用树莓派在家搭一个公网可访问的 Web 服务
前端·网络·智能路由器
早起傻一天~G44 分钟前
vue2+element-UI表单封装
前端·vue.js·ui
pixcarp1 小时前
Nginx实战部署与踩坑总结 附带详细配置教程
服务器·前端·后端·nginx·golang
Live&&learn1 小时前
Vue项目打包后内联字符串不显示的原因
前端·javascript·vue.js
爱上好庆祝1 小时前
学习js的第三天
前端·css·人工智能·学习·计算机外设·js
aq55356001 小时前
Chrome如何重塑Web标准的未来格局
前端·chrome
宁雨桥1 小时前
深入剖析Vue2与Vue3响应式原理:从Object.defineProperty到Proxy的演进
前端·vue.js
wytraining1 小时前
SDD规范驱动开发
前端
深海鱼在掘金1 小时前
Next.js从入门到实战保姆级教程(第十四章):性能优化深度实践
前端·typescript·next.js