当前位置: 首页 > news >正文

浅析vue3自定义指令

vue3中可以像下面这样使用自定义指令。
在这里插入图片描述
这里我们只是定义了一个vFoucs变量,vue怎么知道这是一个指令呢?

这是因为约定大于配置,vue3中有这样一个约定(截图来自官方文档):
在这里插入图片描述
注意这里说的是驼峰命令,如果是vfocus,那么vue并不会把它当成自定义指令。

这里还有一个隐藏的细节,就是vue只是约定了变量的名字,而没有约定变量的内容。换句话说,vue并不会检查变量值是否符合一个指令的必要条件,只要这个变量满足 v 开头的驼峰式命名,就会把他当成一个自定义指令,比如:

const vFocus = 1
const vFocus = "2";
const vFocus = {}

上面这几种形式都会被当成自定义指令来注册,只是它不是一个完整的实现,因此使用的时候没有任何效果,但也不会报错。

所以为了尽量避免混淆,我们应该尽量避免,给非自定义指令的变量使用 v 开头的驼峰式命名。

此外,我们应该注意到自定义指令,本质上就是一个js对象,因此我们完全可以将其独立到一个js文件中管理。

比如,我们可以用一个单独的js文件定义一个大指令。

// vFocus.js
export default {mounted: (el) => el.focus()
}

使用的时候只需要把它import进来就可以了:

<script setup>
import vFocus from './vFocus'
</script><template><input v-focus />
</template>

或者,你可以用一个js文件统一管理多个指令。

// directives.js
const vFocus =  {mounted: (el) => { el.focus();}
}const vDefaultValue = {mounted: (el) => { el.value = 123}}export {vFocus, vDefaultValue}

使用时,像下面这样引入:

<script setup>
import { vFocus, vDefaultValue} from './directives.js'
</script><template><input v-focus v-defaultValue />
</template>

注意:由于自定义指令就是一个js对象,所以定义的时候不必使用vXXX这种命名,只要导入的时候确保vXXX这种命名即可。

比如:

// directives.js
const focus =  {mounted: (el) => { el.focus();}
}const defaultValue = {mounted: (el) => { el.value = 123}}export {focus, defaultValue}

使用时,像下面这样引入:

<script setup>
import { focus as vFocus, defaultValues as vDefaultValue} from './directives.js'
</script><template><input v-focus v-defaultValue />
</template>

相关文章:

浅析vue3自定义指令

vue3中可以像下面这样使用自定义指令。 这里我们只是定义了一个vFoucs变量&#xff0c;vue怎么知道这是一个指令呢&#xff1f; 这是因为约定大于配置&#xff0c;vue3中有这样一个约定&#xff08;截图来自官方文档&#xff09;&#xff1a; 注意这里说的是驼峰命令&#x…...

后仿真中的关于延时问题(延迟类型选择和脉冲控制)

目录 通过前面的文章提到,从物理特性角度出发,仿真中存在两种延时:惯性延时和传输延时。那么,实际仿真电路过程中,我们究竟选择的哪种模式呢? 一 指定传输延迟类型 传输延迟类型不是默认的延迟类型。我们需要显示指定它。 1.1 module-path delay VCS 仿真中添加如下三…...

欧拉公式e^(ix)=(cos x+isin x)

啊&#xff0c;哈喽&#xff0c;小伙伴们大家好。我是#张亿&#xff0c;今天呐&#xff0c;学的是欧拉公式 在不同的学科中有着不同的含义和应用。在复变函数中&#xff0c;欧拉公式表述为e^(ix)(cos xisin x)&#xff0c;其中e是自然对数的底&#xff0c;i是虚数单位&#x…...

Android 获取已安装应用、包名、应用名、版本号、版本名

