前端Vue入门-day05-自定义指令、插槽、路由入门

news2024/11/14 13:35:30

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)

目录

自定义指令 

基本语法 (全局&局部注册)

全局注册 

局部注册

指令的值 

v-loading 指令封装

插槽

默认插槽

后备内容(默认值) 

具名插槽 

作用域插槽 

路由入门

单页应用程序: SPA - Single Page Application

路由的介绍 

路由的基本使用 

VueRouter 的 介绍

VueRouter 的 使用 (5 + 2) 

5个基础步骤 (固定) 

2 个核心步骤


自定义指令 

基本语法 (全局&局部注册)

自定义指令:自己定义的指令, 可以 封装一些 dom 操作 , 扩展额外功能

全局注册 

//全局注册指令
Vue.directive('focus',{
  //inserted 会在指令所在的元素,被插入到页面中时触发
  inserted(el){
    //el就是指令所绑定的元素
    el.focus()
  }
})
 <div id="app">
    <h1>自定义指令</h1>
    <input v-focus ref="inp" type="text">
  </div>

网页显示为:                                                

局部注册

<template>
  <div id="app">
    <h1>自定义指令</h1>
    <input v-focus ref="inp" type="text">
  </div>
</template>

<script>

export default {
 directives:{
  focus:{
    inserted(el){
      el.focus()
    }
  }
 }
}
</script>

指令的值 

需求:实现一个 color 指令 - 传入不同的颜色, 给标签设置文字颜色
语法:在绑定指令时,可以通过“等号”的形式为指令 绑定 具体的参数值
通过 binding.value 可以拿到指令值,指令值修改会 触发 update 函数
<template>
  <div id="app">
    <h1 v-color="color1">自定义指令1</h1>
    <h1 v-color="color2">自定义指令2</h1>
  </div>
</template>

<script>
export default {
  data(){
    return{
      color1:'red',
      color2:'green'
    }
  },
  directives:{
    color:{
      //1.inserted提供的是元素被添加到页面中时的逻辑
      inserted(el,binding){
        el.style.color=binding.value
      },
      //2.update 指令的值修改的时候触发,提供值变化后,dom更新的逻辑
      update(el ,binding){
        el.style.color=binding.value
      }
    }
  }
}
</script>

<style>

</style>

 网页显示为:                       

v-loading 指令封装

场景:实际开发过程中,发送 请求需要时间 ,在请求的数据未回来时,页面会处于 空白状态 => 用户体验不好
需求:封装一个 v-loading 指令,实现加载中的效果

分析:
1. 本质 loading 效果就是一个蒙层,盖在了盒子上
2. 数据请求中,开启loading状态,添加蒙层
3. 数据请求完毕,关闭loading状态,移除蒙层
实现:
1. 准备一个 loading 类,通过伪元素定位,设置宽高,实现蒙层
2. 开启关闭 loading 状态(添加移除蒙层),本质只需要添加移除类即可
3. 结合自定义指令的语法进行封装复用
<script>
// 安装axios =>  yarn add axios
import axios from 'axios'

// 接口地址:http://hmajax.itheima.net/api/news
// 请求方式:get
export default {
  data () {
    return {
      list: [],
      isLoading: true,
      isLoading2: true
    }
  },
  async created () {
    // 1. 发送请求获取数据
    const res = await axios.get('http://hmajax.itheima.net/api/news')
    
    setTimeout(() => {
      // 2. 更新到 list 中,用于页面渲染 v-for
      this.list = res.data.data
      this.isLoading = false
    }, 2000)
  },
  directives: {
    loading: {
      inserted (el, binding) {
        binding.value ? el.classList.add('loading') : el.classList.remove('loading')
      },
      update (el, binding) {
        binding.value ? el.classList.add('loading') : el.classList.remove('loading')
      }
    }
  }
}
</script>

插槽

默认插槽

插槽基本语法:
1. 组件内需要定制的结构部分,改用<slot></slot>占位
2. 使用组件时, <MyDialog></MyDialog>标签内部, 传入结构替换slot

后备内容(默认值) 

插槽后备内容:封装组件时,可以为预留的 ` <slot> ` 插槽提供 后备内容 (默认内容)。
语法: 在 <slot> 标签内,放置内容, 作为默认显示内容

效果:

        外部使用组件时,不传东西,则slot会显示后备内容

        外部使用组件时,传东西了,则slot整体会被换掉

具名插槽 

需求:一个组件内有多处结构,需要外部传入标签,进行定制
默认插槽:一个的定制位置

具名插槽语法:

3. v-slot:插槽名 可以简化成 #插槽名

作用域插槽 

作用域插槽: 定义 slot 插槽的同时, 是可以 传值 的。给 插槽 上可以 绑定数据 ,将来 使用组件时可以用
场景:封装表格组件
1. 父传子,动态渲染表格内容
2. 利用默认插槽,定制操作列
3. 删除或查看都需要用到 当前项的 id ,属于 组件内部的数据
通过 作用域插槽 传值绑定,进而使用

