vue中有趣的几个功能

news2024/12/26 3:23:22

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.coloradmin.cn/o/871767.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Windows 常用工具系列 5 -- Selenium IDE的使用方法 】

文章目录 Selenium 介绍Selenium IDE 介绍 Selenium IDE安装Chrome 浏览器安装Selenium IDE使用 Selenium 介绍 Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。 Selenium家庭成员有三个&#xff0c;分别是S…

并发冲突导致流量放大的线上问题解决

事故现象 生产环境&#xff0c;转账相关请求失败量暴增。 直接原因 现网多个重试请求同时到达 svr&#xff0c;导致内存数据库大量返回时间戳冲突。业务方收到时间戳冲突&#xff0c;自动进行业务重试&#xff0c;服务内部也存在重试&#xff0c;导致流量放大。 转账 首先…

【CI/CD】基于 Jenkins+Docker+Git 的简单 CI 流程实践(上)

基于 JenkinsDockerGit 的简单 CI 流程实践&#xff08;上&#xff09; 在如今的互联网时代&#xff0c;随着软件开发复杂度的不断提高&#xff0c;软件开发和发布管理也越来越重要。目前已经形成一套标准的流程&#xff0c;最重要的组成部分就是 持续集成 及 持续交付、部署。…

用对角线去遍历矩阵

原题链接 用对角线遍历矩阵https://leetcode.cn/leetbook/read/array-and-string/cuxq3/ 算法分析 图一 图二 图三 图四 由上述四个图可以总结得出以下八个结论&#xff1a; 结论1&#xff1a;k属于[0,a(max)b(max)]。 结论2&#xff1a;每一层遍历行最多存在min(m,n)个矩…

深度学习实战基础案例——卷积神经网络(CNN)基于SqueezeNet的眼疾识别|第1例

文章目录 前言一、数据准备1.1 数据集介绍1.2 数据集文件结构 二、项目实战2.1 数据标签划分2.2 数据预处理2.3 构建模型2.4 开始训练2.5 结果可视化 三、数据集个体预测 前言 SqueezeNet是一种轻量且高效的CNN模型&#xff0c;它参数比AlexNet少50倍&#xff0c;但模型性能&a…

4.深入对象

4.1创建对象三种方式 1.利用对象字面量创建对象 const obj{ name : 佩奇 }2.利用new 0bject创建对象 const obj new Object({ name: 佩奇 }) console.log(obj) // {name: 佩奇}3.利用构造函数创建对象 4.2构造函数 构造函数&#xff1a;是一种特殊的函数,主要用来初始化…

hive 中最常用日期处理函数

hive 常用日期处理函数 在工作中&#xff0c;日期函数是提取数据计算数据必须要用到的环节。哪怕是提取某个时间段下的明细数据也得用到日期函数。今天和大家分享一下常用的日期函数。为什么说常用呢&#xff1f;其实这些函数在数据运营同学手上是几乎每天都在使用的。 技术交…

Metasploit教程 - 基本命令

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、metasploit版本二、命令1.help2.msfupdate 命令3.search命令 三.Armitage GUI四&#xff0c;扫描总结 我想我得对我的博客做一些美化&#xff0c;而不是只有…

【Power BI】使用 Power BI 处理结构化复杂表单数据 | 文末送书

文章目录 前言使用 Power BI 处理结构化复杂表单数据案例一、处理标题与内容同行的数据表案例二、处理标题与内容同单元格的数据表 文末总结Power BI 新书推荐 前言 数据处理是数据分析的奠基石&#xff0c;只有使用处理干净的数据&#xff0c;分析才会产生价值。简单而言&…

Nacos AP架构集群搭建(Windows)

手写SpringCloud项目地址&#xff0c;求个star github:https://github.com/huangjianguo2000/spring-cloud-lightweight gitee:https://gitee.com/huangjianguo2000/spring-cloud-lightweigh 目录&#xff1a; 一&#xff1a;初始化MySQL 二&#xff1a;复制粘贴三份Nacos文…

【设计模式】拦截过滤器模式

拦截过滤器模式&#xff08;Intercepting Filter Pattern&#xff09;用于对应用程序的请求或响应做一些预处理/后处理。定义过滤器&#xff0c;并在把请求传给实际目标应用程序之前应用在请求上。过滤器可以做认证/授权/记录日志&#xff0c;或者跟踪请求&#xff0c;然后把请…

Docker启动相关的命令

1.Docker服务相关命令 操作daemon CentOS7版本启动docker systemctl start docker systemctl status docker停掉docker服务&#xff1a; systemctl stop docker重启命令 systemctl restart docker开机自启docker systemctl enable docker2.小结

8.13黄金是否进入下行通道?下周开盘如何布局

近期有哪些消息面影响黄金走势&#xff1f;黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;周五(8月11日)现货黄金小幅收低&#xff0c;受累于美元走强和美国国债收益率上升&#xff0c;本周录得6月底以来最差单周表现。投资者在评估最新一批通胀报告和消费者信…

欧拉公式之证明

首先&#xff0c;我们考虑复数函数的泰勒级数展开式。对于任意一个复数函数f(z)&#xff0c;我们可以将其在za处进行泰勒级数展开&#xff1a; f(z) f(a) f(a)(z-a) f(a)(z-a)^2/2! f(a)(z-a)^3/3! ... 其中f(a)表示f(z)在za处的导数&#xff0c;f(a)表示f(z)在…

Docker查看、创建、进入容器相关的命令

1.查看、创建、进入容器的指令 用-it指令创建出来的容器&#xff0c;创建完成之后会立马进入容器。退出之后立马关闭容器。 docker run -it --namec1 centos:7 /bin/bash退出容器&#xff1a; exit查看现在正在运行的容器命令&#xff1a; docker ps查看历史容器&#xff0…

【前端】求职必备知识点4-CSS:flex、隐藏元素(7种方法)、单位

文章目录 flex隐藏元素&#xff08;7种方法&#xff09;不占位置占位置 单位思维导图 flex 【前端】CSS3弹性布局&#xff08;flex&#xff09;、媒体查询实现响应式布局和自适应布局_css媒体查询 自适应_karshey的博客-CSDN博客 flex缩写&#xff1a; flex-grow 和 flex-shr…

聚类与回归

聚类 聚类属于非监督式学习&#xff08;无监督学习&#xff09;&#xff0c;往往不知道因变量。 通过观察学习&#xff0c;将数据分割成多个簇。 回归 回归属于监督式学习&#xff08;有监督学习&#xff09;&#xff0c;知道因变量。 通过有标签样本的学习分类器 聚类和…

vs使用def导出文件简介

vs使用def导出文件简介 1.首先需要创建一个dll项目&#xff0c;否则没地方配置使用def文件的指向 2.定义一系列函数并创建一个def文件 3.配置使用def文件的指向编译即可 配置到导出格式时候可以通过NONANE选项使到处函数的符号名字为空&#xff0c;X为导出的序号&#xff0c…

SQL-每日一题【1378. 使用唯一标识码替换员工ID】

题目 Employees 表&#xff1a; EmployeeUNI 表&#xff1a; 展示每位用户的 唯一标识码&#xff08;unique ID &#xff09;&#xff1b;如果某位员工没有唯一标识码&#xff0c;使用 null 填充即可。 你可以以 任意 顺序返回结果表。 返回结果的格式如下例所示。 示例 1&a…