{{ }}和v-on:click

好的,我们来对 Vue 中这两个最常用语法的"可接受内容"进行一个清晰的总结。

它们的核心区别在于职责不同 :一个是为了显示 ,另一个是为了行动

总结对比表

特性 插值表达式 {``{ }} v-on 事件处理器 (@)
核心职责 计算并显示一个值 (Display a Value) 当事件发生时执行一个动作 (Execute an Action)
性质 只读的 (Read-only) 可写的 (Writable)
允许的内容 无副作用的 JavaScript 表达式 JavaScript 语句 (包括有副作用的表达式语句)
是否允许副作用 禁止 ❌ (会收到警告或报错) 允许 ✅ (其主要目的就是处理副作用)
典型合法示例 - name <br> - count + 1 <br> - isActive ? '是' : '否' <br> - items.slice(0, 5) <br> - formatDate(date) - count++ <br> - awesome = !awesome <br> - items.push('new') <br> - myMethod() <br> - myMethodWithArg(item)
典型非法/不推荐示例 - count++ (有副作用) <br> - awesome = !awesome (有副作用) <br> - let a = 1; (语句) <br> - if (x) { ... } (语句) - 过于复杂的逻辑,如:validate(); api.call(); (不推荐,应封装到方法中) <br> - 任何返回值的复杂计算 (无意义,返回值会被忽略)

一个简单的记忆法则:餐厅的比喻

你可以把 Vue 模板想象成一家餐厅:

  • {``{ }} 是餐厅的菜单 (Menu)

    • 菜单的职责是描述和展示菜品(显示你的数据状态)。
    • 你只能阅读 菜单上的内容 ({``{ user.name }}),或者做一些简单的计算来决定看什么 ({``{ price * 1.1 }})。
    • 不能 在菜单上直接写字来修改你的订单 ({``{ orderStatus = '已下单' }} 是绝对禁止的),这是不合规矩的。
  • @click 是餐厅的服务员 (Waiter)

    • 服务员的职责是接收你的指令并执行动作
    • 你可以对他下达各种指令(执行语句),比如:
      • "我的订单状态改成'已下单'" (@click="orderStatus = '已下单'")。
      • "再给我加个菜" (@click="cart.push('新菜品')")。
      • 或者叫他去执行一套复杂的流程(调用方法):"结账" (@click="checkout()")。

最终结论

总而言之,请记住这个简单的规则:

花括号 {``{ }} 只看不做,@ 符号主要负责做。

在模板中保持这种清晰的职责分离,是编写高质量、可维护的 Vue 代码的关键。

相关推荐
学网安的肆伍35 分钟前
【046-WEB攻防篇】注入工具&SQLMAP&Tamper编写&指纹修改&高权限操作&目录架构
前端·架构
森林的尽头是阳光1 小时前
tree回显问题
javascript·vue.js·elementui
Highcharts.js2 小时前
如何下载使用Highcharts Grid 开发web可编辑表格
前端·人工智能·grid 表格·web 表格·在线编辑表格·highcharts表格安装·表格开发工具
用户62960593247052 小时前
从“浏览器根本区分不了”到真正实现:刷新不退出,关闭标签页自动退出,前端判断浏览器关闭和刷新
前端
qetfw2 小时前
MWU:Vue 3 + FastAPI 的 MaaFramework 跨平台 WebUI 源码
前端·vue.js·python·fastapi·开源项目·效率工具
mfxcyh2 小时前
Vue3+Ant Design Vue 实现手动异步文件上传(含大小校验、弹窗上传)
前端·javascript·vue.js
wordbaby2 小时前
Web端热敏标签打印完整解决方案(QZ Tray + 译维A42)
前端
swipe2 小时前
03|Axios 请求进了后端之后:Controller、Request、Response 是怎么接住它的?
前端·后端·全栈
meilindehuzi_a2 小时前
Vue3进阶基础:指令修饰符、v-model表单绑定、动态样式、计算属性与侦听器实战
前端·javascript·vue.js
csdn2015_3 小时前
vue 前端运行命令
前端·javascript·vue.js