前言

vue开发的项目有时候会有SEO的需求,由于vue是JavaScript框架,内容都在JavaScript和服务端,所以SEO效果很差。vue的服务端渲染又很难和现在成熟的springboot等后端框架契合。本文介绍一种通过springboot+thymeleaf这样传统的前后端分离方案,再整合vue,从而在兼顾vue开发便利性的同时,获得不错的SEO效果。

核心思路

  • 将需要SEO的内容,通过springboot赋值给thymeleaf,然后由thymeleaf直接渲染出来。
  • 不需要SEO的内容、交互性比较强的内容。通过thymeleaf模板里的vue代码来完成交互。
  • 需要SEO,又有一定的交互性,想用Vue来开发。这种情况,使用springboot传递内容给thymeleaf,然后thymeleaf传递给Vue,Vue使用slot来渲染。【听着很晕没关系,后面一看代码就明白了】

主要内容

  • 如何使用thymeleaf+vue才能有一定的SEO效果
  • 如何在springboot+thymeleaf框架下整合vue,使用thymeleaf给vue赋值。

一、thymeleaf+vue的SEO优化

设想一个需求:开发一个导航栏,导航栏的导航链接由后端返回,需要SEO,让搜索引擎爬虫能够抓取。同时导航栏链接的active激活效果,又想用vue来控制。导航栏的用户头像等信息不需要SEO,但有比较复杂的交互状态。比如消息提醒角标等等。

思路: 使用vue开发一个名为HeaderNav的组件,导航栏的内容通过slot传入组件,导航链接通过Vue的插槽Prop特性,由HeaderNav组件控制class实现。大概的代码如下:

<Header-Nav
:login-Modal-Show="false" v-bind:login-Status-Prop="true"
th:v-bind:login-Status-Prop="|${userDO ne null}|"
>
<template v-slot:nav="slotProps">
<ul class="inline-flex ml-10 py-5 font-semibold" id="navTop">
<li class="px-3">
<a style="letter-spacing: 3px;" :class="slotProps.navClass.index" href="/">
博客
</a>
</li>
<li class="px-3"><a style="letter-spacing: 3px;"
:class="slotProps.navClass.book"
href="/books.html" th:href="@{/books}">专栏</a></li>
</ul>
</template> </Header-Nav>

这样的设计,能够让搜索引擎的爬虫爬取到slot中的导航链接,同时又可以使用vue来控制各种交互效果。

二、thymeleaf如何给vue赋值、传递参数

在thymeleaf中使用vue,需要SEO的内容肯定要通过thymeleaf来传递给vue。这方面很难找到对应的文档,作者把自己的实战经验写出来。

  • thymeleaf赋值给vue的v-bind。th:v-bind:login-Status-Prop="|${userDO ne null}|",不要使用v-bind的简写:变量,一定要使用v-bind:变量。然后用|来包围thymeleaf的$赋值语法。
  • thymeleaf赋值给vue的v-on。th:v-on:click="|jump('${name}')|",使用|包围click的内容,里面有对应的vue method,method的入参可以使用thymeleaf传递进去。

版权声明:《Springboot+thymeleaf结合Vue,通过thymeleaf给vue赋值解决Vue的SEO问题》为CoderBBB作者「ʘᴗʘ」的原创文章,转载请附上原文出处链接及本声明。

原文链接:https://www.coderbbb.com/article/n

