三个我都用过,直到最近我才彻底想明白它们的本质区别。
如果你也对“为什么 Angular 用模板、React 用 JSX、Vue 两边都能搞”感到困惑,那这篇就是为你写的。
🚩一句话总结
框架 | 核心思想 | 写页面的方式 |
---|---|---|
Angular | 在 HTML 上编程(指令驱动) | 加属性指令控制模板 |
Vue | 模板驱动 + 支持函数式 | <template> + JS |
React | 一切用 JS(JSX 驱动) | JS 函数里返回页面结构 |
1️⃣ Angular:HTML 增强大师
Angular 就像一个“高级 HTML 解释器”,你写的模板就是 HTML,加上 Angular 的指令。
<!-- Angular 写法 -->
<div *ngIf="showMsg" (click)="sayHello()">Hello Angular</div>
*ngIf
:控制显示(click)
:事件绑定[value]
、[disabled]
等属性绑定全靠方括号
👉 特点:HTML 是主角,TS 负责逻辑,结构清晰,但学习曲线不低。
2️⃣ Vue:模板为主,JS 也能上
Vue 更像是前端圈的“中间派”,默认鼓励使用模板,但高手也能上 JS 函数式渲染。
<!-- Vue 模板写法 -->
<template>
<div v-if="showMsg" @click="sayHello">Hello Vue</div>
</template>
<script setup>
import { ref } from 'vue'
const showMsg = ref(true)
const sayHello = () => alert('Hi')
</script>
👉 v-if
和 @click
是 Vue 的指令,跟 Angular 类似,但更轻量。
高级用户还可以这么写(函数式):
// Vue render 函数写法(像 React)
import { h } from 'vue'
export default {
render() {
return this.showMsg ? h('div', { onClick: this.sayHello }, 'Hello Vue') : null
}
}
3️⃣ React:一切都是 JS
第一次用 React 的时候,我整个人都懵了:**这也叫写页面?**其实它是把 UI 看成函数的返回值。
// React 写法
function App() {
const [showMsg, setShowMsg] = useState(true)
return showMsg && (
<div onClick={() => alert('Hi')}>Hello React</div>
)
}
JSX 看起来像 HTML,其实是 JS 语法糖。你可以在里面写表达式、逻辑、条件渲染,想写啥就写啥。
👉 React 最大的自由,也是一开始最让人迷惑的地方。
🌟 它们的本质区别是“谁说了算”
框架 | 谁主导页面结构? | 像什么? |
---|---|---|
Angular | HTML 说了算 | HTML为王 |
Vue | 模板说了算,但JS能插手 | 两边都沾 |
React | JavaScript 说了算 | JS为王 |
所以你会看到:
- Angular 把 HTML 当主角,一堆语法糖包着
- Vue 是调和派,前期模板,后期函数化
- React 是纯粹派,UI = JS 函数返回的结构,别管 HTML
🧠 初学时的不同感受
框架 | 初学感受 | 上手难度 |
---|---|---|
Angular | 跟写页面很像,但配置复杂 | ⭐⭐⭐⭐ |
Vue | 模板熟悉,上手快 | ⭐⭐ |
React | JS+HTML 混合有点懵 | ⭐⭐⭐ |
✅ 总结
- Angular 是在 HTML 上加功能
- Vue 是在模板上加逻辑
- React 是在 JS 上还原页面
你觉得哪个更“优雅”可能因人而异,但理解它们的出发点,你就不容易再被语法细节绕晕了。
📌 最后提一句
我写这篇是为了帮像我一样走过绕路的朋友,如果你也有类似体验,欢迎点赞评论一起讨论。三大框架各有千秋,理解差异,选适合自己的才是最重要的。