相同点:

  1. 指令的应用场景,原理是一致的, 除了核心指令(v-modelv-for)等外,Vue也允许我们自定义指令。

不同点:

  1. 生命周期钩子函数名
  2. 指令定义的格式不一样

在vue2中 :

语法: Vue.directive( ‘自定义指令名字’ , { 配置项 } )

1. 定义

  1. // 注册一个全局的指令
  2. Vue.directive('focus', { // 这里取得focus 是自定义名字
  3. inserted: function(el, binding) {
  4. // 这里的el相当于是 DOM 元素 可以操作它
  5. el.focus() // 自动获取焦点
  6. el.style.background = binding.value
  7. console.log('focus', el, binding)
  8. }
  9. })

2.使用格式:

  1. <input v-foucs="'xxxx'" /> xxx指的就是binding.value

在vue3中 :

语法: const app = createApp() app.directive(‘指令名’,配置对象)

1. 定义:

  1. // app.directive('指令名',配置对象)
  2. app.directive('imgLazy', {
  3. mounted (el, binding) {
  4. // el是指令绑定到的dom元素
  5. // binding 是一个对象, binding.value是: <dom v-imgLazy="binding.value的值" />
  6. console.log(el, binding, 'imgLazy...')
  7. }
  8. })
  9. // 2. 使用格式 <div v-imgLazy>

2. 使用格式:

  1. <dom v-imgLazy="binding.value的值" />