vue中有趣的几个功能

vue中有趣的几个功能

老实说,我们大多数人都不太喜欢阅读文档,但是当使用像 Vue 这样不断发展的现代前端框架时,每个新版本都会发生很多变化,我们可能会错过一些后来推出的新的、闪亮的功能。让我们来看看那些有趣但不那么受欢迎的功能。所有这些都是 Vue 官方文档的一部分。

1.处理加载状态

在大型应用程序中,我们可能需要将应用程序分成更小的块,并且仅在需要时从服务器加载组件。为了使这更容易,Vue 允许我们将组件定义为定义的工厂函数,然后异步解析组件。Vue 仅在组件需要渲染时才会触发工厂函数,并缓存结果以供将来重新渲染。从 2.3 版本开始,异步组件工厂还可以返回以下格式的对象:

const AsyncComponent = () => ({// 异步加载组件(一个promise)component: import('./MyComponent.vue'),// 加载异步组件时的中间状态组件loading: LoadingComponent,// 异步组件加载失败时展示的状态error: ErrorComponent,// 延迟多久展示loading状态delay: 200,// error组件在多久会展示 默认: Infinity.timeout: 3000
})

通过这种方法,我们可以选择加载和错误状态、组件获取延迟和超时等附加选项。

2. 带有“v-once”的廉价静态组件

Vue 中渲染纯 HTML 元素非常快,但有时我们可能有一个包含大量静态内容的组件。在这些情况下,我们可以确保它仅被计算一次,然后通过将指令v-once添加到根元素来缓存,如下所示:

Vue.component('terms-of-service', {template: `<div v-once><h1>标题</h1>静态文本</div>`
})

3. 递归组件

组件可以在自己的模板中递归调用自己。但是,他们只能通过name属性来做到这一点。

如果我们不小心,递归组件也可能导致无限循环:

name: 'stack-overflow',
template: '<div><stack-overflow></stack-overflow></div>'

像上面这样的组件将导致“超出最大堆栈大小”错误,因此需要确保递归调用是有条件的(即使用v-if并最终的结果时false的情况)。

4.内联模板

当子组件上存在特殊属性inline-template时,该组件将使用其内部内容作为其模板,而不是将其视为分布式内容。这允许更灵活的模板创作。

<my-component inline-template><div><p>会被编译成子组件内部的模板</p><p>而不是父组件中的内容</p></div>
</my-component>

不过内联模板是 Vue 3 已弃用的功能之一,我们不应该使用它们。使用script标签或slot是替代方案。

5.动态指令参数

指令参数可以是动态的。例如,在 v-mydirective:[argument]="value"中,argument可以根据我们的组件实例中的数据属性进行更新!这使得我们的自定义指令可以在整个应用程序中灵活使用。

这是一个可以为每个组件实例更新动态参数的指令:

<div id="dynamicexample"><h3>向下滚动</h3><p v-pin:[direction]="200">在页面左侧200px</p>
</div>
Vue.directive('pin', {bind: function (el, binding, vnode) {el.style.position = 'fixed'var s = (binding.arg == 'left' ? 'left' : 'top')el.style[s] = binding.value + 'px'}
})new Vue({el: '#dynamicexample',data: function () {return {direction: 'left'}}
})

6.事件和按键修饰符

对于.passive,.capture.once事件修饰符,Vue 提供了可与on一起使用的前缀.

修饰符前缀
.passive&
.capture!
.once~
.capture.once或者.once.capture~!

例如:

on: {'!click': this.doThisInCapturingMode,'~keyup': this.doThisOnce,'~!mouseover': this.doThisOnceInCapturingMode
}

对于所有其他事件和键修饰符,不需要专有前缀,因为我们可以在处理程序中使用事件方法:

在这里插入图片描述

7.依赖注入(Provide/Inject)

有多种方法可以让两个组件在 Vue 中进行通信,这些方法各有利弊。2.2 版本中引入的一种新方法是通过 Provide/Inject 使用依赖注入。

这对选项一起使用,允许祖先组件充当其所有后代的依赖注入器,无论组件层次结构有多深,只要它们位于同一父链中即可。如果我们熟悉 React,这与React 的上下文功能非常相似。

