ElementUI官网
一 项目
最终完成的效果:
切换上边的不同按钮,下方显示不同的表格数据
在src/components下新建不同业务组件的文件夹
1.1 搭建项目
使用脚手架搭建项目后,引入ElementUI(搭建、引入ElementUI步骤在第七节里已经详细介绍了)
改造项目入口App.vue
首页App.vue里的<router-view>
默认对应的就是左侧router/index.js
文件
新建首页src/components/index.vue
文组件
把首页组件注册到路由里
访问:
1.2 在访问项目地址时,直接路由到首页(不需要加index后缀)
首页地址:src/components/index.vue,在路由的js文件里里,新建一个根路由/
,重定向到index,index又会自动路由到index.vue页面
1.3 设计主页面src/components/index.vue
组件
先直接复制ElemrntUI官网Container组件,分为上下两大块,然后进行改造
最上边的头部使用NavMenu 导航菜单
把导航菜单代码复制到头部里
删除没必要的内容后:
由于main区域是动态改变的,所以这里肯定是一个路由组件,这里的组件来自于左侧各个业务提供的组件页面
新建各个组件,并注册到路由里
现在解决点击首页头部里的按钮,改变下边main数据的逻辑,首页<el-menu>
有一个点击事件(点击<el-menu>
下的子节点时触发的事件)
事件里接收两个参数:key、keyPath
修改index的值
把默认值改为index首页的组件,并打印拿到的俩参数值
点击上边的按钮,就会达到对应的组件index值
由上边可知,事件里能拿到路由地址,所以在事件里做路由切换即可
测试:
发现头部组件被覆盖掉了,不是只刷新main部分,与我们的需求不符合,即我们需要无论再怎么路由,头部的导航栏不能消失
把主页index.vue里的头部全部剪切放到App.vue里(剪切下边的内容)
剪切后此处只写主页
剪切的内容放到App.vue里,下边红框里作为公共内容,以后一直存在,不会因为路由而消失把index里js的数据也剪切走
放到App.vue里
效果
切换:
1.4 main主页添加轮播图
轮播图在ElemrntUI里对应的组件是走马灯组件
把代码和样式复制到项目里,并且放几张图片在项目里
首页组件里引入这些图片,并且定义一个数组,数组里的内容就是引入的图片,在上边的代码里循环这些数组
图片展示风格,参考image图片组件
复制到代码里
效果
发现不美观,我们把宽高去掉
发现图片展示不全,需要调整图片高度
如果需要图片填充满的话,使用fill
1.5 用户管理界面
复制到用户管理对应组件代码里
数据:
这里数据是写死的,我们需要结合后端springboot来把数据做活
后端接口:
注意,前端端口8080.后端端口8089,所以肯定存在跨域
此时前端需要发ajax请求,脚手架需要安装axios
# 安装axios
npm -i --save axios
# 或者
cnpm install axios --save
# 或者
npm install --save axios
在main.js里使用axios
当用户管理界面组件初始化之后,就去渲染数据
created:组件初始化之后执行的逻辑;
浏览器地址输入users组件地址,但是发现页面还是在首页
是因为路由激活这里写死了,默认激活的是index首页组件
path改为当前路由路径即可
完成添加按钮逻辑
点击添加按钮时,加一些过渡动画
复制动画代码和样式
此时,点击添加按钮时,下边的框就会有动画了,我们把下边的框换为自己的想要的form弹框即可,把赋值过来的style样式改一下大小
复制一个form表单(包括假数据、method)到代码里
把这里的内容替换为form表单即可
构建form表单
后台接口
统一返回结果封装
前端调后端接口
把消息成功风格的代码复制进去
添加成功后,要重新渲染页面
此时,created方法里调的方法,也挪一下
数据越来越多的话,页面被撑大,可以给页面设置高度,不让他无限制增长(即添加滚动条)
右侧有滚动条了
删除功能
js
后端接口
上边的删除直接就删了,不太友好,可以加一个“确认删除”的提示——气泡确认框
编辑功能
点击“编辑”时,复用添加的弹框,实现编辑操作
点完编辑后,弹框里与数据看,那点击添加的时候,就得清空表单
添加按钮起一个方法,性别设置一个默认值:
添加重置按钮
保存的逻辑
后端
1.6 添加表单验证
注意,上边的属性是表单的属性
保存时也进行校验,不提交表单
在提交方法里进行验证
1.7 Pagination分页组件
在表格下加一个分页组件
效果
注意,pagesize必须是pagesizes的子元素
添加事件
后台代码需要改为分页查询,不能再查询所有了
前端js以后就访问分页方法了
总条数就不写死了
pagesize与当前页也不写死
1.8 解决ElementUI日期组件日期不正确的问题
组件里选择的是2022-5-28,但是保存到后台却是2022-5-27
解决办法:添加一个value-format属即可解决
二 部署ElemrntUI项目
先执行编译命令
npm run build
执行后生成一个dist文件
把static和index.html直接复制到springboot项目里的resource下的static里
配置静态资源路径
以后直接启动一个springboot,访问springboot的端口就行了,不需要单独启动前端项目了。访问localhost:8989,就会自动路由到localhost:8989/index首页