Vue2下篇

 插槽:

基本插槽:

普通插槽:父组件向子组件传递静态内容。基本插槽只能有一个slot标签,因为这个是默认的位置,所以只能有一个

<!-- ParentComponent.vue -->
<template>
<ChildComponent>
<p>This is passed from parent</p>
</ChildComponent>
</template><!-- ChildComponent.vue -->
<template>
<div>
<slot></slot> <!-- 插槽位置 -->
</div>
</template>
命名插槽:

如果你希望在同一个子组件中传递多个内容,可以通过命名插槽来实现。命名插槽允许父组件向子组件传递不同的内容并指定插槽的位置。

<!-- ParentComponent.vue -->
<template>
<ChildComponent>
<template v-slot:header>
<h1>This is the header</h1>
</template>
<template v-slot:footer>
<p>This is the footer</p>
</template>
</ChildComponent>
</template><!-- ChildComponent.vue -->
<template>
<div>
<header><slot name="header"></slot></header> <!-- 命名插槽 -->
<main>Content of the child component</main>
<footer><slot name="footer"></slot></footer> <!-- 命名插槽 -->
</div>
</template>
作用域插槽:

作用域插槽(也叫做“作用域插槽”)是一种更强大的插槽功能,它让父组件能够通过插槽访问子组件的数据或方法。通过作用域插槽,父组件可以传递一个模板,并且可以访问子组件中的数据

<!-- 父组件 -->
<ListComponent :items="['Apple', 'Banana', 'Cherry']"><template v-slot:default="{ item }"><li>{{ item }}</li></template>
</ListComponent><!-- 子组件 -->
<template><ul><slot v-for="item in items" :item="item"></slot></ul>
</template><script>
export default {props: {items: Array,},
};
</script>

路由:

1.router-link路由跳转:

<router-link :to="/find"> </router-link>  是 Vue Router 提供的组件,它的主要功能是实现 SPA(单页应用)中的路由导航。当用户点击 <router-link> 时,它不会像普通的<a href>标签那样触发页面的完全刷新而是通过 Vue Router 的内部机制,根据路由配置更新当前页面的部分内容,实现页面的局部更新,提供了更流畅的用户体验,避免了传统多页应用中页面跳转带来的白屏和加载延迟等问题。

可以方便地传递路由参数,例如<router-link :to="{name: 'user' ,params: {userId: 123}}">通过name属性和params对象,可以传递参数到目标路由,目标路由可以根据这些参数动态地显示相应内容。

 

使用路由查询传参的方法

1. 在 <router-link> 中使用查询参数

<router-link :to="{ path: '/user', query: { id: 123, name: 'John' }}">
用户信息
</router-link>

:to 是 Vue 的动态绑定语法,这里绑定的是一个对象。 

2.路由出口:

显示跳转页面的对应的组件显示部分

router-view是 Vue Router 提供的一个组件,用于显示当前路由对应的组件内容。当用户点击footer_warp中的 router-link 进行导航时,根据路由配置,对应的组件会在这里渲染。例如,如果用户点击发现音乐链接,路由会将/find路径对应的组件渲染到这个router-view中;如果点击我的音乐链接,会将/my路径对应的组件渲染到router-view中,以此类推。

 

使用动态数据作为 include 属性

<template><keep-alive :include="keepArr"><router-view></router-view></keep-alive>
</template>
<script>
export default {data() {return {keepArr: ['HomeComponent', 'AboutComponent']};}
};
</script>
  • 在这个示例中,keepArr 是一个数组,存储了需要被缓存的组件名称。
  • 可以动态地修改 keepArr 数组,例如通过方法添加或删除元素,来控制哪些组件被缓存。
  • 当 router-view 中的组件名称在 keepArr 数组中时,该组件会被 keep-alive 缓存,例如当路由切换到 HomeComponent 或 AboutComponent 时,这些组件会被缓存。
 3.route路由参数:
