iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue Router组合布局用法详解
  • 618
分享到

Vue Router组合布局用法详解

Vue Router组合布局Vue Router组合Vue Router布局Vue Router 2023-05-19 15:05:33 618人浏览 八月长安
摘要

目录常用的布局app 页面about 页面思考🤔命名视图Router组合布局结论常用的布局 我们首先看一个我们常用的布局,左右布局。 app 页面 我们通常写一个这样的布局,思路是

常用的布局

我们首先看一个我们常用的布局,左右布局。

app 页面

我们通常写一个这样的布局,思路是这样的:

  • 我们首先要写三个组件meun.Vueheader.vuecollect.vue
  • 在app添加引入单个组件
 # app.vue
 <template>
   <div class="contain flex p10 mt40 ml40">
     <Menu class="menu width-200 flex-center mr10" />
     <div class="flex1 flex-column">
       <Header class="header mb10 p10 flex-center"></Header>
       <router-view class="view-main"></router-view>
     </div>
   </div>
 </template>

 <script setup>
 import Header from './views/home/header.vue';
 import Menu from './views/home/menu.vue';
 </script>

about 页面

如果我们的about页面,像这样的,没有menu或者header

我们可以根据路由判断是否显示menu或者header组件

<template>
  <div class="contain flex p10 mt40 ml40">
    <Menu class="menu width-200 flex-center mr10" v-if="route.name !== 'about'" />
    <div class="flex1 flex-column">
      <Header class="header mb10 p10 flex-center"></Header>
      <router-view class="view-main"></router-view>
    </div>
  </div>
</template>

<script setup>
import { useRoute } from 'vue-router';
import Header from './views/home/header.vue';
import Menu from './views/home/menu.vue';

const route = useRoute();
</script>

思考🤔

这是我们的常规操作,如果我们有些页面不需要menu或者header页面,我们都是要引入的,还有判断是否显示隐藏。

怎么才能不写这么多判断,又能提高性能的同时,还能实现我们的效果呢?

  • 使用异步组件动态导入 defineAsyncComponent, 有需要组件去官网看下
  • 使用 vue router命名视图

命名视图

我们这里使用命令视图, 来实现我们想要的效果

有时候想同时 (同级) 展示多个视图,而不是嵌套展示,例如创建一个布局,有 sidebar (侧导航) 和 main (主内容) 两个视图,这个时候命名视图就派上用场了。你可以在界面中拥有多个单独命名的视图,而不是只有一个单独的出口。如果 router-view 没有设置名字,那么默认为 default

<router-view class="view left-sidebar" name="LeftSidebar"></router-view>
<router-view class="view main-content"></router-view>
<router-view class="view right-sidebar" name="RightSidebar"></router-view>

Router组合布局

项目目录结构

router-demo
├── src
│   ├── App.vue
│   ├── assets
│   │   └── vue.svg
│   ├── main.js
│   ├── router
│   │   └── index.js
│   ├── store
│   │   └── index.js
│   ├── utils
│   │   └── request.js
│   └── views
│       ├── about
│       │   ├── api
│       │   │   └── index.js
│       │   ├── index.vue
│       │   ├── router
│       │   │   └── index.js
│       │   └── store
│       │       └── index.js
│       ├── home
│       │   ├── header.vue
│       │   └── menu.vue
│       └── main
│           ├── api
│           │   └── index.js
│           ├── index.vue
│           ├── router
│           │   └── index.js
│           └── store
│               └── index.js
└── vite.config.js
  • 修改app.vue视图显示

注意看下📢:添加了两个router-view命名视图

<template>
   <div class="contain flex p10 mt40 ml40">
     <router-view class="menu width-200 flex-center mr10" name="Menu" />
     <div class="flex1 flex-column">
       <router-view class="header mb10 p10 flex-center" name="Headers" />
       <router-view class="view-main"></router-view>
     </div>
   </div>
 </template>

 <script setup>

 </script>
  • 修改main文件夹中的route.js

这里 注意📢:component修改components

// mian/router/index.js
export default [
   {
     path: '/main',
     name: 'main',
     components: {
       default: () => import('../index.vue'),
       Headers: () => import('@/views/home/header.vue'),
       Menu: () => import('@/views/home/menu.vue'),
     },
   },
 ];

  • 修改about文件夹的router.js
// about/router/index.js
export default [
   {
     path: '/about',
     name: 'about',
     components: {
       default: () => import('../index.vue'),
       Headers: () => import('@/views/home/header.vue'),
     },
   },
 ];

如果想显示哪个视图,就在相对应的路由components添加相应的视图组件,这样是不是方便了许多。

结论

  • 不用在app.vue添加判断是否显示隐藏headermenu组件
  • 根据路由动态显示布局样式

这只是提示多一种新的布局方式,方便我们开发,当然还是选择合适自己的写法。

以上就是Vue Router组合布局用法详解的详细内容,更多关于Vue Router组合布局的资料请关注编程网其它相关文章!

--结束END--

本文标题: Vue Router组合布局用法详解

本文链接: https://www.lsjlt.com/news/213357.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作