// 父组件提供foo
var Provider = {provide: {foo: 'bar'},// ...
}// 子组件注入foo
var Child = {inject: ['foo'],created () {console.log(this.foo) // => "bar"}// ...
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot整合Minio

SpringBoot整合Minio 在企业开发中&#xff0c;我们经常会使用到文件存储的业务&#xff0c;Minio就是一个不错的文件存储工具&#xff0c;下面我们来看看如何在SpringBoot中整合Minio POM pom文件指定SpringBoot项目所依赖的软件工具包 <?xml version"1.0" …

android设置竖屏仍然跟随屏幕旋转怎么办

如题所问&#xff0c;我最近遇到一个bug&#xff0c;就是设置了摇感&#xff0c;然后有用户反馈说设置了手机下拉的系统设置-屏幕旋转-关闭。然后屏幕还是会旋转的问题。 首先&#xff0c;我们先从如何设置横竖屏了解下好了 设置横屏和竖屏的方法&#xff1a; 方法一&#x…

GloVe、子词嵌入、BPE字节对编码、BERT相关知识(第十四次组会)

GloVe、子词嵌入、BPE字节对编码、BERT相关知识(第十四次组会) Glove子词嵌入上游、下游任务监督学习、无监督学习BERTGlove 子词嵌入 上游、下游任务 监督学习、无监督学习 BERT

人工智能在监控系统中的预测与优化:提升效率和响应能力

引言&#xff1a;人工智能的发展给监控系统带来了新的可能性&#xff0c;通过分析历史监控数据和其他相关数据&#xff0c;人工智能可以预测未来可能发生的事件&#xff0c;如交通拥堵、安全隐患等&#xff0c;并帮助优化监控系统的配置和资源分配。这种预测和优化的能力可以提…

多主题自适应知识变现博客论坛,支持docker一键部署

iblog 给大家推荐一个多主题自适应&#xff0c;支持付费收款的博客论坛系统&#xff0c;支持docker一键部署&#xff0c;支持企业微信通知。 前端 多主题 自适应 个人页 后端 H2 console 运行命令 docker run -d --name iblog --restartalways -p 8080:8080 -e consoletrue …

Python-OpenCV中的图像处理-图像直方图

Python-OpenCV中的图像处理-图像直方图 图像直方图统计直方图绘制直方图Matplotlib绘制灰度直方图Matplotlib绘制RGB直方图 使用掩膜统计直方图直方图均衡化Numpy图像直方图均衡化OpenCV中的直方图均衡化CLAHE 有限对比适应性直方图均衡化 2D直方图OpenCV中的2D直方图Numpy中2D…

物联网和不断发展的ITSM

物联网将改变社会&#xff0c;整个技术行业关于对机器连接都通过嵌入式传感器、软件和收集和交换数据的电子设备每天都在更新中。Gartner 预测&#xff0c;全球将有4亿台互联设备投入使用。 无论企业采用物联网的速度如何&#xff0c;连接设备都将成为新常态&#xff0c;IT服务…

前后端分离------后端创建笔记(05)用户列表查询接口(上)

本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论&#xff0c;如有侵权请联系 源码&#xff1a;https://gitee.com/green_vegetables/x-admin-project.git 素材&#xff1a;https://pan.baidu.com/s/…

泛微 E-Office文件上传漏洞复现

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 文章作者拥有对此文章的修改和解释权。如欲转载或传播此文章&#xff0c…

DIP:《Deep Image Prior》经典文献阅读总结与实现

文章目录 Deep Image Prior1. 方法原理1.1 研究动机1.2 方法 2. 实验验证2.1 去噪2.2 超分辨率2.3 图像修复2.4 消融实验 3. 总结 Deep Image Prior 1. 方法原理 1.1 研究动机 动机 深度神经网络在图像复原和生成领域有非常好的表现一般归功于神经网络学习到了图像的先验信息…

突破大模型 | Alluxio助力AI大模型训练-成功案例(一)

更多详细内容可见《Alluxio助力AI大模型训练制胜宝典》 【案例一&#xff1a;知乎】多云缓存在知乎的探索:从UnionStore到Alluxio 作者&#xff1a;胡梦宇-知乎大数据基础架构开发工程师&#xff08;内容转载自InfoQ&#xff09; 一、背景 随着云原生技术的飞速发展&#xff…

R语言ggplot2 | R语言绘制物种组成面积图(三)

&#x1f4cb;文章目录 面积图简介准备数据集加载数据集数据处理数据可视化 利用R语言绘制物种组成图。本文以堆叠面积图的方式与大家分享。 面积图简介 面积图又叫区域图。它是在折线图的基础之上形成的, 它将折线图中折线与自变量坐标轴之间的区域使用颜色或者纹理填充&…