ElementUI——案例1用户管理(基于SpringBoot)

1.前期准备

备注:主要涉及组件container组件,导航菜单组件,router路由组件,carousel 走马灯组件,Image组件,Table表格组件

#1.在项目开发目录使用脚手架新建vue项目(需要提前安装好node和webpack)
vue init webpack element_user(项目名)
#2.进入当前构建好的vue项目下,下载elementui依赖
cd element_user
npm i element-ui -S
#3.进入项目src目录下的main.js文件加入配置
# 相当于将elementui所有样式和组件引入
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
#将elementui全局组件注册到实例上
Vue.use(ElementUI);

搭建布局如下
在这里插入图片描述

2.案例开发

1.删除项目中components目录下的HelloWorl文件搭建如下结构,components下分模块创建目录
在这里插入图片描述

2.Index.vue

<template lang="">
    <div>
        <h1>主页</h1>
    </div>
</template>
<script>
export default {
}
</script>
<style lang="">
</style>

List.vue

<template lang="">
    <div>
        <h1>用来显示用户列表</h1>
    </div>
</template>
<script>
export default {
}
</script>
<style lang="">
</style>

App.vue中使用导航菜单组件,实现导航栏功能;底部添加路由,绑定路由功能

<template>
  <div id="app">
    <el-container>
      <el-header>
          <!--导航菜单-->
          <el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect">
              <el-menu-item index="/index">主页</el-menu-item></el-menu-item>
              <el-menu-item index="/userslist">用户管理</el-menu-item></el-menu-item></el-menu-item>
              <el-menu-item index="/mags">消息中心</el-menu-item>
              <el-menu-item index="/orders">订单管理</el-menu-item>
            </el-menu>
      </el-header>
      <el-main>
          <!-- 路由组件 -->
          <router-view/>
      </el-main>
    </el-container>
  </div>
</template>
<script>
export default {
  name: 'App',
  data() {
      return {
        activeIndex: this.$route.path,//获取当前路由路径,解决刷新网页报错问题
      };
    },
    methods: {
      handleSelect(key, keyPath) {
        console.log(key, keyPath);
        // 切换路由
        this.$router.push(key);
      }
    }
}
</script>
<style>
</style>

3.路由设置router下的index.js

import Vue from 'vue'
import Router from 'vue-router'
import Index from '../components/Index'
import List from '../components/user/List'
Vue.use(Router)

export default new Router({
  routes: [
  {
    path:'/',//配置根路由
    component:Index
  },
    {
      path: '/index',
      component: Index
    },
    {
      path:'/userslist',
      component:List
    }
  ]
})

3.功能模块添加

3.1 走马灯(轮播图)

修改Index.vue

<template lang="">
    <div>
        <el-carousel indicator-position="outside">
            <el-carousel-item v-for="item in imgs" :key="item">
                <el-image
                :src="item"
                fit="contain"></el-image>
            </el-carousel-item>
          </el-carousel>
    </div>
</template>
<script>
    import homeImg1 from "../assets/imgs/zjl1.jpg";
    import homeImg2 from "../assets/imgs/zjl2.jpg";
    import homeImg3 from "../assets/imgs/zjl3.jpg";
    import homeImg4 from "../assets/imgs/zjl4.jpg";
    import homeImg5 from "../assets/imgs/zjl5.jpg";
export default {
   name:"Index",
   data(){
    return {
        imgs:[homeImg1,homeImg2,homeImg3,homeImg4,homeImg5]
    }
   }
}
</script>
<style lang="">
    
</style>

效果
在这里插入图片描述

3.2用户管理

实现效果
在这里插入图片描述

<template lang="">
    <div>
        <el-table
    :data="tableData.filter(data => !search || data.name.toLowerCase().includes(search.toLowerCase()))"
    border
    style="width: 100%">
    <el-table-column
      fixed
      prop="id"
      label="编号"
      width="150">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      width="120">
    </el-table-column>
    <el-table-column
      prop="birth"
      label="生日"
      width="120">
    </el-table-column>
    <el-table-column
      prop="address"
      label="地址"
      width="300">
    </el-table-column>
    <el-table-column
      prop="sex"
      label="性别"
      width="120">
    </el-table-column>
    <el-table-column
      fixed="right"
      width="200">
      <template slot="header" slot-scope="scope">
        <el-input
          v-model="search"
          size="mini"
          placeholder="输入关键字搜索"/>
      </template>
      <template slot-scope="scope">
        <el-button
          size="mini"
          @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
        <el-button
          size="mini"
          type="danger"
          @click="handleDelete(scope.$index, scope.row)">删除</el-button>
      </template>
    </el-table-column>
  </el-table>
    </div>
