Vue + Spring Boot 项目实战(六):使用 Element 辅助前端开发

文章目录

  • 一、安装并引入 Element
    • 1.安装 Element
    • 2.引入 Element
  • 二、优化登录页面
    • 1.使用 Form 组件
    • 2.添加样式
    • 3.设置背景
    • 4.完整代码

之前我们实现了登录功能,但不得不说登录页面实在是太简陋了。在这个看脸的社会,如果代码写的烂,界面也做得不好看,就真的没得救了。但是如果不是专职做 UI 设计,又没有必要浪费这么多时间在上面,所以我们需要借助一些工具来制作我们的页面。

Element - The world’s most popular Vue UI framework,你值得拥有。先看一下修改完的登录页面
在这里插入图片描述
当然,Element 不仅仅是界面这么简单,它对 Vue 又做了进一步的封装,可以简便地使用许多实用的功能。

一、安装并引入 Element

Element 的官方地址:https://element.eleme.cn/#/zh-CN

这一部分的内容在官方文档上都有体现,我只是照搬下来。在以后我们会经常使用 Element 提供的组件,大家要自己尝试查阅文档,这个是中文的,还是很好理解的。

1.安装 Element

根据官方文档的描述,在项目文件夹下,执行 npm i element-ui -S 即可
在这里插入图片描述
在这里插入图片描述

2.引入 Element

引入分为完整引入和按需引入两种模式,按需引入可以缩小项目的体积,这里我们选择完整引入。

根据文档,我们需要修改 src/main.js 为如下内容

import Vue from 'vue'
import App from './App'
import router from './router'
// 引入ElementUI
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'var axios = require('axios')
// 设置反向代理,前端请求默认发送到 http://localhost:8443/api
axios.defaults.baseURL = 'http://localhost:8443/api'
// 全局注册,之后可在其它组件中通过 this.$axios 发送数据
Vue.prototype.$axios = axios
Vue.config.productionTip = false
// Vue使用ElementUI
Vue.use(ElementUI)/* eslint-disable no-new */
new Vue({el: '#app',render: h => h(App),router,components: { App },template: '<App/>'
})

这样便完成了 Element 的引入。为了测试一下,我们打开 Login.vue,把最外层的 <div> 标签改为 <el-card>(下面是 <template> 内的完整代码)

  <el-card>用户名:&nbsp;<input type="text" v-model="loginForm.username" placeholder="请输入用户名"/><br><br>&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;<input type="password" v-model="loginForm.password" placeholder="请输入密码"/><br><br><button v-on:click="login">登录</button></el-card>

然后访问 http://localhost:8080/#/login ,查看效果
在这里插入图片描述
嗯,还是很丑,但是成功了。

二、优化登录页面

首先,让我们去掉这个清奇的 V ,打开 App.vue,把 <img src="./assets/logo.png"> 删掉即可。不过我一般喜欢先注释掉,确定没有影响了再删除。
在这里插入图片描述

1.使用 Form 组件

让我们来修改 Login.vue 的代码。原来是这样的

<template><el-card>用户名:&nbsp;<input type="text" v-model="loginForm.username" placeholder="请输入用户名"/><br><br>&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;<input type="password" v-model="loginForm.password" placeholder="请输入密码"/><br><br><button v-on:click="login">登录</button></el-card>
</template><script>export default {name: 'Login',data () {return {loginForm: {username: '',password: ''},responseResult: []}},methods: {login () {this.$axios.post('/login', {username: this.loginForm.username,password: this.loginForm.password}).then(successResponse => {if (successResponse.data.code === 200) {this.$router.replace({path: '/index'})}}).catch(failResponse => {})}}
}
</script>

