【前端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

相关文章

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署