Springboot+thymeleaf结合Vue,通过thymeleaf给vue赋值解决Vue的SEO问题

作者: ʘᴗʘ发布时间:2021-09-16 21:22 浏览量:910 点赞:624 售价:0

前言

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/articles/7

其它推荐:

  • springboot打印error报错信息到钉钉群

    本文介绍了一种全新的springboot日志打印形式。通过一些配置,可以直接将springboot项目的报错打印到钉钉群,加大减轻了运维人员工作量,并能够及时的获取到服务器的错误信息,更快修正。

  • HTML中javascript的<script>标签使用方法详解

    详细介绍了HTML网页中引入JavaScript的<script></script>标签的用法,逐一解释了其中async、charset、defer、language、src、type等属性的意义和用法。

  • cookie一段时间免登录、登录保持设计思路

    本文介绍了如何通过cookie实现常见的网站登录保持、免登录。详细讲解了cookie在日常使用中的一些安全问题,并逐一提供了解决方案。按照本文的思路和步骤,可以方便的实现一个最基础的cookie免登录机制。

  • 【真实数据】日访问量一万PV的网站需要什么配置的服务器?

    日访问量一万PV的网站,需要什么配置的服务器呢?本文以本站的真实数据为例,一步一步分析、推算了大概需要的服务器配置。

  • 通过Maven将指定Jar包下载到指定的本地目录

    本文介绍如何使用maven把一些需要下载到本地的Jar包下载下来。有时候我们开发一些java项目的时候,并没有使用maven管理包,但是又需要一些常用的包,那么可以使用maven来将这些包下载到本地,从而导入项目

  • springboot整合mybatis查询mysql数据库教程

    本文介绍如何在springboot中整合mybatis来查询mysql数据库,包括各种join查询、主键自动生成、复杂resultMap映射、in查询等,通过阅读本文可以掌握springboot+mybatis的常用各种语法。

  • 恶意采集器模拟百度蜘蛛UserAgent怎么防御?

    网站总是被各种采集器、恶意软件模拟成搜索引擎蜘蛛采集?通过本文介绍的方法,可以彻底屏蔽伪造搜索引擎UserAgent的恶意请求,保护系统安全。

  • maven jar包新版本检测工具推荐

    maven构建的工程时间久了,想升级pom.xml中引入的jar包版本很繁琐,需要逐一检查、替换、升级。本文介绍了一种可以快速检测、升级pom.xml中jar包的工具,可以方便的为maven构建的工程升级依赖jar包。

  • Netty使用阿里云SSL证书配置SSL

    本文介绍了如何使用阿里云购买的SSL证书来配置Netty,使Netty支持SSL加密的TCP连接。由于直接从阿里云下载的证书文件无法使用,还需要通过OpenSSL做一些格式转换。转换好的pem和key文件,加载到netty的handler中即可完成netty的ssl升级

  • java模拟登录TpLink路由器,获取连接WIFI的设备列表

    本文通过Java代码实现了模拟登录TpLink路由器后台,并抓取连接路由器的所有WIFI设备列表。

user

ʘᴗʘ

77
文章数
75165
浏览量
57659
获赞数
67.80
总收入