export default {
name: 'UserComponent',
created() {
// 获取查询参数
const id = this.$route.query.id;
const name = this.$route.query.name;
console.log(id, name);
}
};
 4.导入方式:

静态导入:

import User from '@/views/layout/user.vue';

这种导入方式是静态导入,在 JavaScript 文件加载时,这些模块会被立即导入。

缺点:会增加初始加载时间和包的大小。这是因为在这种情况下,初始的包会包含所有导入的模块和组件代码,即便其中某些组件可能不会被立即使用。

 

动态导入:

const Prodetail = () => import('@/views/prodetail');

这种导入方式是动态导入,使用函数调用 import(),它返回一个 Promise,会在函数被调用时才开始导入模块。

优点:可实现懒加载,减少初始包的大小,进而提高应用的初始加载速度,适用于一些不常用的页面或组件。能够根据用户的操作或路由导航动态加载模块,优化性能。

import Vue from 'vue'
import VueRouter from 'vue-router'
// 这个效果和后面加上login/index.uve是一样的
import Layout from '@/views/layout'
import Home from '@/views/layout/home.vue'
import Category from '@/views/layout/category.vue'
import Cart from '@/views/layout/cart.vue'
import User from '@/views/layout/user.vue'
import store from '@/store'const Login = () => import('@/views/login')
const SearchIndex = () => import('@/views/search/index.vue')
const Pay = () => import('@/views/pay')
const Prodetail = () => import('@/views/prodetail')Vue.use(VueRouter)const router = new VueRouter({routes: [{ path: '/login', component: Login },{path: '/',// 添加重定向redirect: '/home',component: Layout,children: [{ path: '/home', component: Home },{ path: '/category', component: Category },{ path: '/cart', component: Cart },{ path: '/user', component: User }]},{ path: '/pay', component: Pay },// 动态路由传参{ path: '/prodetail/:id', component: Prodetail },{ path: '/searchIndex', component: SearchIndex }]
})
export default router

      重定向:

      { path: '/', redirect: '/home' }:当用户访问根路径 / 时,会自动重定向到 /home 路径。这里的重定向是静态的,因为重定向的目标是固定的 /home 路径,不会根据用户状态或其他条件而改变。

      导航守卫:

      每次跳转页面前触发,进行一下路由处理 

      // 所有的路由在真正被访问到之前(解析渲染对应组件前),都会先经过全局前置守卫// 全局前置导航守卫
      // to: 到哪里去,到哪里的路由信息对象(路径,参数)
      // from: 从哪里来,从哪里来的完整路由信息对像,(路径,参数)
      // next() 放行 放行到to要去的路径
      // next(路径) 进行拦截,拦截到next里面配置的路径// 定义一个数组,专门用户存放所有需要权限访问的页面
      const authUrls = ['/pay', '/myorder']
      router.beforeEach((to, from, next) => {const token = store.getters.token// 如果是非权限页面,直接放行if (!authUrls.includes(to.path)) {return next()}// 如果是权限页面if (token) {next() // 有 token 放行} else {// 无 token,跳转到登录页next('/login')}
      })

      自定义指令:

      局部自定义指令:

      directives: {...}:在组件的 directives 属性中注册自定义指令。

      'local-focus':自定义指令的名称,使用时为 v-local-focus

      <template><div><input v-local-focus type="text" /></div>
      </template><script>
      export default {directives: {'local-focus': {inserted: function (el) {el.focus();}}}
      };
      </script>
      全局自定义指令:
      直接将指令定义在main.js文件当中
      Vue.directive('focus', {inserted: function (el) {el.focus();}
      });

       带有参数的指令:

      <!-- 使用带有普通参数的自定义指令 -->
      <input type="text" v-color:red>directives: {color: {bind: function (el, binding) {// 获取参数const color = binding.arg; el.style.color = color;}}}

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

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

      相关文章

      【科研建模】Pycaret自动机器学习框架使用流程及多分类项目实战案例详解

      Pycaret自动机器学习框架使用流程及项目实战案例详解 1 Pycaret介绍2 安装及版本需求3 Pycaret自动机器学习框架使用流程3.1 Setup3.2 Compare Models3.3 Analyze Model3.4 Prediction3.5 Save Model4 多分类项目实战案例详解4.1 ✅ Setup4.2 ✅ Compare Models4.3 ✅ Experime…

      Linux学习笔记——网络管理命令

      一、网络基础知识 TCP/IP四层模型 以太网地址&#xff08;MAC地址&#xff09;&#xff1a; 段16进制数据 IP地址&#xff1a; 子网掩码&#xff1a; 二、接口管命令 ip命令&#xff1a;字符终端&#xff0c;立即生效&#xff0c;重启配置会丢失 nmcli命令&#xff1a;字符…

      手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion(原理介绍)

      手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion&#xff08;原理介绍&#xff09; 目录 手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion&#xff08;原理介绍&#xff09;DDPM 原理图Stable Diffusion 原理Stable Diffusion的原理解释Stable Diffusion 和 Diffus…

      JAVAweb学习日记(八) 请数据库模型MySQL

      一、MySQL数据模型 二、SQL语言 三、DDL 详细见SQL学习日记内容 四、DQL-条件查询 五、DQL-分组查询 聚合函数&#xff1a; 分组查询&#xff1a; 六、DQL-分组查询 七、分页查询 八、多表设计-一对多&一对一&多对多 一对多-外键&#xff1a; 一对一&#xff1a; 多…

      微信小程序1.1 微信小程序介绍

      1.1 微信小程序介绍 内容提要 1.1 什么是微信小程序 1.2 微信小程序的功能 1.3 微信小程序使用场景 1.4 微信小程序能取代App吗 1.5 微信小程序的发展历程 1.6微信小程序带来的机会

      音频入门(一):音频基础知识与分类的基本流程

      音频信号和图像信号在做分类时的基本流程类似&#xff0c;区别就在于预处理部分存在不同&#xff1b;本文简单介绍了下音频处理的方法&#xff0c;以及利用深度学习模型分类的基本流程。 目录 一、音频信号简介 1. 什么是音频信号 2. 音频信号长什么样 二、音频的深度学习分…

      Midjourney中的强变化、弱变化、局部重绘的本质区别以及其有多逆天的功能

      开篇 Midjourney中有3个图片“微调”&#xff0c;它们分别为&#xff1a; 强变化&#xff1b;弱变化&#xff1b;局部重绘&#xff1b; 在Discord里分别都是用命令唤出的&#xff0c;但如今随着AI技术的发达在类似AI可人一类的纯图形化界面中&#xff0c;我们发觉这样的逆天…

      【Linux】命令为桥,存在为岸,穿越虚拟世界的哲学之道

      文章目录 Linux基础入门&#xff1a;探索操作系统的内核与命令一、Linux背景与发展历史1.1 Linux的起源与发展1.2 Linux与Windows的对比 二、Linux的常用命令2.1 ls命令 - "List"&#xff08;列出文件)2.2 pwd命令 - "Print Working Directory"&#xff08…

      [护网杯 2018]easy_tornado1

      题目 、 依次点击文件查看 /flag.txt flag in /fllllllllllllag /welcome.txt render /hints.txt md5(cookie_secretmd5(filename)) tornado模板注入 报cookie /error?msg{{handler.settings}} cookie_secret: 6647062b-e68d-4406-90d3-06e307fa955c} 使用python脚本…

      STM32+W5500+以太网应用开发+003_TCP服务器添加OLED(u8g2)显示状态

      STM32W5500以太网应用开发003_TCP服务器添加OLED&#xff08;u8g2&#xff09;显示状态 实验效果3-TCP服务器OLED1 拷贝显示驱动代码1.1 拷贝源代码1.2 将源代码添加到工程1.3 修改代码优化等级1.4 添加头文件路径1.5 修改STM32CubeMX工程 2 修改源代码2.1 添加头文件2.2 main函…

      基于微信小程序的英语学习交流平台设计与实现(LW+源码+讲解)

      专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

      ORB-SLAM2源码学习:Initializer.cc⑧: Initializer::CheckRT检验三角化结果

      前言 ORB-SLAM2源码学习&#xff1a;Initializer.cc⑦: Initializer::Triangulate特征点对的三角化_cv::svd::compute-CSDN博客 经过上面的三角化我们成功得到了三维点&#xff0c;但是经过三角化成功的三维点并不一定是有效的&#xff0c;需要筛选才能作为初始化地图点。 …

      macOS如何进入 Application Support 目录(cd: string not in pwd: Application)

      错误信息 cd: string not in pwd: Application 表示在当前目录下找不到名为 Application Support 的目录。可能的原因如下&#xff1a; 拼写错误或路径错误&#xff1a;确保你输入的目录名称正确。目录名称是区分大小写的&#xff0c;因此请确保使用正确的大小写。正确的目录名…

      记录一个连不上docker中的mysql的问题

      引言 使用的debian12,不同发行版可能有些许差异&#xff0c;连接使用的工具是navicat lite 本来是毫无思绪的&#xff0c;以前在云服务器上可能是防火墙的问题&#xff0c;但是这个桌面环境我压根没有使用防火墙。 直到 ying192:~$ mysql -h127.0.0.1 -uroot ERROR 1045 (28…

      Gradle自定义任务指南 —— 释放构建脚本的无限可能

      文章目录 &#x1f50d;Gradle任务⚙️ 自定义任务的5大核心配置项1. 任务注册&#xff08;Registering Tasks&#xff09;2. group & description3. dependsOn4. inputs & outputs5. 类型化任务&#xff08;Task Types&#xff09; 任务常见配置参数传递方式1&#xf…

      windows11关闭系统更新详细操作步骤

      文章目录 1.打开注册表2.修改注册表内容2.1 新建文件2.2 修改值 3.修改设置 1.打开注册表 winR输入regedit(如下图所示) 2.修改注册表内容 进HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 2.1 新建文件 右侧界面右键即可 2.2 修改值 重命名为如下…

      matlab绘图——彩色螺旋图

      代码生成的图形是一个动态的彩色螺旋&#xff0c;展示了如何利用极坐标和颜色映射创建视觉吸引力强的图形。该图形可以用于数据可视化、艺术创作或数学演示&#xff0c;展示了 MATLAB 在图形处理方面的强大能力。通过调整 theta 和 r 的范围&#xff0c;可以创建出不同形状和复…

      啥是EPS?

      文章目录 1. 什么是EPS?2. 主要构成3. EPS的设计如何符合功能安全?4. 代表性的厂家1. 什么是EPS? EPS(Electric Power Steering,电动助力转向系统)是一种利用电动机提供转向助力的系统,取代了传统的液压助力转向系统(HPS)。EPS通过传感器检测驾驶员的转向意图,并由电…

      QT:控件属性及常用控件(3)-----输入类控件(正则表达式)

      输入类控件既可以进行显示&#xff0c;也能让用户输入一些内容&#xff01; 文章目录 1.Line Edit1.1 用户输入个人信息1.2 基于正则表达式的文本限制1.3 验证两次输入的密码是否一致1.4 让输入的密码可以被查看 2.Text Edit2.1 输入和显示同步2.1 其他信号出发情况 3.ComboBox…

      24_游戏启动逻辑梳理总结

      首先这个项目从游戏根入口GameRoot.cs的初始化开始 分为 服务层初始化Svc.cs 与 业务系统层初始化Sys.cs 而服务层 分为 资源加载服务层ResSvc.cs 与 音乐播放服务层AudioSvc.cs 而在 资源加载服务层ResSvc.cs中 初始化了 名字的 配置文件 而音乐播放服务层AudioSvc.cs 暂时没…