当前位置: 首页 > news >正文

入门概念|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协议,我觉得以后有时间了可以去详细的看一看。

http://www.xdnf.cn/news/1377991.html

相关文章:

  • 路由基础(二):路由表和FIB表
  • Day7--HOT100--54. 螺旋矩阵,48. 旋转图像,240. 搜索二维矩阵 II
  • 【JAVA实现websocket】
  • Java设计模式之《外观模式》
  • 大模型安全概述、LlamaFirewall
  • 深度学习---卷积神经网络CNN
  • Git-远程操作
  • AI-Agent 深度科普:从概念到架构、应用与未来趋势
  • JVM之【Java对象在内存中的结构】
  • Linux--->网络编程(TCP并发服务器构建:[ 多进程、多线程、select ])
  • Linux 系统调优与CPU-IO-网络内核参数调优
  • MySQL InnoDB vs MyISAM
  • 深度学习——卷积神经网络CNN(原理:基本结构流程、卷积层、池化层、全连接层等)
  • LeetCode - 反转链表 / K 个一组翻转链表
  • day2_softmax回归的实现 李沐动手学深度学习pytorch记录
  • 神经网络学习笔记12——高效卷积神经网络架构MobileNet
  • PLC_博图系列☞基本指令”S_ODT:分配接通延时定时器参数并启动“
  • leecode-三数之和
  • 如何防御安全标识符 (SID) 历史记录注入
  • 【Linux实时内核机制】ww_rt_mutex 的contending_lock异常问题
  • wireshark解析FLV插件分享
  • Unity Shader unity文档学习笔记(二十一):几种草体的实现方式(透明度剔除,GPU Instaning, 曲面细分+几何着色器实现)
  • HTML5超详细学习内容
  • GPIO推挽和开漏的名称由来和本质含义
  • FactoryBean接口作用
  • 使用Stone 3D快速制作第一人称视角在线小游戏
  • 【PyTorch】基于YOLO的多目标检测项目(二)
  • 基于Cursor AI IDE的Vue3留言板系统实战:从零搭建到智能优化全流程
  • 《金融对账系统雪崩隐患的深度复盘与架构重生》
  • 从CTFshow-pwn入门-pwn40理解64位栈溢出不都需要堆栈平衡