基本使用步骤: 

1. 给 slot 标签, 以 添加属性的方式传值
2. 所有添加的属性, 都会被收集到一个对象中
3. 在template中, 通过 ` #插槽名= "obj" ` 接收,默认插槽名为 default

路由入门

单页应用程序: SPA - Single Page Application

单页面应用(SPA): 所有功能在 一个html页面 上实现

路由的介绍 

生活中的路由:设备和ip的映射关系

Vue中路由: 路径 和 组件 映射 关系

 

路由的基本使用 

VueRouter 的 介绍

目标:认识插件 VueRouter,掌握 VueRouter 的基本使用步骤
作用: 修改 地址栏路径时, 切换显示 匹配的 组件
说明:Vue 官方的一个路由插件,是一个第三方包
官网: https://v3.router.vuejs.org/zh/

VueRouter 的 使用 (5 + 2) 

5个基础步骤 (固定) 

① 下载: 下载 VueRouter 模块到当前工程,版本3.6.5
② 引入
③ 安装注册
④ 创建路由对象
⑤ 注入,将路由对象注入到new Vue实例中,建立关联

2 个核心步骤

① 创建需要的组件 (views目录),配置路由规则

Find.vue             My.vue                 Friend.vue

② 配置导航,配置路由出口(路径匹配的组件显示的位置)

 

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

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

相关文章

电子贺卡蓝牙芯片,支U盘/SD卡音频播放蓝牙IC,WT2605-32N-L009

喜庆的时刻&#xff0c;向亲朋好友送上一份特别的祝福&#xff0c;是传递情谊、增进感情的最佳方式。然而&#xff0c;传统贺卡的简单文字和图片已经无法满足我们对个性化、创意化的需求。现在&#xff0c;深圳唯创知音&#xff0c;带来了一款颠覆传统贺卡的全新蓝牙BLE方案——…

使用Windbg分析从系统应用程序日志中找到的系统自动生成的dump文件去排查问题

目录 1、尝试将Windbg附加到目标进程上进行动态调试&#xff0c;但Windbg并没有捕获到 2、在系统应用程序日志中找到了系统在程序发生异常时自动生成的dump文件 2.1、查看应用程序日志的入口 2.2、在应用程序日志中找到系统自动生成的dump文件 3、使用Windbg静态分析dump文…

ardupilot 如何安装intelhex模块

目录 文章目录 目录摘要1.下载资源1.下载需要的软件2.编译带bt的固件摘要 本节主要记录ardupilot如何安装intelhex模块,实现编译ardupilot的bootloader文件并生成bootloader文件和固件合并的.hex文件。 1.下载资源 1.下载需要的软件 下载网址 intelhex-2.3.0.tar.gz 下载…

笔记本触摸板没反应怎么办?只需要4个方法!快速解决!

“大家知道为什么笔记本触摸板没反应吗&#xff1f;我的鼠标不见了现在触摸板也没反应&#xff0c;根本就用不了电脑了&#xff0c;有什么方法可以解决吗&#xff1f;” 触摸板是笔记本电脑上最重要的输入设备之一&#xff0c;它可以提供便捷的操作方式。对于很多朋友来说&…

SQL 执行计划管理(SPM)

一、SPM 需求背景 任何数据库应用程序的性能在很大程度上都依赖于查询执行&#xff0c;尽管优化器无需用户干预就可以评估最佳计划&#xff0c;但是 SQL 语句的执行计划仍可能由于以下多种原因发生意外更改&#xff1a;版本升级、重新收集优化器统计信息、改变优化器参数或模式…

Golang之路---01 Golang VS Code创建项目

Golang VS Code创建项目 代码组织 Golang使用包和模块来组织代码&#xff0c;包对应到文件系统就是文件夹&#xff0c;模块就是xxx.go的go源文件。一个包中会有多个模块&#xff0c;或者多个子包。 早期使用的是gopath来管理项目&#xff0c;不方便&#xff0c;比较麻烦&…

QWidget窗口类

QWidget窗口类 设置父对象窗口位置窗口尺寸窗口标题和图标信号槽函数例子1例子3例子3 设置父对象 // 构造函数 QWidget::QWidget(QWidget *parent nullptr, Qt::WindowFlags f Qt::WindowFlags());// 公共成员函数 // 给当前窗口设置父对象 void QWidget::setParent(QWidget…

中药配方煎药-亿发智能中药汤剂煎煮系统,智慧中药房的数字化升级

随着中药的普及&#xff0c;在治病、养生等方面都发挥这积极作用&#xff0c;但中药煎煮过程繁琐&#xff0c;如果有所差错将会影响药品的药性。为了满足当今用户对中药的需求&#xff0c;增强生产效率和业务水平&#xff0c;亿发中药煎配智能管理系统应运而生&#xff0c;为用…

