Vue搭配Thymeleaf完成组件化开发



前言

提示: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 里用,那么如何去做?

在一个文件夹里创建一个 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
            },
        }
    }
然后在 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>
...

然后在 main.js 里引入组件就可以了

main.js 中的 vueApp 根实例绑定的就是 index.html 中 id 为 app 的元素

// 全局方法,可以在这里注册
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: {}
})
最后使用
因为你刚刚是在 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>

推荐阅读

🎈🎈🎈 小码哥公众号:码出宇宙,纯技术干货分享,为圆梦大厂助力。( 最近更新IDEA的全版本激活码,再也不用担心IDEA编不码而烦恼而烦恼)




#前端##搞技术你要知道##小码哥带你圆梦大厂#
全部评论
感谢分享
点赞 回复 分享
发布于 2022-10-20 17:45 广东
楼主好牛
点赞 回复 分享
发布于 2022-10-20 17:43 广东
占楼
点赞 回复 分享
发布于 2022-10-19 22:15 湖北

相关推荐

09-22 22:22
中山大学 Java
乌鱼子萨奇:羡慕你啊,直接转正了,都不用经历秋招的炼狱,但是你少经历了很多痛苦的事情啊
点赞 评论 收藏
分享
||&nbsp;先说下主播个人情况:211本,暑期实习之前有过一段中大厂的后端实习,暑期拿过腾讯的实习offer,综合考虑业务和语言最终去了美团。实习期间体感还是不错的,5月初去的,去了就一直急着要需求做,担心因为没有产出导致转正失败,在第二个星期就和mt透露我希望能够留用。虽然第一个由于美团新人landing的友好性基本没做什么需求,但是后面也写出了小2w行的代码量(不包含单测)。中期经常主动加班赶需求,经常持续一两个星期加班到10点甚至更后面。mt对我确实不错,也是言传身教,实习期间给我讲了很多关于单测,ddd,set化等的理解,也是受益匪浅,此外在做需求的时候,也能看出把比较有含金量的部分交给我做...
菜菜菜小白菜菜菜:我在字节实习了四个月,有转正的压力所以周末大部分也在公司自学,也是因为一些原因转正拖的很久,这个点还没答辩,过段时间才回去答辩。整个不确定性的焦虑贯穿了我的秋招三个月,我也曾经犹豫过是不是应该放弃转正走秋招更快,最后因为沉没成本一直舍不得放弃,前前后后七个月真的挺累的,尤其是没有来字节实习的同学已经校招拿到意向时更加焦虑。这段时间也跟mentor聊了很多次,他告诉我未来工作上或者生活上,比这些更头疼的事情会更多,关键还是要调整好自己的心态。转正没有通过从过程上来看其实跟你自身没太大的关系,拖了三个月不出结果显然是ld的问题,并且今年美团最近的开奖大家似乎都不是很乐观,所以不去也罢。我在字节实习的时候,6月份有一个赶上春招末期的25届同事刚面进来,也拿到了小sp的薪水。不要对这件事有太大的压力,时代的问题罢了
点赞 评论 收藏
分享
评论
12
12
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务