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

这篇具有很好参考价值的文章主要介绍了前端Vue入门-day05-自定义指令、插槽、路由入门。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架

目录

自定义指令 

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

全局注册 

局部注册

指令的值 

v-loading 指令封装

插槽

默认插槽

后备内容(默认值) 

具名插槽 

作用域插槽 

路由入门

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

路由的介绍 

路由的基本使用 

VueRouter 的 介绍

VueRouter 的 使用 (5 + 2) 

5个基础步骤 (固定) 

2 个核心步骤


自定义指令 

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

自定义指令:自己定义的指令, 可以 封装一些 dom 操作 , 扩展额外功能
前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架

全局注册 

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

网页显示为:                                               前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架 

局部注册

<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 指令 - 传入不同的颜色, 给标签设置文字颜色
语法:在绑定指令时,可以通过“等号”的形式为指令 绑定 具体的参数值 前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架
通过 binding.value 可以拿到指令值,指令值修改会 触发 update 函数 前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架
<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>

 网页显示为:                       前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架

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 前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架

后备内容(默认值) 

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

效果:

        外部使用组件时,不传东西,则slot会显示后备内容前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架

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

前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架

具名插槽 

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

具名插槽语法:前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架

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

作用域插槽 

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

基本使用步骤: 

1. 给 slot 标签, 以 添加属性的方式传值 前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架
2. 所有添加的属性, 都会被收集到一个对象中
前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架
3. 在template中, 通过 ` #插槽名= "obj" ` 接收,默认插槽名为 default

前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架

路由入门

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

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

前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架

路由的介绍 

生活中的路由:设备和ip的映射关系前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架

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

前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架

 文章来源地址https://www.toymoban.com/news/detail-648929.html

路由的基本使用 

VueRouter 的 介绍

目标:认识插件 VueRouter,掌握 VueRouter 的基本使用步骤
作用: 修改 地址栏路径时, 切换显示 匹配的 组件
说明:Vue 官方的一个路由插件,是一个第三方包
官网: https://v3.router.vuejs.org/zh/
前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架

VueRouter 的 使用 (5 + 2) 

5个基础步骤 (固定) 
① 下载: 下载 VueRouter 模块到当前工程,版本3.6.5
前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架
② 引入
前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架
③ 安装注册
前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架
④ 创建路由对象
前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架
⑤ 注入,将路由对象注入到new Vue实例中,建立关联
前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架
2 个核心步骤

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

Find.vue             My.vue                 Friend.vue前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架

② 配置导航,配置路由出口(路径匹配的组件显示的位置)
前端Vue入门-day05-自定义指令、插槽、路由入门,# 前端vue入门,vue.js,前端,javascript,前端框架

 

到了这里,关于前端Vue入门-day05-自定义指令、插槽、路由入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端Vue入门-day06-路由进阶

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 路由的封装抽离 声明式导航 导航链接  两个类名  自定义高亮类名  跳转传参 1. 查询参数传参 2. 动态路由传参 两种传参方式的区别  Vue路由  重定向 404 编程式导航

    2024年02月14日
    浏览(32)
  • 前端Vue入门-day02-vue指令、computed计算属性与watch侦听器

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 指令补充 指令修饰符 v-bind 对于样式控制的增强  操作class 案例:京东秒杀 tab 导航高亮 操作style  v-model 应用于其他表单元素  computed 计算属性 基础语法 computed 计算属

    2024年02月11日
    浏览(30)
  • Vue学习Day1——小案例快速入门Vue指令

    概念:是一套 构建用户界面 的 渐进式 框架 Vue2官网:https://v2.cn.vuejs.org/ 所谓渐进式就是循序渐进,不一定非得把Vue中的所有API都学完才能开发Vue,可以学一点开发一点 Vue的两种开发方式: Vue核心包开发 场景:局部模块改造 Vue核心包Vue插件工程化 场景:整站开发 核心步骤

    2024年02月15日
    浏览(26)
  • 两周掌握Vue3(五):自定义指令、路由、ajax

    代码仓库:跳转 当前分支:05 自定义指令是Vue.js框架提供的一个非常强大的特性,它允许开发者直接操作DOM,扩展Vue.js的能力。自定义指令的主要作用包括: 封装常用操作 :当你发现在多个组件中需要重复执行相同的DOM操作时,可以将这些操作封装成一个自定义指令,以提

    2024年01月15日
    浏览(28)
  • 零基础入门Vue之拘元遣将——其他常用指令&自定义指令

    在 零基础入门Vue之梦开始的地方——插值语法 我记录了v-bind、v-on、v-model的学习 在 零基础入门Vue之To be or not to be——条件渲染 我记录了v-if、v-else-if、v-else、v-show的学习 在 零基础入门Vue之影分身之术——列表渲染渲染原理浅析 我记录了v-for的学习 为了推进我的Vue的学习,

    2024年02月19日
    浏览(28)
  • Vue 项目路由、自定义指令、api方法自动引入资源(require.context使用)

    require.context(directory,useSubdirectories,regExp) 1:directory:哪个文件夹 2:useSubdirectories:是否需要找到子文件夹 3: regExp:正则表达式(一般指文件的后缀) 以下是单个js文件 接口的命名不能重复。 如果项目较大,建议接口命名需要有一个统一的规范来避免出现命名重复的问题

    2024年02月16日
    浏览(29)
  • 前端Vue入门-day02

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 指令补充 指令修饰符 v-bind 对于样式控制的增强  操作class 案例:京东秒杀 tab 导航高亮 操作style  v-model 应用于其他表单元素  computed 计算属性 基础语法 computed 计算属

    2024年02月13日
    浏览(36)
  • 前端Vue入门-day07-Vuex入门

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 自定义创建项目 vuex概述 构建 vuex [多组件数据共享] 环境  创建一个空仓库 state 状态 1. 提供数据: 2. 使用数据: mutations  辅助函数 - mapMutations actions 辅助函数 - mapAc

    2024年02月14日
    浏览(30)
  • 【day 12】插槽和vue3

    用于父组件给子组件内 传递html内容 默认插槽 具名插槽 作用域插槽 适用于: 数据不在父组件内 在 子组件内 如果父组件想个性化定制子组件的内容 确保 你的 vue-cli 是 4.5.0的版本以上 vue --verstion的方式查看 版本过低请更新版本 初始文件对比 router/index.js的区别 store/index.js 关

    2024年02月11日
    浏览(27)
  • 前端Vue入门-day04-用vue实现组件通信

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 组件的三大组成部分 注意点说明 组件的样式冲突 scoped data 是一个函数 组件通信 什么是组件通信 不同的组件关系 和 组件通信方案分类   父子通信流程图:  父 → 子

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包