IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> FLASK+VUE--前后端分离(四)- VUE+Element-UI简单搭建主页布局 -> 正文阅读

[Python知识库]FLASK+VUE--前后端分离(四)- VUE+Element-UI简单搭建主页布局

FLASK+VUE–前后端分离(一)- Flask基础讲解之路由、视图函数及代码实现
FLASK+VUE–前后端分离(二)- VUE基础安装及项目的简易介绍
FLASK+VUE–前后端分离(三)- VUE+Element-UI搭建登陆页面且能够正常登陆
FLASK+VUE–前后端分离(四)- VUE+Element-UI简单搭建主页布局
FLASK+VUE–前后端分离(五)- VUE测试/线上/开发环境地址配置+拦截器+全局导航守卫+基础配置+获取设置cookie等系列

回顾:

上一章节我们分享到登陆成功后跳转到home页面,该章节延续上一章节,我们针对home面进行简单的布局。

一、home主页布局

1、主页的布局-目录创建:

(1)el-container:外层容器。当子元素中包含 或 时,全部子元素会垂直上下排列,否则会水平左右排列。
(2)el-header:顶栏容器。
(3)el-aside:侧边栏容器。
(4)el-main:主要区域容器。
(5)el-footer:底栏容器。

我们针对主页的布局进行封装,因此我们需要调整,整体的目录结构如下:

(1)创建Framework文件夹(框架)
- 创建Header.vue文件(顶部容器容器组件)
- 创建Navigation.vue文件(侧边栏容器组件)

(2)创建user文件夹(信息)
- 创建UserInfo.vue文件(主要区域容器组件)

在这里插入图片描述

2、home页布局代码

<template>
  <el-container class="home_container">
  
    <!-- header -->
    <el-header style="height:50px">
      <!-- 局部方法复用 -->
      <Header />
    </el-header>

    <!-- 左侧导航栏 -->
    <el-container>
      <!-- 局部方法复用 -->
      <Navigation />

      <el-container>
        <!-- 主体内容 -->
        <el-main>
          <!-- 路由统一跳转 -->
          <router-view></router-view>
        </el-main>
      </el-container>
      
    </el-container>
  </el-container>
</template>
<script>
// 引入Header、Navigation组件
  import Header from "../Framework/Header.vue";
  import Navigation from "../Framework/Navigation.vue";

  export default {
    // 给组件命名为Home
    name: "Home",
    // 组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。在这里我们复用Header、Navigation组件
    components: {
      // 复用Header组件
      Header,
      // 复用Navigation组件
      Navigation
    },
    data() {
      return {};
    },
  };
</script>

<style scoped="scoped">
/* 当一个style标签拥有scoped属性时候,它的css样式只能用于当前的Vue组件,可以使组件的样式不相互污染 */
  .home_container {
    width: 100%;
    height: 100%;
  }

  .Retract {
    color: rgba(255, 255, 255, 0.952);
  }

  .el-main {
    background: rgb(255, 255, 255);
  }

  .el-header {
    padding: 0px;
  }
</style>

二、Header.vue编写

顶部容器header封装

<template>
  <el-container>
    <div class="imgUrl">
      <div class="titleText">
        testTitle
      </div>
      <div class="btn">
        <el-button @click="loginOut" type="primary">退出</el-button>
      </div>
    </div>
  </el-container>
</template>

<script>
  export default {
    name: "Header",
    data() {
      return {};
    },
    methods: {
      loginOut() {
        this.$router.push('/login')
      },
    },
  };
</script>

<style>
  .el-header {
    line-height: 50px; 
    color: rgb(250, 248, 248);
    font-size: 20px;
  }

  .el-header img {
    vertical-align: middle;
  }

  .imgUrl {
    color: #000;
    /* 渲染背景图片 */
    /* background: url('../../../src/assets/20211206193128.jpg'); */
    /* 渲染背景色 */
    background: rgb(190, 223, 223);
    background-size: 100% 100%;
    width: 100%;
  }

  .titleText {
    float: left;
    margin-left:20px
  }

  .btn {
    float: right;
    margin-right:20px
  }
</style>

三、Navigation.vue编写

1、Navigation.vue编写导航栏

(1)从Element-UI官网进入容器布局组件
(2)复制侧边导航栏代码
(3)这里要注意一下,导航栏点击后是不会跳转到新的页面,需要在里面设置函数开启 < el-menu :router=“true” >。如果router=“false” 是关闭跳转。

<template>
  <el-aside width="200px" style="background-color: rgb(238, 241, 246)">
    <el-menu :default-openeds="['1', '3']" :router="true">
      <el-submenu index="1">
        <template slot="title"><i class="el-icon-message"></i>导航一</template>
        <el-menu-item-group>
          <el-menu-item :index="this.menuList.a.path">用户信息</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>
          <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-menu>
  </el-aside>
</template>

<script>
  export default {
    name: "Navigation",
    data() {
      return {
        menuList:{
          a: {
            id: 1,
            path: "home/user_info"
          }
        }
      }
    }
  };
</script>

<style>
  .el-menu-vertical-demo:not(.el-menu--collapse) {
    width: 200px;
    min-height: 400px;
  }
</style>

四、UserInfo.vue编写自己想要的主体内容

<template>
  <div>
    user_info
  </div>
</template>

<script>


</script>

五、设置路由Router.js添加新的路径

(1)在home路由下方添加路由
(2)在路由内添加children函数:含义子路由,子路由是不需要待/的,路径是/home/user_info(因个人而定)

{
      path: '/home',  // 路径
      component: ()=>import('../web/home/Home.vue'),
      // children子路由,子路由是不需要待/的,路径是/home/user_info
      children: [
        {
          path: 'user_info',
          component: ()=>import('../web/user/UserInfo.vue')
        },
      ]
    },

路由代码如下;
在这里插入图片描述

我们最终的主页就实现了
在这里插入图片描述

六、分享额外知识点:

1、上方我们编写了Navigation.vue导航栏布局及数据展示,但是一条一条编写很繁琐,看着也很乱。那么我们换一种简洁的方式编写。这里面就用for循环遍历数据进行展示导航栏。

遍历这样的方式写优势如下:
(1)代码整洁
(2)可以后端传递(动态),可以前端写死(固态)

源码:

<template>
  <el-aside width="200px" style="background-color: rgb(238, 241, 246)">
    <el-menu :router="true">
      <!-- 导航 -->
      <el-submenu :index="'/' + item1.id + ''" v-for="item1 in menuList" :key="item1.id">
        <template slot="title">
          <span slot="title">{{ item1.menu_name }}</span>
        </template>

        <el-menu-item :index="'/' + item2.path" v-for="item2 in item1.m_list" :key="item2.id">
          <span slot="title">{{ item2.menu_name }}</span>
        </el-menu-item>

      </el-submenu>
    </el-menu>
  </el-aside>
</template>

<script>
  export default {
    name: "Navigation",
    data() {
      return {
        menuList: [{
          "id": 100,
          "menu_name": "导航",
          "path": "home",
          "m_list": [{
            "id": 1000,
            "menu_name": "主页",
            "path": "home",
            "m_list": []
          },{
            "id": 1001,
            "menu_name": "用户信息",
            "path": "home/user_info",
            "m_list": []
          }]
        }, ]
      }
    }
  }
</script>

<style>

</style>

主页展示为:
在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-14 15:53:53  更:2021-12-14 15:56:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 5:34:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码