1、相关代码 List<ApplicationInfo> installedApps getPackageManager().getInstalledApplications(0);for (ApplicationInfo appInfo : installedApps) {CharSequence getAppName getPackageManager().getApplicationLabel(appInfo);String appNamegetAppName.toStrin…...

2024数学建模深圳杯B题成品论文43页word+完整可视化结果图+可执行代码

【无水印word】2024深圳杯B题成品论文43页&#xff08;附带1-4小问完整py解题代码思路&#xff09;https://www.jdmm.cc/file/2710664 批量工件并行切割下料优化研究 摘 要 本研究针对批量工件并行切割下料问题展开了深入的探讨与分析。通过建立数学模型和运用优化算法&…...

达梦(DM) SQL查询及联合查询

达梦DM SQL查询及联合查询 查询结果排序多表联合查询 这里继续讲解DM数据库的Sql查询操作 查询结果排序 为提高查询结果可读性&#xff0c;我们可以对查询结果按照一定顺序排列&#xff0c;或者也可以将列名替换成数字&#xff0c;例如 ORDER BY 1 DESC&#xff0c;意思是按第…...

【重生之我在学Android】WorkManager (章一)

相关文章 【重生之我在学Android原生】ContentProvider(Java) 【重生之我在学Android原生】Media3 【重生之我在学Android】WorkManager &#xff08;章一&#xff09; 前言 官方文档 官方推荐 - 前台服务、后台服务都可以使用WorkManger来实现 案例 语言&#xff1a;JA…...

【强训笔记】day23

NO.1 思路&#xff1a;直接计算结果&#xff0c;先计算怪物可以抗几次攻击&#xff0c;再计算勇士受到的伤害&#xff0c;如果勇士的攻击力大于等于怪物的血量&#xff0c;那么就可以击杀无数只&#xff0c;如果勇士的血量正好是受到攻击的整数倍&#xff0c;那么击杀的怪物数…...

C语言-STM32:介绍PWM,并使用PWM实现呼吸灯

1、什么是PWM PWM&#xff0c;全称为Pulse Width Modulation&#xff0c;中文名为脉冲宽度调制。这是一种模拟控制技术&#xff0c;通过改变脉冲信号的宽度来表征一个连续变量的平均值&#xff0c;通常用于对模拟信号的数字化控制&#xff0c;特别是在功率转换和信号处理中非常…...

SpringBean详解

文章目录 概述Spring获取Bean的流程依赖注入bean的作用域Spring 中的 Bean 是线程安全的吗Spring如何处理线程并发问题bean 的自动装配和方式Resource和Autowired的区别bean的自动装配bean的生命周期BeanFactoryBeanFactory 常用的实现类有哪些BeanFactory与FactoryBean的不同A…...

hive获取这周五到下周四的区间,周一到周日的区间

-- 获取每个日期所在周期的开始和结束时间 SELECTcreated_date AS date_in_period,CASEWHEN date_format(created_date, u) < 5 THEN date_sub(created_date, cast(date_format(created_date, u) AS INT) 2)ELSE date_sub(created_date, cast(date_format(created_date, u)…...

Iterable与Iterator

Iterator public interface Iterator<E> {} terator是一个接口&#xff0c;它是集合的迭代器。集合可以通过Iterator去遍历集合中的元素。Iterator提供的API接口如下&#xff1a; forEachRemaining(Consumer<? super E> action)&#xff1a;为每个剩余元素执行给…...

免费Premiere模板,几何图形元素动画视频幻灯片模板素材下载

Premiere Pro模板&#xff0c;几何图形元素动画视频幻灯片模板 &#xff0c;组织良好&#xff0c;易于自定义。包括PDF教程。 项目特点&#xff1a; 使用Adobe Premiere Pro 2021及以上版本。 19201080全高清。 不需要插件。 包括帮助视频。 免费下载&#xff1a;https://prmu…...

数据结构与算法学习笔记九---循环队列的表示和实现(C++)

目录 前言 1.为什么要使用循环队列 2.队列的顺序存储方式的实现 1.定义 2.队列初始化 3.销毁 4.清空队列 5.队列是否为空 6.队列长度 7.队头 8.入队 9.出队 10.遍历队列 11.完整代码 3.参考资料 前言 这篇文章介绍循环队列的表示和用法。 1.为什么要使用循环队…...

Mysql获取当前时间

1、今天开始时间和结束时间 SELECT DATE_FORMAT(NOW(),’%Y-%m-%d 00:00:00’) AS ‘今天开始’; SELECT DATE_FORMAT(NOW(),’%Y-%m-%d 23:59:59’) AS ‘今天结束’;2、昨天的开始时间和结束时间 SELECT DATE_FORMAT( DATE_SUB(CURDATE(), INTERVAL 1 DAY), ‘%Y-%m-%d 00:…...

计算机服务器中了locked勒索病毒怎么解决,locked勒索病毒解密恢复工具

在网络技术飞速发展的时代&#xff0c;通过网络开展各项工作业务成为众多企业的首选&#xff0c;网络也为企业的生产运营提供了极大便利&#xff0c;大大提升了企业办公效率&#xff0c;但是利用网络避免不了网络威胁的存在&#xff0c;数据安全问题一直是企业关心的主要话题。…...

基于springboot实现的在线动漫信息平台

开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven…...

C# Winform+Halcon结合标准视觉工具

介绍 winform与halcon结合标准化工具实例 软件架构 软件架构说明 基于NET6 WINFORMHALCON 实现标准化视觉检测工具 集成相机通讯 集成PLC通讯 TCP等常见通讯 支持常见halcon算子 图形采集blob分析高精度匹配颜色提取找几何体二维码提取OCR识别等等 。。。 安装教程 …...

英语单词量测试

网址&#xff1a;https://preply.com/en/learn/english/test-your-vocab 测试结果&#xff1a; 细节&#xff1a;英语母语者有20000-35000个单词的词汇量&#xff0c;8岁孩子的词汇量在8000个左右。而不是我们教育系统里说的&#xff0c;6000个单词足够用了。足够用&#xff0…...

三、安装node_exporter

目录 一、简介 二、下载安装 一、简介 Exporter是Prometheus的指标数据收集组件。它负责从目标Jobs收集数据&#xff0c;并把收集到的数据转换为Prometheus支持的时序数据格式。 和传统的指标数据收集组件不同的是&#xff0c;他只负责收集&#xff0c;并不向Server端发送数据…...

在Matlab中绘制横直方图

在“在Matlab中绘制二维直方图”和“在Matlab中绘制三维直方图”中&#xff0c;得到的直方图都是竖直方向的图形&#xff0c;即竖直方图。这篇博文在此基础上绘制横直方图&#xff0c;只需要把bar( )函数和 bar3( )函数分别调整为barh( )函数和 bar3h( )函数即可。在命令窗口输…...

别再硬编码了!用Unity动画事件实现音效与攻击判定的动态解耦(附完整C#脚本)

告别硬编码&#xff1a;Unity动画事件驱动的模块化开发实战 在游戏开发中&#xff0c;动画系统与游戏逻辑的耦合常常成为后期维护的噩梦。想象一下这样的场景&#xff1a;每次调整动画帧数都需要同步修改代码中的硬编码数值&#xff0c;或者音效资源路径被直接写在脚本里导致资…...

一文掌握【行为克隆 (Behavior Cloning)】的实战应用与局限

1. 行为克隆是什么&#xff1f;从模仿人类到AI决策 想象一下教小朋友骑自行车的情景。你不会先讲解力学原理&#xff0c;而是亲自示范如何保持平衡、如何踩踏板。孩子通过观察和模仿你的动作&#xff0c;逐渐掌握骑行技巧——这就是行为克隆&#xff08;Behavior Cloning&#…...

5分钟快速上手:Translumo终极免费实时屏幕翻译工具完整指南

5分钟快速上手&#xff1a;Translumo终极免费实时屏幕翻译工具完整指南 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 想…...

Grounding DINO:从零解析跨模态开放集检测的架构革新与实战

1. 开放集检测的革命&#xff1a;为什么需要Grounding DINO&#xff1f; 当你在手机相册里搜索"海边日落"时&#xff0c;传统视觉模型只能匹配预设的"沙滩""太阳"等标签&#xff0c;而Grounding DINO却能真正理解语义——这就是开放集检测的魅力…...

Configor 自动重载功能深度解析:实现配置热更新的终极指南

Configor 自动重载功能深度解析&#xff1a;实现配置热更新的终极指南 【免费下载链接】configor Golang Configuration tool that support YAML, JSON, TOML, Shell Environment 项目地址: https://gitcode.com/gh_mirrors/co/configor Configor 是 Golang 生态系统中一…...

三步完成微信好友关系一键检测:发现谁偷偷删除了你

三步完成微信好友关系一键检测&#xff1a;发现谁偷偷删除了你 【免费下载链接】WechatRealFriends 微信好友关系一键检测&#xff0c;基于微信ipad协议&#xff0c;看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends 你…...

基于 HarmonyOS 6.0 的智能家政预约页面实战开发:从页面构建到跨端体验优化

基于 HarmonyOS 6.0 的智能家政预约页面实战开发&#xff1a;从页面构建到跨端体验优化 前言 随着 HarmonyOS 生态不断完善&#xff0c;HarmonyOS 6.0 已经不仅仅是一个移动端操作系统&#xff0c;而是逐渐演变为一个真正意义上的全场景分布式操作平台。对于开发者而言&#xf…...

《CVPR2025-DEIM创新改进项目实战:从原理到部署的深度学习优化全攻略》004、DEIM数学基础:注意力机制与特征重标定的统一框架

CVPR2025-DEIM创新改进项目实战:从原理到部署的深度学习优化全攻略 004、DEIM数学基础:注意力机制与特征重标定的统一框架 一、从一次诡异的梯度爆炸说起 去年秋天调一个轻量级检测模型,在T4上跑得好好的,换到Jetson Orin上就炸了——loss直接飞到NaN。查了三天,最后定…...

从‘人脑理解’到‘图解表达’:我是如何拆解小米便签项目结构的(附避坑指南)

从混沌到清晰&#xff1a;解码小米便签架构的思维可视化实战 第一次打开小米便签的源码时&#xff0c;我仿佛闯入了一个陌生的城市。高耸的Activity大厦、错综复杂的Manager街道、隐藏在角落的Helper小巷...作为刚入门的Android开发者&#xff0c;面对这样一个成熟项目的代码库…...