Springboot+thymeleaf结合Vue,通过thymeleaf给vue赋值解决Vue的SEO问题的更多相关文章

  1. 图书-技术-SpringBoot:《Spring Boot2 + Thymeleaf 企业应用实战》

    ylbtech-图书-技术-SpringBoot:<Spring Boot2 + Thymeleaf 企业应用实战> <Spring Boot 2+Thymeleaf企业应用实战&g ...

  2. SpringBoot集成前端模版(thymeleaf)

    1.在application.properties配置文件中添加 thymeleaf 的配置信息 spring.datasource.driverClassName=com.mysql.jdbc.Dr ...

  3. SpringBoot thymeleaf使用方法,thymeleaf模板迭代

    SpringBoot thymeleaf使用方法,thymeleaf模板迭代 SpringBoot thymeleaf 循环List.Map ============================= ...

  4. 解决vue+springboot前后端分离项目,前端跨域访问sessionID不一致导致的session为null问题

    问题: 前端跨域访问后端接口, 在浏览器的安全策略下默认是不携带cookie的, 所以每次请求都开启了一次新的会话. 在后台打印sessionID我们会发现, 每次请求的sessionID都是不同的, ...

  5. 【SpringBoot实战】视图技术-Thymeleaf

    前言 在一个Web应用中,通常会采用MVC设计模式实现对应的模型.视图和控制器,其中,视图是用户看到并与之交互的界面.对最初的Web应用来说,视图是由HTML元素组成的静态界面:而后期的Web应用更倾 ...

  6. SpringBoot(四)之thymeleaf的使用

    这篇文章将更加全面详细的介绍thymeleaf的使用.thymeleaf 是新一代的模板引擎,在spring4.0中推荐使用thymeleaf来做前端模版引擎. thymeleaf介绍 简单说, Th ...

  7. springboot的推荐模板引擎-Thymeleaf

    1)添加对themeleaf的支持的依赖 <!--Thymeleaf--> <dependency> <groupId>org.springframework.bo ...

  8. SpringBoot入门03-转发到Thymeleaf

    前言 Spring Boot不提倡使用jsp和用View层,而是使用Thymeleaf代替jsp,因为性能可以得到提升. 使用Thymeleaf要加入依赖 Thymeleaf不能直接被访问,它严格遵守 ...

  9. srping boot thymeleaf 学习总结 (2) - thymeleaf properties 国际化 mesaage

    thymeleaf获取配置properties中的数据与thymeleaf国际化(摘录) 使用thymeleaf提供的国际化 有时候会有直接在模板中获取配置文件properties中的配置信息,比如: ...

  10. JS组件系列——又一款MVVM组件:Vue(二:构建自己的Vue组件)

    前言:转眼距离上篇 JS组件系列——又一款MVVM组件:Vue(一:30分钟搞定前端增删改查) 已有好几个月了,今天打算将它捡起来,发现好久不用,Vue相关技术点都生疏不少.经过这几个月的时间,Vue ...

随机推荐

  1. CF796C Bank Hacking

    题目传送门 思路 放眼整个题解区没有我这种解法,因此来写一篇题解. 既然要求我们选择一个节点作为根,那么我们就枚举根. 接下来的问题就是如何 \(\mathcal{O}(1)\) 或 \(\mathc ...

  2. 题解 [AHOI2009]同类分布

    不理解之前为什么不会哈哈哈哈哈哈哈哈. 我是个天才(喜 显然记录 \(f_{i, t, r, s, limit, lead}\),\(i, limit, lead\) 是数位 dp 的套路,\(t\) ...

  3. .Net Core 配置源码学习 (一)

    一 背景 相比.Net Framework , .NET Core的配置系统 ,有一些明显的优点 ,如: 1 支持更丰富的配置源 2 读取配置时, 可以用相同的方式读取, 并且非常方便 3 修改配置后 ...

  4. 计算属性报错:Maximum recursive updates exceeded.

    计算属性或普通函数中有对相关依赖的响应式数据进行一次以上的更新就可能导致达到最大执行的限制: const calcSurplus = computed(() => (k: string) =&g ...

  5. PostgreSQL性能优化综合案例 - 1

    [测试模型] 设计一个包含INSERT, UPDATE, SELECT语句的业务模型用于本优化案例. [测试表] create table user_info (userid int, engname ...

  6. Dev Express 框架自定义登录添加短信验证功能

    需求:登录界面改成这样 记录一下过程,以便下次操作类似的步骤有遗忘,也与大伙儿分享下,如有不当之处请指出,感谢. 参考官网文档:https://docs.devexpress.com/eXpressA ...

  7. P7213 [JOISC2020] 最古の遺跡 3

    这个题刚好是一个月前我们学校联赛组的人考的题的 T4 .今天有幸看见原题. 我当时顺便看了他们的题.想了一个小时,才想出来了如下的麻烦做法. 然后教练让我来讲这个题,我讲得很累,大家也都没有改. 题意 ...

  8. R包本地安装方法

    问题 需要安装一个R的测试包 但是这个包没有在cran中 也没有在biomanager中 于是决定使用devtools-github安装 遇到问题 无法下载github上的R包 策略 使用local方 ...

  9. python实现发票二维码解析

    通过发票左上角的二维码信息,获取发票的关键信息,只需将图片格式的电子发票或扫描后的发票图片传入即可. 测试结果如下: 增值税电子普通发票:{'发票代码': '031xxxxxx311', '发票号码' ...

  10. 肖sir____Apsara Clouder云计算专项技能认证题目收集

    Apsara Clouder云计算专项技能认证: Apsara Clouder云计算专项技能认证:云服务器ECS入门[认证考试真题分享](答案仅供参考) 单选13道题 1.下列哪一个不是重置ECS密码 ...