保姆级课程:Spring Boot+Vue前后端分离开发(第二天)

第二天任务概要

学习Element UI的使用

第一步:新建一个VUE工程

参考我之前的文章:
https://blog.csdn.net/qq_41567696/article/details/140696957
VUE2.0建议采用第一种方式创建
创建完成后,使用cd命令进入创建的项目文件夹,运行:

npm run serve

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第二步:VUE安装ElementUI

使用idea导入刚才创建的Vue前端框架,打开终端,输入:

npm i element-ui -S

按回车进行安装:
在这里插入图片描述
打开node_modules目录,若出现下图中红色箭头所指的文件夹与信息,则安装成功。
在这里插入图片描述
打开src下的main.js文件
在这里插入图片描述
向里面添加红框中的代码,完全引入ElementUI组件
在这里插入图片描述

第三步:打开ElementUI官网,进行代码参考

输入网址:
https://element.eleme.cn/#/zh-CN
打开,跳转到“组件”->"Container 布局容器"选择页面布局
在这里插入图片描述
做一个管理系统一般使用以下布局:
在这里插入图片描述
往下拉,找到相应的实例,点击实例下面的箭头,打开代码:
在这里插入图片描述
在这里插入图片描述
找到代码之后,进行复制,并粘贴到我们的Vue工程里的App.vue中:
App.vue代码:

<template>
  <div id="app">
    <el-container style="height: 500px; border: 1px solid #eee">
      <el-aside width="200px" style="background-color: rgb(238, 241, 246)">
        <el-menu :default-openeds="['1', '3']" :default-active="'1-1'">
          <el-submenu index="1">
            <template slot="title"><i class="el-icon-message"></i>导航一</template>
            <el-menu-item-group>
              <template slot="title">分组一</template>
              <el-menu-item index="1-1">选项1</el-menu-item>
              <el-menu-item index="1-2">选项2</el-menu-item>
            </el-menu-item-group>
            <el-menu-item-group title="分组2">
              <el-menu-item index="1-3">选项3</el-menu-item>
            </el-menu-item-group>
            <el-submenu index="1-4">
              <template slot="title">选项4</template>
              <el-menu-item index="1-4-1">选项4-1</el-menu-item>
            </el-submenu>
          </el-submenu>
          <el-submenu index="2">
            <template slot="title"><i class="el-icon-menu"></i>导航二</template>
            <el-menu-item-group>
              <template slot="title">分组一</template>
              <el-menu-item index="2-1">选项1</el-menu-item>
              <el-menu-item index="2-2">选项2</el-menu-item>
            </el-menu-item-group>
            <el-menu-item-group title="分组2">
              <el-menu-item index="2-3">选项3</el-menu-item>
            </el-menu-item-group>
            <el-submenu index="2-4">
              <template slot="title">选项4</template>
              <el-menu-item index="2-4-1">选项4-1</el-menu-item>
            </el-submenu>
          </el-submenu>
          <el-submenu index="3">
            <template slot="title"><i class="el-icon-setting"></i>导航三</template>
            <el-menu-item-group>
              <template slot="title">分组一</template>
              <el-menu-item index="3-1">选项1</el-menu-item>
              <el-menu-item index="3-2">选项2</el-menu-item>
            </el-menu-item-group>
            <el-menu-item-group title="分组2">
              <el-menu-item index="3-3">选项3</el-menu-item>
            </el-menu-item-group>
            <el-submenu index="3-4">
              <template slot="title">选项4</template>
              <el-menu-item index="3-4-1">选项4-1</el-menu-item>
            </el-submenu>
          </el-submenu>
        </el-menu>
      </el-aside>

      <el-container>
        <el-header style="text-align: right; font-size: 12px">
          <el-dropdown>
            <i class="el-icon-setting" style="margin-right: 15px"></i>
            <el-dropdown-menu slot="dropdown">
              <el-dropdown-item>查看</el-dropdown-item>
              <el-dropdown-item>新增</el-dropdown-item>
              <el-dropdown-item>删除</el-dropdown-item>
            </el-dropdown-menu>
          </el-dropdown>
          <span>王小虎</span>
        </el-header>

        <el-main>
          <el-table :data="tableData">
            <el-table-column prop="date" label="日期" width="140">
            </el-table-column>
            <el-table-column prop="name" label="姓名" width="120">
            </el-table-column>
            <el-table-column prop="address" label="地址">
            </el-table-column>
          </el-table>
        </el-main>
      </el-container>
    </el-container>
  </div>
</template>


