【前端51_Vue】重学 Vue 之基础复习(二):过渡动画、复用性:过滤器、自定义指令、虚拟DOM、函数式组件、混入、插件

本文主要是介绍【前端51_Vue】重学 Vue 之基础复习(二):过渡动画、复用性:过滤器、自定义指令、虚拟DOM、函数式组件、混入、插件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 前言
    • Vue 中的 过渡 & 动画
      • transition 组件
      • 使用 Animated.css 动画库
      • JavaScript 钩子
      • 过渡组
    • 过滤器
    • 自定义指令
    • 渲染函数
      • createElement() & h()
        • 例子1:根据渲染函数创建 h2 标签
        • 例子2:根据渲染函数创建可绑定图标的组件
      • this.$slots.default
    • 函数式组件
    • 混入
    • 插件
      • 定义 & 使用
      • 优点
      • 使用案例
    • 最后


前言

呜呜呜,因为疫情原因,小区封了,我只能在家办公了,情况是这样的,心里还是不爽啊,因为来的太突然,都没有时间屯粮,朋友还说为啥没有屯粮?我听到这个真的很恼火,谁又知道这么突然呢,大超市关门了,小超市东西都卖没了,是我不想屯吗?发生事情我需要的是安慰,不是责备。

第一天我连饭都不能按时吃到,饿的难受,学习了,忙的忘记吃饭吧。


Vue 中的 过渡 & 动画

有以下几个方式去添加过渡 & 动画:

  • CSS 过渡和动画中自动应用 class
  • 可以配合使用第三方 CSS 动画库,如 Animate.css
  • 在过渡钩子函数中使用 JavaScript 直接操作 DOM
  • 可以配合使用第三方 JavaScript 动画库,如 Velocity.js

transition 组件

Vue 中的动画组件详细说明

官方的说明如下:

当插入或删除包含在 transition 组件中的元素时,Vue 将会做以下处理:

  • 自动嗅探目标元素是否应用了 CSS 过渡或动画,如果是,在恰当的时机添加/删除 CSS 类名。
  • 如果过渡组件提供了 JavaScript 钩子函数,这些钩子函数将在恰当的时机被调用。

如果没有找到 JavaScript 钩子并且也没有检测到 CSS 过渡/动画,DOM 操作 (插入/删除) 在下一帧中立即执行。(注意:此指浏览器逐帧动画机制,和 VuenextTick 概念不同)

请添加图片描述
在这里插入图片描述

效果如下:

请添加图片描述

使用 Animated.css 动画库

animate.css 的 demo

在这里插入图片描述
演示结果如下:

请添加图片描述

JavaScript 钩子

官方的解释

那我就直接拿官方的纯 JS 例子吧

在这里插入图片描述

请添加图片描述

过渡组

还是拿官网上的例子,这例子写的太棒了

列表的进入/离开过渡

在这里插入图片描述

请添加图片描述


过滤器

处理一些字符串比较好用

来张图吧
在这里插入图片描述

自定义指令

官网例子

像什么 v-forv-bindvue 定义好了的指令,如果我们也想写一个类似形式的指令呢?

Vue 想到了这一点,让你自定义指令,可以通过 Vue.directive() 来实现。

注意:在命名的时候是不需要加 v-
在这里插入图片描述

渲染函数

可以通过 render() 函数来渲染 VNode

createElement() & h()

render() 函数 默认接收一个形参函数:createElement,而我们习惯写成 h ,所以你可以理解成 h就是 createElement ,以下下统称为 h 函数

h 函数执行后,会返回个 VNode 类型的对象,我们称之为虚拟节点

h 函数的由来:有个算法叫 snabb dom ,这里的创建元素用的就是 h() 函数

例子1:根据渲染函数创建 h2 标签

在这里我们用 h 函数,动态创建个 h2 标签h 几 是由 level 来控制的。
在这里插入图片描述

代码执行后

在这里插入图片描述

例子2:根据渲染函数创建可绑定图标的组件
// 我想这样使用啊:
<heading :level="2" icon="cardboard">干什么</heading>

实现的代码截图如下:
在这里插入图片描述
实现的样式如下:

在这里插入图片描述
部分代码如下:

// 使用
<div id="app"><heading :level="2" icon="cardboard">干什么</heading>
</div>// render 函数
render(h) {const children = [];children.push(h('svg',{class: 'icon',},[h('use', {attrs: {'xlink:href': `#icon-${this.icon}`,},}),]));const VNode = h('h' + this.level,{ attrs: { title: this.title } }, // 第二个参数会放到 VNode 的 data 属性中[...children, ...this.$slots.default]);console.log(VNode);return VNode;
},

this.$slots.default

这个相当于标签里的所有内容,举个例子

在这里插入图片描述

函数式组件

官网的说明内容在这里

组件没有管理任何状态,也没有监听任何传递给它的状态,也没有生命周期方法时,可以将组件标记为 functional ,这意味它无状态 (没有响应式数据),也没有实例 (没有 this 上下文)。

我们把上面的例子组件改成函数式组件

在这里插入图片描述

混入

这也算是比较好用的提高可复用性的方法了
请添加图片描述

对于混用变量与组件中的变量的优先级实践,官网上的例子,Vue 会优先保证组件中的变量不会被顶替

在这里插入图片描述


插件

Vue.js 的插件应该暴露一个 install 方法。这个方法的第一个参数是 Vue 构造器,第二个参数是一 个可选的选项对象

定义 & 使用

大概有以下几个方法:

MyPlugin.install = function (Vue, options) {// 1. 添加全局方法或属性Vue.myGlobalMethod = function () {};// 2. 添加全局资源Vue.directive('my-directive', {});// 3. 注入组件选项Vue.mixin({created: function () {// 逻辑...},});// 4. 添加实例方法Vue.prototype.$myMethod = function (methodOptions) {};
};

我这里把上面写过的组件直接拿来用了,写了个插件

具体使用

在这里插入图片描述
也可以自动注册组件:

// 浏览器环境,自动注册插件
// if (typeof window !== 'undefined' && window.Vue) {
//   // 使用插件
//   window.Vue.use(MyPlugin);
// }

优点

插件的优点

  • 利于分发,无论是 git 还是 npm,就是以后让别人用

使用案例

这里举个例子,把上面的例子做成插件

在这里插入图片描述

使用后页面如下:
在这里插入图片描述

最后

有写的不好的地方,还望见谅,请在评论区里指出,或者私信我,感谢。

请添加图片描述

这篇关于【前端51_Vue】重学 Vue 之基础复习(二):过渡动画、复用性:过滤器、自定义指令、虚拟DOM、函数式组件、混入、插件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/976058

相关文章

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码

通过React实现页面的无限滚动效果

《通过React实现页面的无限滚动效果》今天我们来聊聊无限滚动这个现代Web开发中不可或缺的技术,无论你是刷微博、逛知乎还是看脚本,无限滚动都已经渗透到我们日常的浏览体验中,那么,如何优雅地实现它呢?... 目录1. 早期的解决方案2. 交叉观察者:IntersectionObserver2.1 Inter

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数