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

相关文章

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

css渐变色背景|<gradient示例详解

《css渐变色背景|<gradient示例详解》CSS渐变是一种从一种颜色平滑过渡到另一种颜色的效果,可以作为元素的背景,它包括线性渐变、径向渐变和锥形渐变,本文介绍css渐变色背景|<gradien... 使用渐变色作为背景可以直接将渐China编程变色用作元素的背景,可以看做是一种特殊的背景图片。(是作为背

CSS自定义浏览器滚动条样式完整代码

《CSS自定义浏览器滚动条样式完整代码》:本文主要介绍了如何使用CSS自定义浏览器滚动条的样式,包括隐藏滚动条的角落、设置滚动条的基本样式、轨道样式和滑块样式,并提供了完整的CSS代码示例,通过这些技巧,你可以为你的网站添加个性化的滚动条样式,从而提升用户体验,详细内容请阅读本文,希望能对你有所帮助...

css实现图片旋转功能

《css实现图片旋转功能》:本文主要介绍了四种CSS变换效果:图片旋转90度、水平翻转、垂直翻转,并附带了相应的代码示例,详细内容请阅读本文,希望能对你有所帮助... 一 css实现图片旋转90度.icon{ -moz-transform:rotate(-90deg); -webkit-transfo