</template>
<script>
export default {
    methods: {
      handleEdit(index, row) {
        console.log(index, row);
      },
      handleDelete(index, row) {
        console.log(index, row);
      }
    },
    data() {
      return {
        tableData: [{
          id: 1,
          name: '王小虎',
          birth: '2022-0502',
          address: '上海市普陀区金沙江路 1518 弄',
          sex: '男'
        }, {
          id: 2,
          name: '小虎',
          birth: '2022-0502',
          address: '上海市普陀区金沙江路 1518 弄',
          sex: '男'
        },{
          id: 3,
          name: '王虎',
          birth: '2022-0502',
          address: '上海市普陀区金沙江路 1518 弄',
          sex: '男'
        },{
          id: 4,
          name: '王大虎',
          birth: '2022-0502',
          address: '上海市普陀区金沙江路 1518 弄',
          sex: '男'
        },{
          id: 5,
          name: '王小虎',
          birth: '2022-0502',
          address: '上海市普陀区金沙江路 1518 弄',
          sex: '男'
        }],
        search: ''
      }
    }
}
</script>
<style lang="">
</style>

4.集合SpringBoot后台实现数据异步请求

准备工作:静态页面已经搭建好,现在将数据改为动态数据,后台使用SpringBoot

1.Vue前台

  • 安装axios
npm i axios -S
  • main.js中引入axios
import axios from 'axios'
Vue.prototype.$http=axios#通过修改原型链方式引入
  • 修改List.vue脚本内容
<script>
export default {
    methods: {
      handleEdit(index, row) {
        console.log(index, row);
      },
      handleDelete(index, row) {
        console.log(index, row);
      }
    },
    data() {
      return {
        tableData: [],
        search: ''
      }
    },
    created() {
        this.$http.get("http://localhost:8989/user/findAll").then(res=>{
            //回调中获取响应结果
            this.tableData = res.data;//将tableData值设为响应结果
        })
    },
}
</script>

2.SpringBoot后台

本文后台主要涉及核心代码

@RestController
@CrossOrigin(origins = "*")//全局跨域,解决跨域相关问题
@RequestMapping("user")
public class UserController {
    @Autowired
    private UserService userService;
    @GetMapping("findAll")
    public List<User> findAll(){
        return userService.findAll();
    }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Spring Boot中整合Vue和ElementUI的项目,可以按照以下步骤进行配置: 1. 首先,在Spring Boot的启动类中添加@SpringBootApplication注解,并使用@MapperScan注解扫描Mapper包。这样可以将Spring Boot应用程序标记为主应用程序,并扫描指定的Mapper包。 2. 在前端项目中,通常会使用JavaScript框架Vue和UI组件库ElementUI。在main.js文件中,需要导入ElementUI并引入其样式文件。这可以通过添加以下三行代码来实现:import ElementUI from 'element-ui'、import 'element-ui/lib/theme-chalk/index.css'、Vue.use(ElementUI)。这样就可以在Vue项目中使用ElementUI的组件了。 3. Spring Boot是一个框架,它默认配置了很多框架的使用方式。通过使用Spring Boot,可以简化开发过程,整合和管理各种框架。对于Spring Boot和Vue项目,你可以使用Spring Boot提供的特性,如自动化配置、依赖管理和集成测试等。这样可以更高效地搭建和开发项目。 综上所述,Spring Boot、Vue和ElementUI的整合项目可以通过在Spring Boot的启动类中添加注解、在Vue项目中导入ElementUI的相关代码来实现。这样可以充分利用Spring Boot的框架特性和简化开发过程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Vue+ElementUI+Springboot实现前后端分离的一个demo](https://blog.csdn.net/weixin_42032770/article/details/118881371)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [springboot+vue+element-ui全栈开发入门--开篇](https://blog.csdn.net/g1607058603/article/details/86737567)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值