<style>
  .el-header {
    background-color: #B3C0D1;
    color: #333;
    line-height: 60px;
  }

  .el-aside {
    color: #333;
  }
</style>

<script>
  export default {
    data() {
      const item = {
        date: '2016-05-02',
        name: '王小虎',
        address: '上海市普陀区金沙江路 1518 弄'
      };
      return {
        tableData: Array(20).fill(item)
      }
    }
  };
</script>

终端运行,打开浏览器查看,效果如下:
在这里插入图片描述
重要标签解释如下:

#构建整个页面框架
<el-container></el-container>
#构建左侧菜单
<el-aside></el-aside>
    :default-openeds="['i', 'j']" #默认展开id为i与id为j的菜单
    :default-active="'i-j'"  #默认选中id为i-j的菜单
<el-submenu index="i-j"> #可展开的菜单。index为字符串类型。
	<el-menu-item>子菜单栏</el-menu-item>
</el-submenu>
<template></template> #对应el-submenu的菜单名,用于描述内容
<i class="el-icon-menu"></i> #设置相应图标
<el-menu-item></el-menu-item> #不可再展开的子节点

第四步:通过Vue router动态加载菜单

假如菜单格式定义如下:

导航1
----页面1
----页面2
导航2
----页面3
----页面4

首先在views中创建4个vue文件,分别是:Page1.vue,Page2.vue,Page3.vue,Page4.vue,同时加上相应标题:

<h1>这是页面i</h1>

在这里插入图片描述

然后打开“src/router/”下的index.js,进行文件导入与代码编写:
在这里插入图片描述
添加路由:
在这里插入图片描述
为了将每个Page文件的信息进行显示,因此重写App.vue代码:
在中添加:

  <router-view></router-view>

index.js完整代码如下:

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
import Page1 from "../views/Page1.vue";
import Page2 from "../views/Page2.vue";
import Page3 from "../views/Page3.vue";
import Page4 from "../views/Page4.vue";
import App from "../App";

Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    name: '导航1',
    component: App,
    children:[
      {
        path: '/Page1',
        name: '页面1',
        component: Page1
      },
      {
        path: '/Page2',
        name: '页面2',
        component: Page2
      }
    ]
  },
  {
    path: '/navigation',
    name: '导航2',
    component: App,
    children:[
      {
        path: '/Page3',
        name: '页面3',
        component: Page3
      },
      {
        path: '/Page4',
        name: '页面4',
        component: Page4
      }
    ]
  }
]

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})

export default router

App.vue完整代码如下:

<template>
  <div id="app">
    <el-container style="height: 500px; border: 1px solid #eee">
      <el-aside width="200px" style="background-color: rgb(238, 241, 246)">

<!--    动态读取src/router中index.js里的菜单名称    -->
        <el-menu>
          <el-submenu v-for="(item,index) in $router.options.routes" :index="index+''"><!--第一个router可以简单理解为src/router,第三个router指index.js中的routes数组。index是item的下标-->
            <template slot="title"><i class="el-icon-setting">{{item.name}}</i></template><!--获取每一项的名称,即表格名称-->
            <el-menu-item v-for="(item1,index1) in item.children" :index="index+'-'+index1">
              <template slot="title"><i class="el-icon-setting">{{item1.name}}</i></template><!--获取每一项的名称,即表格名称-->
            </el-menu-item>
          </el-submenu><!--通过for循环读取菜单里的数据-->
        </el-menu>
      </el-aside>

      <el-container>
        <el-header style="text-align: right; font-size: 12px">
          <el-dropdown>
            <i class="el-icon-setting" style="margin-right: 15px"></i>
            <el-dropdown-menu slot="dropdown">
              <el-dropdown-item>查看</el-dropdown-item>
              <el-dropdown-item>新增</el-dropdown-item>
              <el-dropdown-item>删除</el-dropdown-item>
            </el-dropdown-menu>
          </el-dropdown>
          <span>王小虎</span>
        </el-header>

        <el-main>
          <router-view></router-view>
        </el-main>
      </el-container>
    </el-container>
  </div>
</template>


<style>
  .el-header {
    background-color: #B3C0D1;
    color: #333;
    line-height: 60px;
  }

  .el-aside {
    color: #333;
  }
</style>

<script>
  export default {
    data() {
      const item = {
        date: '2016-05-02',
        name: '王小虎',
        address: '上海市普陀区金沙江路 1518 弄'
      };
      return {
        tableData: Array(20).fill(item)
      }
    }
  };
</script>

未完待续,马上出第三天内容~

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YZ122552

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值