vue2和vue3指令

Vue 2 和 Vue 3 的指令系统非常相似,但 Vue 3 在指令方面进行了优化和扩展。以下是 Vue 2 和 Vue 3 中指令的对比:


1. 通用指令

这些指令在 Vue 2 和 Vue 3 中都可以使用,功能一致:

指令 说明
v-bind 绑定 HTML 属性或组件 props
v-model 双向数据绑定
v-if 条件渲染
v-else v-if 的后续条件
v-else-if v-if 的其他条件
v-for 列表渲染
v-on 绑定事件监听器
v-show 根据条件切换元素的显示/隐藏(通过 display 样式)
v-text 更新元素的文本内容
v-html 更新元素的 HTML 内容
v-cloak 防止闪烁,直到编译结束
v-pre 跳过编译,直接渲染原始内容
v-once 只渲染一次,不再更新

2. Vue 3 新增的指令功能

(1) v-model 支持多绑定

Vue 2 的 v-model 默认绑定 valueinput 事件,单个组件只能绑定一个 v-model

Vue 3 支持 多绑定,可以自定义绑定的属性名称。例如:

复制代码
<!-- Vue 3 支持多绑定 -->
<MyComponent v-model:title="title" v-model:content="content" />

在组件中声明绑定:

复制代码
props: ['title', 'content'],
emits: ['update:title', 'update:content'],

(2) 自定义指令的更新函数增强

Vue 3 自定义指令中的钩子函数比 Vue 2 更强大,允许直接访问 vnodeprevVnode,更适合响应式更新。

Vue 2 自定义指令示例:
复制代码
Vue.directive('focus', {
  inserted(el) {
    el.focus();
  },
});
Vue 3 自定义指令示例:
复制代码
const app = Vue.createApp({});
app.directive('focus', {
  mounted(el) {
    el.focus(); // 元素插入时触发
  },
  updated(el) {
    el.focus(); // 数据更新时触发
  },
});

(3) 移除的指令

  • v-model 修饰符变化

    • Vue 2 使用 v-model.lazyv-model.numberv-model.trim

    • Vue 3 改用参数:

      复制代码
      <!-- Vue 3 -->
      <input v-model.lazy="message" />
      <input v-model.number="age" />
      <input v-model.trim="name" />
  • v-on 修饰符合并

    • Vue 2 的 .native 修饰符被移除。
    • Vue 3 通过 emits 传递事件,无需 .native

(4) Transition 组件中的指令

Vue 3 对 v-showTransition 组件中的支持更为直观,直接支持过渡效果:

复制代码
<template>
  <transition name="fade">
    <div v-show="visible">Hello Vue 3</div>
  </transition>
</template>

如果你需要针对 Vue 2 和 Vue 3 的指令做适配,可以根据业务需求具体分析。需要更多的代码实例,也可以告诉我!

相关推荐
子兮曰11 小时前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰11 小时前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万12 小时前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝12 小时前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
A黄俊辉A12 小时前
uniapp webview中实现 app和内嵌的H5双向通信
vue.js·json
三十而立洋12 小时前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁13 小时前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
李少兄14 小时前
JavaScript 隐式全局变量解析
javascript
honkun614 小时前
vue 表格组件 vxe-table 配置 ajax 请求自动加载数据与表单查询
vue.js·vxe-table
kybs199115 小时前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net