线程同步问题——锁

文章目录 线程同步互斥锁&#xff08;互斥量&#xff09;相关操作函数应用 死锁读写锁相关操作函数 线程同步 临界区——代码 临界数据——共享数据 原子操作&#xff1a;不可以被其他操作打断 必须的&#xff0c;用以保证数据的安全性 实现线程同步的方式&#xff1a; 互斥量…

第十四章、【Linux】磁盘配额与进阶文件系统管理

14.1 磁盘配额 &#xff08;Quota&#xff09; 的应用与实作 14.1.1 什么是 Quota 在 Linux 系统中&#xff0c;由于是多用户多任务的环境&#xff0c;所以会有多人共同使用一个硬盘空间的情况发生&#xff0c; 如果其中有少数几个使用者大量的占掉了硬盘空间的话&#xff0c…

数字人会成为文旅行业的新增量吗?写实数字人定制包含哪些技术?

近年来&#xff0c;各大文旅机构均在围绕数字人展开了文旅营销创作&#xff0c;凭借着写实数字人定制技术&#xff0c;将数字人的人设、功能以及才艺得到创新&#xff0c;并由此在文旅形态上展开了诸多尝试。 比如会唱山歌多才多艺的数字人刘三姐&#xff0c;使用多种语言推介…

【Docker】Docker的工具实践及root概念和Docker容器安全性设置的详细讲解

前言 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 &#x1f4d5;作者简介&#xff1a;热…

css滤镜:drop-shadow

一、用法 drop-shadow( offset-x offset-y blur-radius spread-radius color ) offset-x&#xff1a;此参数设置图像的水平偏移。正值将创建右侧的偏移量&#xff0c;负值将创建左侧的偏移量。offset-y&#xff1a;此参数设置图像的垂直偏移。正值创建到底部的偏移量&#xff…

公众号套图制作教你打造独特商品宣传海报风格

在公众号的运营中&#xff0c;一个精美的海报设计可以吸引更多的关注和转发&#xff0c;提升文章的曝光度和传播效果。然而&#xff0c;对于没有设计经验的人来说&#xff0c;制作一个令人惊艳的海报可能是一项挑战。但是&#xff0c;现在有了乔拓云这个强大的工具&#xff0c;…

光伏、储能一体化监控及运维解决方案

前言 今年以来&#xff0c;在政策利好推动下光伏、风力发电、电化学储能及抽水蓄能等新能源行业发展迅速&#xff0c;装机容量均大幅度增长&#xff0c;新能源发电已经成为新型电力系统重要的组成部分&#xff0c;同时这也导致新型电力系统比传统的电力系统更为复杂&#xff0…

Mybatis ,Mybatis-plus列表多字段排序,包含sql以及warpper

根据 mybatis 根据多字段排序已经wrapper 根据多字段排序 首先根据咱们返回前端的数据列来规划好排序字段 如下&#xff1a; 这里的字段为返回VO的字段,要转换成数据库字段然后加入到排序中 示例&#xff0c;穿了 surname,cerRank 多字段,然后是倒序 false 首先创建好映射&am…

kotlin 编写一个简单的天气预报app(五)增加forcast接口并显示

参考资料 OpenWeatherMap提供了一个/forecast接口&#xff0c;用于获取未来几天的天气预报。你可以使用HTTP GET请求访问该接口&#xff0c;并根据你所在的城市或地理坐标获取相应的天气数据。 以下是一个示例请求的URL和一些常用的参数&#xff1a; URL: http://api.openwe…

AWS——01篇(AWS入门 以及 AWS之EC2实例及简单实用)

AWS——01篇&#xff08;AWS入门 以及 AWS之EC2实例及简单实用&#xff09; 1. 前言2. 创建AWS账户3. EC23.1 启动 EC2 新实例3.1.1 入口3.1.2 设置名称 选择服务3.1.3 创建密钥对3.1.4 网络设置——安全组3.1.4.1 初始设置3.1.4.2 添加安全组规则&#xff08;开放新端口&…

用Javascript和表情符号制作URL动画

您可以在URL中使用表情符号(和其他图形unicode字符)。哇&#xff0c;太棒了。但似乎没有人去做。为什么&#xff1f;或许表情符号对普通网络平台来说太陌生了&#xff1f;又或许是怕触怒SEO大神而避之不及&#xff1f; 不管是什么原因&#xff0c;维恩图上“有可能没有人做”的…

NPOI库:C#中使用的强大工具箱,从入门到精通

*引言&#xff1a; 在软件开发中&#xff0c;Excel文件是一种常见且重要的数据存储和处理方式。为了简化Excel文件的读写操作&#xff0c;C --------------------------目录-------------------------- 一、安装NPOI库二、引入命名空间三、Excel文件的读取1. 打开Excel文件2. 读…