Thymeleaf + Vue组件化开发


前言

提示:thymeleaf 固然好,但是 vue 也少不了:

可能 vue 用习惯了之后大部分玩家之后使用脚手架,vuecli vite来实现快速开发,可早早地就忘记了其实还是可以搭配 springboot 的一些模版引擎来完成乱配的效果。


一、vue2

1.引入静态文件

可以先引用 vue.min.js ,这里使用了 th 完成了动态的 静态资源目录

下面引入了 :

assets/js 目录下的: vue、vue-i18n、vue-router

assets/plugins/elemet 目录下的: elementui.js

assets/static 目录下的: 也就是我们自己写的 main.js、i18n.js、router.js

你可以先引入 vue.min.js 和 main.js 来完成最简单的组件引用功能

<!-- ================== BEGIN vue-js ================== -->
<script th:src="|${RES}/js/vue.min.js|"></script>
<script th:src="|${RES}/js/vue-i18n.min.js|"></script>
<script th:src="|${RES}/js/vue-router.min.js|"></script>
<script th:src="|${RES}/plugins/element/elementui.js|"></script>
<script th:src="|${RES}/plugins/element/locale/zh-CN.js|"></script>
<script th:src="|${RES}/plugins/element/locale/en.js|"></script>
<script th:src="|${RES}/static/i18n.js|"></script>
<script th:src="|${RES}/static/router.js|"></script>
<script th:src="|${RES}/static/main.js|"></script>
<!-- ================== END vue-js ================== -->

样式引入:<link th:href="|${RES}/plugins/element/elementui.css|" rel="stylesheet" />

第一行其实就相当于 <script src="/assets/js/vue.min.js"></script>

注意引入顺序,vue.min.js 要在最前面


2.声明组件

我们现在想要声明一个 VueHeader 组件然后在 index.html 里用,那么如何去做?

  1. 在一个文件夹里创建一个 header.html,这里要用到 th:fragment 标签了

给我们的 template 设置一个 id (vue-header),然后 <script> template 里绑定,这就已经跟 .vue 文件差不多了

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<div th:fragment="header">
<template id="vue-header">
    <div id="header" class="app-header app-header-inverse">
       Header
    </div>
</template>
<script>
    const VueHeader = {
        template: '#vue-header',
        components: {
            DtEditor,
        },
        data() {
            return {
                activeLang: ''
            }
        },
        created() {},
        methods: {
            // 切换语言
            changeLang() {
                console.log(`语言切换: ${this.activeLang}`)
                i18n.locale = this.activeLang
            },
        }
    }
</script>
</div>
</html>
  1. 然后在 index.html 加入以下代码

假设我上面那个 header.html 在 pages 目录下,那就写成下面这样,引入的顺序不重要了,也可放在 vue.min.js 引入之前

<template th:replace="|/pages/header|::header"></template>

<!-- ================== BEGIN vue-js ================== -->
<script th:src="|${RES}/js/vue.min.js|"></script>
...
  1. 然后在 main.js 里引入组件就可以了

main.js 中的 vueApp 根实例绑定的就是 index.htmlidapp 的元素

// 全局方法,可以在这里注册
Vue.use(
    (_vue, _opts) => {
        _vue.prototype.$test = () => {
            console.log('test')
        }
    }
)

const vueApp = new Vue({
    el: '#app',
    i18n,
    router,
    components: {
        VueHeader
    },
    data() {
        return {
            activeLang: '', // index.html data
        }
    },
    methods: {}
})
  1. 最后使用

因为你刚刚是在 vueApp 根实例中引入的组件,所以加载 app div 里就可以了

<!-- BEGIN #app -->
<div id="app">
    <!-- BEGIN #header -->
    <vue-header></vue-header>
    <!-- END #header -->
</div>

二、语法搭配

使用vue方法调用th数据

如下:$t() 是 vue 国际化方法,${menu.name} 是 th 里的数据

<div class="menu-text" th:v-text="|$t('${menu.name}')|"></div>

类似的还有点击事件

<a th:@click="| changeActive('${menu.url}') |" href="javascript:;" class="menu-link">
	<div class="menu-text" th:v-text="|$t('${menu.name}')|"></div>
</a>
<a th:v-on:click="|openEditor(${session?.USER})|" >
	{{ $t('xxx') }}
</a>
  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringBoot是一款以简开发的方式来构建Java应用程序的框架,它提供了许多开箱即用的特性和便捷的配置方式。Thymeleaf是一个用于处理服务器端渲染的模板引擎,可以将动态数据注入到HTML模板中。SSM是指Spring+SpringMVC+MyBatis的组合,是一套经典的Java Web开发框架。Vue.js是一款用于构建用户界面的渐进式框架,可以实现前端组件开发和数据驱动视图更新。 要实现简单的增删改查功能,可以按照以下步骤进行: 1. 首先,使用SpringBoot创建一个新的项目,并引入Thymeleaf、SSM和Vue.js相关的依赖。 2. 创建一个数据库表,用于存储需要进行增删改查操作的数据。可以使用MySQL等关系型数据库。 3. 在SpringBoot的配置文件中配置数据库连接信息,并创建对应的数据源和事务管理器。 4. 创建实体类,在实体类中定义需要操作的属性和对应的数据字段。 5. 创建MyBatis的Mapper接口和对应的XML文件,用于定义数据库操作的SQL语句。 6. 在SpringBoot的配置类中配置MyBatis相关的扫描和注入。 7. 创建控制器类,处理前端请求。 8. 在控制器类中定义增删改查的方法,并调用对应的Mapper接口执行数据库操作。 9. 创建前端页面,使用Vue.js来实现数据的展示和交互。 10. 在前端页面中绑定相应的事件和请求,通过HTTP请求调用后端控制器的方法。 11. 在页面中显示查询的数据,并提供相应的操作按钮,通过绑定事件来实现增删改的功能。 12. 启动项目,通过浏览器访问前端页面,即可进行增删改查的操作。 以上是一个基本的步骤,具体的实现会涉及到很多细节,需要根据具体的需求和技术选型来进行调整和优
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值