如何让url在新页面打开路由页面,并脱离vue-admin-template的壳,即不包裹在侧边栏和顶栏中

简介: 如何让url在新页面打开路由页面,并脱离vue-admin-template的壳,即不包裹在侧边栏和顶栏中

一、打开的页面不包裹在侧边栏和顶栏中

在使用vue-admin-template新建的页面中,打开的页面都是在框架内的内容区。

但假如我需要在左侧点击一个链接,希望能不受框架束缚,在全新页面中打开,该怎么做呢?

要实现这一点,其实就要知道,路由为什么只会在内容区打开,我们先来看看写在路由文件router.js中的这段代码:

import Layout from '../views/layout/Layout'
export const asyncRouterMap = [
{
        path: '/dashboard',
        name: 'dashboard',
        component: Layout, //这里约定了框架
        redirect: { name: 'index' },
        meta: { title: '首页', icon: 'icon_shouye', isHomePage: false },
        children: [
            {
                path: 'index',
                name: 'index',
                component: () => import('@/views/dashboard/index'),
                meta: {
                    title: '首页',
                    hiddenNode: true,
                    icon: 'icon_shouye'
                }
            }
        ]
    },
]

以上代码,component: Layout, 这个其实就是框架组件,就是它束缚了我们的页面只能在该框架中打开。

要想在全新的窗口打开,不受束缚,我们可以自行创建一个layout,比如:

<template>
  <!-- 打开一级菜单,不包含侧边栏、顶栏、尾部的空白模板 -->
  <div class="blank-layout">
    <!-- 在这里放置子菜单内容 -->
    <router-view></router-view>
  </div>
</template>
<style scoped></style>
<script>
export default {
  name: "BlankLayout"
};
</script>

然后在router.js中导入,并且写如下配置即可:

{
    path: "/Visualization",
    name: "Visualization",
    component: BlankLayout, //在新空白框架中载入url
    redirect: { name: "Visualization2" }, //在该控件中跳转到该组件
    meta: { title: "可视化大屏", isHomePage: false },
    children: [
      {
        path: "",
        name: "Visualization2",//实际要打开的组件,即访问/Visualization其实是对应的该组件
        target: true, //让菜单在新窗口打开,这个需要修改sidebar的配置
        component: () => import("@/views/Visualization/index"),
        meta: {
          title: "可视化大屏",
          hiddenNode: true,
          target: "_blank",
          icon: "icon_anjian"
        }
      }
    ]
  },

二、新窗口打开(_blank)

如上代码,我新添加了一个新窗口打开的控制属性:target: true,

还需要修改一个地方即可实现,找到\src\views\layout\components\Sidebar\SidebarItem.vue

<router-link中添加如下属性::target="onlyOneChild.target == true ? '_blank' : ''"即可。

完整代码:

<div v-if="!item.hidden && item.children" class="menu-wrapper">
    <router-link v-if="hasOneShowingChild(item.children) && !onlyOneChild.children && !item.alwaysShow" :to="resolvePath(onlyOneChild.path)" :target="onlyOneChild.target == true ? '_blank' : ''">
      <el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{ 'submenu-title-noDropdown': !isNest }">
        <svg-icon v-if="onlyOneChild.meta && onlyOneChild.meta.icon" :icon-class="onlyOneChild.meta.icon" class="iconClass"></svg-icon>
        <span v-if="onlyOneChild.meta && onlyOneChild.meta.title" slot="title">{{ onlyOneChild.meta.title }}</span>
      </el-menu-item>
    </router-link>
    ....
</div>

三、最终效果

当我点击时,他会在新窗口打开一个全新的页面,而不会受到框架约束。

如果你也遇到了该问题,且需了解echarts解决方案,可按下方私我v.

如果你在web前端开发、面试、前端学习路线有困难可以加我V:imqdcnn。免费答疑,行业深潜多年的技术牛人帮你解决bug。

祝你能成为一名优秀的WEB前端开发工程师!

相关文章
|
7月前
|
移动开发 前端开发 JavaScript
前端vue2、vue3去掉url路由“ # ”号——nginx配置(一)
前端vue2、vue3去掉url路由“ # ”号——nginx配置
514 0
|
4月前
|
Python
路由(URL routing)
【8月更文挑战第23天】
36 4
|
26天前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
28天前
|
域名解析 缓存 网络协议
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
|
4月前
|
网络协议 前端开发 JavaScript
浏览器加载网页的幕后之旅:从URL到页面展示详解
【8月更文挑战第31天】当在浏览器地址栏输入URL并回车后,一系列复杂过程随即启动,包括DNS解析、TCP连接建立、HTTP请求发送、服务器请求处理及响应返回,最后是浏览器页面渲染。这一流程涉及网络通信、服务器处理和客户端渲染等多个环节。通过示例代码,本文详细解释了每个步骤,帮助读者深入理解Web应用程序的工作机制,从而在开发过程中作出更优决策。
67 5
|
4月前
|
API 开发者 Python
"FastAPI路由大揭秘!轻松玩转URL映射,让你的Web应用路由设计既RESTful又灵活多变,秒杀传统框架的秘籍在这里!"
【8月更文挑战第31天】在Web开发中,路由是连接用户请求与后端逻辑的关键。FastAPI作为现代Python Web框架的佼佼者,以其简洁的API设计和高性能,提供了高度灵活的路由系统。本文通过开发一个博客系统的案例,详细介绍了FastAPI中路由的实现方法,包括基础路由定义、参数类型验证及路由分组与嵌套等,展示了如何轻松构建RESTful风格的URL映射,提升应用的可维护性和扩展性。
109 2
|
4月前
|
缓存 前端开发 JavaScript
输入URL到页面渲染的全过程
输入URL到页面渲染的全过程
36 1
|
7月前
|
前端开发 JavaScript 应用服务中间件
前端vue2、vue3去掉url路由“ # ”号——nginx配置(二)
前端vue2、vue3去掉url路由“ # ”号——nginx配置
339 0
|
4月前
|
JavaScript Linux 应用服务中间件
【Azure 应用服务】FTP 部署 Vue 生成的静态文件至 Linux App Service 后,访问App Service URL依旧显示Azure默认页面问题
【Azure 应用服务】FTP 部署 Vue 生成的静态文件至 Linux App Service 后,访问App Service URL依旧显示Azure默认页面问题
|
4月前
|
开发者 Java UED
大文件传输不再头疼:揭秘Struts 2如何轻松应对文件上传与下载难题!
【8月更文挑战第31天】在Web应用开发中,文件上传与下载至关重要。Struts 2作为主流Java EE框架,凭借Commons FileUpload及文件上传拦截器简化了相关操作。本文探讨Struts 2在文件传输上的优势,通过具体配置与代码示例,展示如何设置最大文件大小、使用`fileUpload`拦截器以及实现文件上传与下载功能。对于大文件传输,Struts 2不仅能够轻松应对,还支持上传进度显示,有效提升了用户体验。总体而言,Struts 2为文件传输提供了高效便捷的解决方案,助力开发者构建稳定可靠的Web应用。然而,在处理大文件时需兼顾网络带宽与服务器性能,确保传输顺畅。
65 0