全局指令(常用),调用方法在最底部
在src文件夹下创建directives文件夹,内部创建index.js文件和其他指令文件,如focus.js文件
focus.js文件内部(自己写的指令,名称和操作)
export default function directiveFocus(app) {
app.directive("focus",{
mounted(el,bindings) {
console.log("v-fovus应用的元素被挂载了", el);
el?.focus();
console.log(bindings);
el.textContent = bindings.value
}
})
}

Vue3小案例,将时间戳转为日期,time.js文件内部
import dayjs from 'dayjs';
export default function directiveTime(app) {
app.directive('time', (el, bindings) => {
let timeContent = el.textContent
if (timeContent.length === 10) {
timeContent = timeContent * 1000
}else {
timeContent = Number(timeContent)
}
if (!bindings.value) {
el.textContent = dayjs(timeContent).format('YYYY-MM-DD')
} else {
el.textContent = dayjs(timeContent).format(bindings.value)
}
})
}
<h2 v-time="'YYYY/MM/DD'">1234586571</h2>
index.js文件内部
import directiveFocus from './focus';
export default function directives(app) {
directiveFocus(app)
}
main.js文件内部
import directives from './directives/index';
directives(app)
局部指令vue3
<script>
const vFocus = {
mounted(el) {
console.log("v-fovus应用的元素被挂载了", el);
el?.focus();
},
};
</script>
局部指令vue2
<script>
export default {
directives: {
focus: {
mounted(el) {
console.log("v-fovus应用的元素被挂载了", el);
el?.focus();
},
},
},
};
调用
<template>
<div class="home">
//v-方式调用
<input type="text" v-focus />
//传入参数,两个修饰符,参数值
<h2 v-focus:kobe.abc.vba="'替换后的内容'">替换前的内容</h2>
</div>
</template>