为了设计界面,我们需要关注的地方是 <template> 标签内的 html 和 <style> 标签内的 css。登录框我们一般会用 Form 来做,打开 Element 的组件文档(http://element-cn.eleme.io/#/zh-CN/component/),发现它为我们提供了丰富的 Form 组件,我们可以点击“显示代码”,复制我们需要的部分。
在这里插入图片描述
不过这里好像并没有特别符合我们应用场景的表单,或者说这些都是比较复杂的,我们只需要其中的一小部分。把页面再往下拉,可以看到关于这个组件的属性、事件、方法等的文档,根据这个文档,我们可以自己去构建需要的表单。

首先,我们修改 <template> 里的代码如下

<template><el-form class="login-container" label-position="left"label-width="0px"><h3 class="login_title">系统登录</h3><el-form-item><el-input type="text" v-model="loginForm.username"auto-complete="off" placeholder="账号"></el-input></el-form-item><el-form-item><el-input type="password" v-model="loginForm.password"auto-complete="off" placeholder="密码"></el-input></el-form-item><el-form-item style="width: 100%"><el-button type="primary" style="width: 100%;background: #505458;border: none" v-on:click="login">登录</el-button></el-form-item></el-form>
</template>

上面的代码应该很好理解,<el-form> 里面可以放置 <el-form-item><el-form-item> 里面再放置其它的内容,比如 <el-input>,关于 <el-input> 的属性,可以查阅 Input 的文档,<el-button> 亦然。

在开发前端的内容时,我们修改了代码,就可以对应地看到效果,而不用重启项目。我一般会把浏览器也开着,以便实时监测。修改完上面的内容,页面变成了这样
在这里插入图片描述

2.添加样式

为了进一步优化界面,我们为组件再添加一些样式,即在 Login.vue 的最后添加如下代码

<style>.login-container {border-radius: 15px;background-clip: padding-box;margin: 90px auto;width: 350px;padding: 35px 35px 15px 35px;background: #fff;border: 1px solid #eaeaea;box-shadow: 0 0 25px #cac6c6;}.login_title {margin: 0px auto 40px auto;text-align: center;color: #505458;}</style>

刷新页面(Ctrl + F5),看起来顺眼多了
在这里插入图片描述

3.设置背景

最后,我们为这个单调的登录页面设置一个背景。我在网上找了这张图
在这里插入图片描述
可以把它保存下来,放在 src\assets 文件夹下,命名为 eva.jpg 在 build 项目时,这个文件夹里的图片会被自动转成 base64。也可以在这个文件夹里再新建文件夹,方便管理。

为了使用背景图片,我在 标签的外又添加了一个父标签 <body>,id 设置为 poster,并在 <style> 中添加如下内容

<body id="poster"></body>
 #poster {background:url("../assets/eva.jpg") no-repeat;background-position: center;height: 100%;width: 100%;background-size: cover;position: fixed;}body{margin: 0px;}

在这里插入图片描述
这时候发现界面上方有一片空白,经过查找,发现问题出在 App.vue 里,把下面这句代码删除即可
在这里插入图片描述
在这里插入图片描述
OK,又一次大功告成了。
在这里插入图片描述
另外可以在 Login.vue 的 data 方法中设置输入框的默认值,省的每次进来都要再输一遍。

4.完整代码

最后附上 Login.vue 的完整代码,可以直接复制

<template><body id="poster"><el-form class="login-container" label-position="left"label-width="0px"><h3 class="login_title">系统登录</h3><el-form-item><el-input type="text" v-model="loginForm.username"auto-complete="off" placeholder="账号"></el-input></el-form-item><el-form-item><el-input type="password" v-model="loginForm.password"auto-complete="off" placeholder="密码"></el-input></el-form-item><el-form-item style="width: 100%"><el-button type="primary" style="width: 100%;background: #505458;border: none" v-on:click="login">登录</el-button></el-form-item></el-form></body>
</template><script>export default {name: 'Login',data () {return {loginForm: {username: 'admin',password: '123'},responseResult: []}},methods: {login () {this.$axios.post('/login', {username: this.loginForm.username,password: this.loginForm.password}).then(successResponse => {if (successResponse.data.code === 200) {this.$router.replace({path: '/index'})}}).catch(failResponse => {})}}}
</script><style>#poster {background:url("../assets/eva.jpg") no-repeat;background-position: center;height: 100%;width: 100%;background-size: cover;position: fixed;}body{margin: 0px;}.login-container {border-radius: 15px;background-clip: padding-box;margin: 90px auto;width: 350px;padding: 35px 35px 15px 35px;background: #fff;border: 1px solid #eaeaea;box-shadow: 0 0 25px #cac6c6;}.login_title {margin: 0px auto 40px auto;text-align: center;color: #505458;}
</style>

至此,登录页面的开发似乎已经较为完善了,但其实还没有完,因为这个登录页面其实没有用,别人直接输入首页的网址,就可以绕过登录页面。为了让它发挥作用,我们还需要开发一个拦截器。

下一篇文章主要讲解以下内容:

  • 一、前端路由的 hash 模式与 history 模式
  • 二、history 模式下后端错误页面的配置
  • 三、登录拦截的实现

为什么要在登录页面上废这么多篇幅呢?因为把这个页面做完,就差不多理解了项目的构成,之后的开发就可以把精力集中在业务功能的实现上了。之后的基本模式,就是前端开发组件、后端开发控制器,调试功能,做起来会很快。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521669.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不止 5G 和鸿蒙,华为最新大招,扔出 AI 计算核弹

戳蓝字“CSDN云计算”关注我们哦&#xff01;华为发布全世界最快AI产品&#xff0c;集成1024颗业内最强芯片&#xff0c;训练ResNet-50只需59.8秒。近日&#xff0c;华为全联接大会开幕&#xff0c;推出又一重量级AI产品Atlas900。此前接受外媒采访时&#xff0c;任正非就已经预…

阿里90后工程师利用ARM硬件特性开启安卓8终端“上帝模式”

摘要&#xff1a; 本文以安卓8终端为载体&#xff0c;介绍阿里安全潘多拉实验室成员研究并提出的内核空间镜像攻击利用技巧。文/图 阿里安全潘多拉实验室 团控编者按&#xff1a;团控&#xff0c;阿里安全潘多拉实验室研究人员&#xff0c;该实验室主要聚焦于移动安全领域&…

神龙X-Dragon,这技术“范儿”如何?

戳蓝字“CSDN云计算”关注我们哦&#xff01;在CSDN总部会议室&#xff0c;阿晶首次见到了阿里云智能研究员、弹性计算技术负责人张献涛——这位不仅仅在阿里云智能内部&#xff0c;在业内也是响当当的虚拟化技术大牛。现在回想起来&#xff0c;当时聊了没两句&#xff0c;阿晶…

python 如何判断一个函数执行完成_三步搞定 Python 中的文件操作

当程序运行时&#xff0c;变量是保存数据的好方法&#xff0c;但变量、序列以及对象中存储的数据是暂时的&#xff0c;程序结束后就会丢失&#xff0c;如果希望程序结束后数据仍然保持&#xff0c;就需要将数据保存到文件中。Python 提供了内置的文件对象&#xff0c;以及对文件…

一位资深程序员大牛给予Java初学者的学习路线建议

摘要&#xff1a; java学习这一部分其实也算是今天的重点&#xff0c;这一部分用来回答很多群里的朋友所问过的问题&#xff0c;那就是我你是如何学习Java的&#xff0c;能不能给点建议&#xff1f;今天我是打算来点干货&#xff0c;因此咱们就不说一些学习方法和技巧了&#x…

Vue + Spring Boot 项目实战(七):前端路由与登录拦截器

文章目录前言一、前端路由二、使用 History 模式三、后端登录拦截器3.1. LoginController3.2. LoginInterceptor3.3. WebConfigurer3.4. 效果检验四、Vuex 与前端登录拦截器4.1. 引入 Vuex4.2. 修改路由配置4.3. 使用钩子函数判断是否拦截4.4. 修改 Login.vue4.5. 效果检验前言…

高手如何实践HBase?不容错过的滴滴内部技巧

摘要&#xff1a; HBase和Phoenix的优势大家众所周知&#xff0c;想要落地实践却问题一堆&#xff1f;replication的随机发送、Connection的管理是否让你头痛不已&#xff1f;本次分享中&#xff0c;滴滴以典型的应用场景带大家深入探究HBase和Phoenix&#xff0c;并分享内核改…

JS 打印 data数据_数据表格 Data Table - 复杂内容的15个设计点

表格是桌面应用中常见的内容型组件&#xff0c;它包含大量的信息和丰富的交互形式&#xff0c;表格具有极高的空间利用率&#xff0c;结构化的展示保证了数据可读性。高效、清晰且易用是进行表格设计的原则性要求。本文将从表格的内容组织到交互作一次汇总&#xff0c;作为数据…

神龙X-Dragon,这技术“范儿”如何?| 问底中国IT技术演进

在CSDN总部会议室&#xff0c;阿晶首次见到了阿里云智能研究员、弹性计算技术负责人张献涛——这位不仅仅在阿里云智能内部&#xff0c;在业内也是响当当的虚拟化技术大牛。现在回想起来&#xff0c;当时聊了没两句&#xff0c;阿晶就问了这样一个问题&#xff0c;“阿里云这款…

干货 | 蚂蚁金服是如何实现经典服务化架构往 Service Mesh 方向的演进的?

摘要&#xff1a; 小蚂蚁说&#xff1a; 蚂蚁金服在服务化上面已经经过多年的沉淀&#xff0c;支撑了每年双十一的高峰峰值。Service Mesh 作为微服务的一个新方向&#xff0c;在最近两年成为领域的一个大热点&#xff0c;但是如何从经典服务化架构往 Service Mesh 的方向上演进…

Vue + Spring Boot 项目实战(八):导航栏与图书页面设计

文章目录前言一、导航栏的实现1.路由配置2.使用 NavMenu 组件二、图书管理页面2.1. LibraryIndex.vue2.SideMenu.vue3.Books.vue前言 之前讲过使用 Element 辅助前端页面的开发&#xff0c;但是只用到了比较少的内容&#xff0c;这一篇我们来做一下系统的核心页面——图书管理…

pmsm simulink foc 仿真_仿真软件教程

很多朋友都建议我做个视频的整理&#xff0c;方便没看过之前内容的朋友方便查找&#xff0c;我觉得这个确实很有必要。下面内容是关于仿真软件方面&#xff1a;仿真环境&#xff1a;Simlpis 8.0类型简介VMC和CMC的LLC控制器仿真对比 第一节图文电压模式和电流模式LLC控制器的简…

日志采集中的关键技术分析

摘要&#xff1a; 从日志投递的方式来看&#xff0c;日志采集又可以分为推模式和拉模式&#xff0c;本文主要分析的是推模式的日志采集。概述日志从最初面向人类演变到现在的面向机器发生了巨大的变化。最初的日志主要的消费者是软件工程师&#xff0c;他们通过读取日志来排查问…

限时早鸟票 | 2019 中国大数据技术大会(BDTC)超豪华盛宴抢先看!

2019 年12月5-7 日&#xff0c;由中国计算机学会主办&#xff0c;CCF 大数据专家委员会承办&#xff0c;CSDN、中科天玑数据科技股份有限公司协办的 2019 中国大数据技术大会&#xff0c;将于北京长城饭店隆重举行。届时&#xff0c;超过百位技术专家及行业领袖将齐聚于此&…

机器学习和数据科学领域必读的10本免费书籍

摘要&#xff1a; 暑期来了&#xff0c;别出去溜达了&#xff0c;看书学习一波&#xff5e;在这个暑假&#xff0c;有兴趣的可以阅读一下这些免费的有关机器学习和数据科学的书籍&#xff0c;他们能给你打开一扇看清机器学习和数据科学的窗。如果在阅读完这一文章后想知晓更多免…

microsoft账号登陆一直在加载_英雄联盟手游下载,附带拳头账号注册教程

欢迎关注【花卷来了】公众号。如果喜欢本期节目请点赞、再看、分享给朋友吧~软件资源请回复文章底部今日关键词获取/排版&#xff1a;萌萌哒花卷/来源&#xff1a;采集自网络今日主题&#xff1a;最新英雄联盟手游下载&#xff0c;附带拳头账号注册教程英雄联盟手游今天正式公测…

机器学习者都应该知道的五种损失函数!

摘要&#xff1a; 还不知道这五种损失函数&#xff1f;你怎么在机器学习这个圈子里面混&#xff1f;在机器学习中&#xff0c;所有的机器学习算法都或多或少的依赖于对目标函数最大化或者最小化的过程&#xff0c;我们常常把最小化的函数称为损失函数&#xff0c;它主要用于衡量…

linux服务器监控zabbix,Linux监控之--使用ZABBIX监控web服务器

使用ZABBIX监控web服务器实验拓扑图&#xff1a;实验思路&#xff1a;nginx添加状态统计模块&#xff0c;编写nginx对应的状态统计脚本。zabbix-server导入nginx模板&#xff0c;并对主机实现监控。实验环境角色IP地址操作系统版本软件包Zabbix_server192.168.0.158/24Centos6.…

Facebook 约十亿美元收购脑机技术公司,助攻AR研发;苹果宣布新款 Mac Pro 在美国生产;谷歌称已实现量子霸权…...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 小米MIX Alpha手机官方概念图…

知道这些用于数据科学和机器学习的GitHub存储库和Reddit主题吗?

摘要&#xff1a; 5月最热门的GitHub存储库和顶级Reddit讨论&#xff0c;戳进来~GitHub和Reddit都是比较有趣的平台&#xff0c;在这里&#xff0c;我不仅学习了数据科学的一些最佳应用&#xff0c;而且还了解数据科学家们是如何编程的。一直以来&#xff0c;GitHub都是开发人员…