# 💡 Summary
[[Vue3@]] vs React (TSX + Less) 对比表
| 特性 | Vue | React (TSX + Less) |
| -------- | ----------------------------- | ------------------------------ |
| **文件后缀** | `.vue` | `.tsx` + `.less` |
| **文件结构** | 单文件组件 (SFC) | 分离文件 |
| **模板语法** | `<template>` 标签 | JSX (直接在 JS 中写) |
| **脚本部分** | `<script setup>` 或 `<script>` | 直接在 `.tsx` 中 |
| **样式部分** | `<style>` 或 `<style scoped>` | 独立 `.less` 文件 |
| **类型支持** | `.vue` + TypeScript | `.tsx` (原生支持 TS) |
| **数据绑定** | `{{ data }}` | `{data}` |
| **条件渲染** | `v-if` / `v-show` | `{condition && <div>}` / 三元表达式 |
| **循环渲染** | `v-for` | `.map()` |
| **事件绑定** | `@click` / `v-on:click` | `onClick` |
| **样式绑定** | `:class` / `:style` | `className` / `style` 对象 |
## 文件示例对比
对比一览
- React:JSX → React Element Tree → Fiber 协调 → 真实 DOM
- Vue:模板 → render 函数 → VNode Tree(patch)→ 真实 DOM
小例子
```Java
- React:
- JSX: <div><p>Hello</p></div>
- 等价:createElement('div', null, createElement('p', null, 'Hello'))
- 本质是一个嵌套的元素对象树。
- Vue:
- 模板: <div><p>Hello</p></div>
- 等价(渲染函数): h('div', null, [h('p', null, 'Hello')])
- 本质是一个嵌套的 VNode 对象树。
```
易混点澄清
# 🧩 Cues
# 🪞Notes