教你vue-router命令视图应该怎么玩

news2025/2/25 9:48:22

引言
在VUE实战项目开发中,为了减少代码冗余,便于后期维护,我们经常会把相同布局的代码封装为公共组件,例如移动开发中NavBar导航栏、Tabbar标签栏等公共组件,需要使用时导入、注册、调用即可,但是相对NavBar导航栏、Tabbar标签栏几乎每个页面都需要使用的公共组件每次导入注册较为麻烦,有没有更好的解决方案呢,接下来通过本篇文章来解答各位小伙伴疑惑。
一、效果介绍
话不多说开局一张图,咱们先来上一张图看看效果在这里插入图片描述
那激动人心的时刻到了,我们如何使用vue-router命令视图呢?
二、命名视图
2.1、介绍
当我们需要同时(同级)展示多个视图,就可以利用vue-router中的命名视图。通过下述命名视图语法我们就可以轻松实现,当一个路由path 匹配后,分别检查是否需要在navbar、default、tabbar三个视图区展示

<router-view name="navbar"></router-view>
<router-view></router-view>
<router-view name="tabbar"></router-view>

接着我们在定义路由时,将component 改为components 定义一个路由path 对应n个同级组件,然后在对应
视图区域显示

const router = new VueRouter({
  routes: [
    {
      path: '/',
      components: {
        // 键 - 对应视图name属性值,default则是默认的
        // 值 - 每个视图区需要显示的组件内容,写组件名即可
        navbar: navbar组件名,
        default: 默认组件名,
        tabbar: tabbar组件名
      }
    }
  ]
})

感觉如何,是不是很简单,知道概念和语法后,下面我们就一起来试试吧

2.2、使用
首先我们分部定义NavBar导航栏、Tabbar标签栏公共组件

// 定义公共组件
const navbar1 = { template: `<h1 class="header1">1</h1>` } 
const tabbar1 = { template: `<h1 class="footer1">底部1</h1>` }
const tabbar2 = { template: `<h1 class="footer2">底部2</h1>` }

在vue库学习中我们利用 Vue.component 来定义公共组件、在vuecli中我们利用 .vue 文件 ,这里我们按照的是路由简写定义公共组件。
接着我们来定义路由匹配规则

// 定义路由
const router = new VueRouter({
    // 声明路由模式
    mode: 'hash',
    // 声明路由
    routes: [
        // {path: '/goods', alias: '/', component: goods},
        // {path: '/order', component: order},
        // {path: '/my', component: my},
        
        {path: '/goods', alias: '/', components: {default:goods,navbar:navbar1,tabbar:tabbar1}},
        {path: '/order', components: {default:order,navbar:navbar1,tabbar:tabbar2}},
        {path: '/my', components: {default:my,navbar:navbar1,tabbar:tabbar2}},
    ]
})

alias 是路由别名、components 多加了一个 s 可以同时(同级)展示多个视图
然后就是视图区展示匹配的组件数据了

<router-view name="navbar"></router-view>
<router-view></router-view>
<router-view name="tabbar"></router-view>

完整代码,各位小伙伴可以通过浏览器运行查看效果啦(* ̄︶ ̄)

<style>  
* {padding: 0px;margin:0px;}
.container {
    width: 100%;height: 100%;
    background: #ccc;
}

.navbar1 {width: 100%; height: 100px; background: green; color:red}
.tabbar1 {width: 100%; height: 100px; background: black; color:#fff}
.tabbar2 {width: 100%; height: 100px; background: purple; color:#fff}

.goods,.order,.my {
    height: 200px;
    background: blue;
}
</style>
<div id="root">     
    <router-view name="navbar"></router-view>     
    <router-view></router-view>     
    <router-view name="tabbar"></router-view>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router@3.4.9/dist/vue-router.js"></script>
<script>
// 定义公共组件
const navbar1 = { template: `<h1 class="navbar1">1</h1>` } 
const tabbar1 = { template: `<h1 class="tabbar1">底部1</h1>` }
const tabbar2 = { template: `<h1 class="tabbar2">底部2</h1>` }

const goods = { template: `<h1 class="goods">商品</h1>` } 
const order = { template: `<h1 class="order">订单</h1>` } 
const my = { template: `<h1 class="my">我的</h1>` } 
    
// 定义路由
const router = new VueRouter({
    // 声明路由模式
    mode: 'hash',
    // 声明路由
    routes: [
        // {path: '/goods', alias: '/', component: goods},
        // {path: '/order', component: order},
        // {path: '/my', component: my},

        
        {path: '/goods', alias: '/', components: {default:goods,navbar:navbar1,tabbar:tabbar1}},
        {path: '/order', components: {default:order,navbar:navbar1,tabbar:tabbar2}},
        {path: '/my', components: {default:my,navbar:navbar1,tabbar:tabbar2}},
    ]
})
const vm = new Vue({
    // 激活
    router,
    el: "#root",
    data: {
    }
})
</script>

const goods = { template: <h1 class="goods">商品</h1> }
const order = { template: <h1 class="order">订单</h1> }
const my = { template: <h1 class="my">我的</h1> }

// 定义路由
const router = new VueRouter({
// 声明路由模式
mode: ‘hash’,
// 声明路由
routes: [
// {path: ‘/goods’, alias: ‘/’, component: goods},
// {path: ‘/order’, component: order},
// {path: ‘/my’, component: my},

    {path: '/goods', alias: '/', components: {default:goods,navbar:navbar1,tabbar:tabbar1}},
    {path: '/order', components: {default:order,navbar:navbar1,tabbar:tabbar2}},
    {path: '/my', components: {default:my,navbar:navbar1,tabbar:tabbar2}},
]

})
const vm = new Vue({
// 激活
router,
el: “#root”,
data: {
}
})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/10115.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JSRPC的三种实现方式

RPC 为远程过程调用&#xff0c;本文通过在浏览器端&#xff08;服务端&#xff09;开启一个WebSocket服务&#xff0c;接收命令&#xff0c;执行浏览器网页的加密代码&#xff0c;得到密文。 CMD端&#xff08;客户端&#xff09;也开启一个WebSocket服务与浏览器端交互&#…

【Spring Boot】Day03

文章目录一、Value和ConfigurationProperties的区别二、PropertySource一、Value和ConfigurationProperties的区别 区别&#xff1a; 数据校验&#xff1a;判断数据是否合法 Value: 不支持数据校验ConfigurationProperties&#xff1a;支持数据校验 开启数据校验功能&#xf…

软考证书可积分落户、评职称、抵扣个税等,快来考一个吧!

很多人想要在工作的城市落户、买房、生活、小孩上学&#xff0c;但由于对于城市落户政策不了解&#xff0c;担心自己条件不够!今天给大家介绍一本软考证书帮你解决落户等问题。 软考&#xff0c;是由国家人力资源和社会保障部、工业和信息化部领导下的国家级考试&#xff1b;既…

[附源码]java毕业设计价格公示系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

C. Bouncing Ball(从后往前的前缀和)

Problem - 1415C - Codeforces 你正在为某个手机游戏创建一个游戏关卡。这个关卡应该包含一些从左到右排列的单元格&#xff0c;并以从1开始的连续整数编号&#xff0c;在每个单元格中&#xff0c;你可以放一个平台&#xff0c;也可以让它空着。 为了通过一个关卡&#xff0c;…

牛客网-《刷C语言百题》第四期

✅作者简介&#xff1a;嵌入式入坑者&#xff0c;与大家一起加油&#xff0c;希望文章能够帮助各位&#xff01;&#xff01;&#xff01;&#xff01; &#x1f4c3;个人主页&#xff1a;rivencode的个人主页 &#x1f525;系列专栏&#xff1a;《C语言入门必刷百题》 &#x…

QStyleFactor和QPalette

Qt中的分格都继承自QStyle&#xff0c;QStyle类是一个抽象基类&#xff0c;封装了一个GUI的外观。 QStyle常见的子类有&#xff1a; QStyleFactory类QPalette类QStyleFactor类 函数为&#xff1a; create()创建并返回与给定键匹配的QStyle对象keys()返回有效键的列表 获取有…

面试灵活拷问:对于数据库的索引,你是怎么理解的?

文章目录一、索引的概念及作用概念作用二、索引的应用场景三、索引的相关语法1.查询索引2.创建索引3.删除索引注意四、索引背后的数据结构什么是B树B树有什么特点采用B树结构能为索引带来什么好处五、索引的分类1.唯一索引&#xff08;unique键对应的字段&#xff09;2.主键索引…

Selenium基础 — 拓展:使用浏览器加载项配置实现用户免登陆

1、什么是加载项配置 在很多情况下&#xff0c;我们在登录网站的时候&#xff0c;浏览器都会弹出一个是否保存登录账号的信息。如果我们选择保存&#xff0c;那么我们在下次登录时就不用再次输入账号&#xff0c;直接免登录了。 在我们实际的测试过程中&#xff0c;测试注册登…

系统运维利器,百万服务器运维实战总结!一文了解最新版SysAK|龙蜥技术

在刚刚结束的龙蜥峰会 eBPF & Linux 稳定性专场上&#xff0c;龙蜥系统运维 SIG Maintainer 张毅做了《SysAK 系统运维工具集》的主题演讲&#xff0c;以下为演讲实录。 大家好&#xff0c;在去年的云栖大会&#xff0c;我们在龙蜥社区开源了系统运维工具集 SysAK&#xff…

new Vue的时候到底做了什么

Vue加载流程 1.初始化的第一阶段是Vue实例也就是vm对象创建前后&#xff1a;首先Vue进行生命周期&#xff0c;事件初始化发生在beforeCreate生命周期函数前&#xff0c;然后进行数据监测和数据代理的初始化&#xff0c;也就是创建vm对象的过程&#xff0c;当vm对象创建完成就可…

【Linux】gcc的使用

文章目录一、前言二、gcc的基本使用1. 预处理2. 编译3. 汇编4. 链接三、函数库四、gcc常用选项总结一、前言 在学习本文前&#xff0c;我们先简单回顾一下源代码被转换为可执行的机器指令的每个过程&#xff1a; 预处理&#xff08;进行宏替换)编译&#xff08;生成汇编)汇编…

windows什么录屏软件好用,windows屏幕录制软件

大部分人的电脑都是windows电脑&#xff0c;所以很多人都在找适合windows系统的录屏工具&#xff0c;windows什么录屏软件好用&#xff1f;我们到底该选择哪个录屏工具呢&#xff1f;今天我们就来给大家介绍windows版本的录屏工具。 一、易我录屏助手 这个工具很多人都比较熟悉…

艾美捷人重组MEGACD40L蛋白(可溶性)实例展示

艾美捷人重组MEGACD40L蛋白&#xff08;可溶性&#xff09;是一种高活性蛋白质&#xff0c;其中两个三聚体CD40配体分子通过脂联素/ACRP30/AdipoQ的胶原结构域人工连接。这种蛋白质非常有效地模拟体内CD40L的自然膜辅助聚集。 艾美捷人重组MEGACD40L蛋白&#xff08;可溶性&…

openEuler快速入门(二)-openEuler命令行基础操作

系列文章目录 第一章 openEuler快速入门(一)-openEuler操作系统介绍 文章目录系列文章目录前言一、shell是什么二、Linux命令行操作技巧三、基础命令3.1、Linux命令分类3.2、目录和文件3.2.1 相对路径和绝对路径3.2.2 处理目录的常用命令ls&#xff1a;cd&#xff1a;pwd&…

供应N3-PEG-COOH,Azide-PEG-acid,叠氮-聚乙二醇-羧基可增加溶解度

一&#xff1a;产品描述 1、名称 英文&#xff1a;Azide-PEG-acid&#xff0c;N3-PEG-COOH 中文&#xff1a;叠氮-聚乙二醇-羧基 2、CAS编号&#xff1a;N/A 3、所属分类&#xff1a;Azide PEG Carboxylic acid PEG 4、分子量&#xff1a;可定制&#xff0c;1000、2000、…

搭建Redis -Sentinel架构

准备服务器 master节点&#xff1a;192.168.1.121 从节点1&#xff1a;192.168.1.122 从节点2&#xff1a;192.168.1.123 安装详细步骤 1、下载安装包 https://redis.io/download/ 2、进入工作目录 $cd /home 3、解压安装包 $tar -zxvf redis-6.2.6.tar.gz 4、建立软连接 $l…

OpenCV_06 图像平滑:图像噪声+图像平滑+滤波

文章目录1 图像噪声1.1 椒盐噪声1.2 高斯噪声1.3 瑞利噪声1.4 伽马噪声1.5 指数噪声1.6 均匀噪声2 滤波器2.1 均值滤波器2.1.1 算数平均值滤波器2.1.2 几何均值滤波器2.1.3 谐波平均滤波器2.1.4 反谐波平均滤波器2.2 统计排序滤波器2.2.1 中值滤波器2.2.2 最大值滤波器2.2.3 最…

翻开spring源码横看竖看,满屏只有四个字,看不懂啊。幸好我有大神的深度剖析spring源码,轻松看懂

前言 有一天&#xff0c;我翻开源码横看竖看&#xff0c;满屏只看到四个字&#xff0c;我看不懂啊。 所以是不是曾和我一样迷失在毫无头绪的源码里&#xff0c;在各种类和方法里翻山越岭&#xff0c;却如同管中窥豹。是的话&#xff0c;要不今晚早点睡&#xff1f; 呸&#x…

前端学习路线(二)

在前端学习路线&#xff08;一&#xff09;一章中我们讲了关于前端三剑客和jq与js的问题&#xff0c;并且简要的说明了js高级是什么&#xff0c;那在本章节我们主要从如何学习js高级开始进行讲述&#xff0c;并对es6如何学习&#xff0c;bootstrap学不学和学什么&#xff0c;并…