1738 字
9 分钟
Vue / React 框架入门完整教程(组件化开发)

Vue / React 框架入门完整教程(组件化开发)#

前面学了 HTML、CSS、JavaScript,你已经能用原生 JS 操作 DOM 做交互了。但真实项目里,用原生 JS 写复杂页面会非常痛苦——这时就该上框架了。

这一篇讲清楚框架解决什么问题、核心概念是什么,然后分别带你入门 Vue 3React 这两个最流行的框架。


一、为什么需要框架?原生 JS 的痛点#

想象你要做一个商品列表页:几十个商品、每个能加购物车、价格实时汇总。用原生 JS 写:

// 伪代码:手动更新页面的繁琐过程
商品价格变了
→ 找到页面上价格那个元素
→ 修改它的文字
→ 再找到总价元素
→ 重新计算并修改
→ 再找到数量元素
...

数据一变,你就要手动找到 DOM、手动改。数据多了、交互多了,代码就变成”DOM 操作地狱”——又乱又容易出 bug。

框架的核心理念:数据驱动视图。

你只管修改数据,框架自动帮你更新页面:

// 伪代码:框架里你只改数据
price = 100; // 改一个变量
// 页面上所有用到 price 的地方自动更新

三个核心概念:

  1. 组件化:把页面拆成一个一个”积木”(组件),每个组件管自己的一块,可以复用
  2. 数据驱动:数据变了,页面自动跟着变,不用手动操作 DOM
  3. 虚拟 DOM:框架先在”内存里”比较新旧变化,只更新真正变化的部分,性能好

二、Vue 3 入门#

怎么开始?两种方式#

方式一:CDN(最简单,适合学习)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Vue 入门</title>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
</head>
<body>
<div id="app">{{ message }}</div>
<script>
const { createApp, ref } = Vue;
createApp({
setup() {
let message = ref("你好,Vue!");
return { message };
}
}).mount("#app");
</script>
</body>
</html>

方式二:Vite 脚手架(正式项目,以后用)

Terminal window
npm create vue@latest

创建好项目后进入目录 npm installnpm run dev 就能跑起来。初学阶段先用 CDN 方式练手即可。

模板语法:双大括号插值#

<p>{{ message }}</p>

{{ }} 里写变量名或表达式,数据变了这里自动更新。

响应式数据:ref#

Vue 3 里用 ref 创建”会响应变化”的数据:

<div id="app">
<p>点击次数:{{ count }}</p>
<button @click="add">+1</button>
</div>
<script>
const { createApp, ref } = Vue;
createApp({
setup() {
let count = ref(0); // 创建响应式数据
function add() {
count.value++; // 注意:ref 数据要用 .value 修改
}
return { count, add };
}
}).mount("#app");
</script>

重要: count 本身是 ref 对象,模板里自动解开直接写 count,但 JS 代码里改它必须写 count.value

常用指令#

指令作用例子
v-if条件显示<p v-if="show">显示了</p>
v-for循环列表<li v-for="item in list">{{ item }}</li>
v-model双向绑定输入<input v-model="name">
v-bind绑定属性(可简写 :<img :src="url">
v-on监听事件(可简写 @<button @click="fn">

v-model 双向绑定(表单神器):

<div id="app">
<input v-model="name" placeholder="输入名字">
<p>你好,{{ name }}</p>
</div>
<script>
const { createApp, ref } = Vue;
createApp({
setup() {
let name = ref("");
return { name };
}
}).mount("#app");
</script>

输入框里的字一变,下面的”你好,xxx”立刻跟着变——双向绑定,不用写任何事件监听。

v-for 列表渲染:

<div id="app">
<ul>
<li v-for="(item, index) in list" :key="index">{{ index }}. {{ item }}</li>
</ul>
</div>
<script>
const { createApp, ref } = Vue;
createApp({
setup() {
let list = ref(["苹果", "香蕉", "橘子"]);
return { list };
}
}).mount("#app");
</script>

v-if 条件渲染:

<div id="app">
<p v-if="score >= 60">及格了 🎉</p>
<p v-else>没及格 😢</p>
</div>
<script>
const { createApp, ref } = Vue;
createApp({
setup() {
let score = ref(85);
return { score };
}
}).mount("#app");
</script>

组件:页面的”积木”#

把一段 UI 封装成组件,可以反复用:

<div id="app">
<my-button label="按钮一"></my-button>
<my-button label="按钮二"></my-button>
</div>
<script>
const { createApp, ref } = Vue;
// 定义一个组件:一个带文字的按钮
const MyButton = {
props: ["label"], // 接收外部传入的属性
template: `
<button style="padding:10px 20px;border-radius:8px;background:#667eea;color:white;border:none;">
{{ label }}
</button>
`
};
createApp({
components: { MyButton } // 注册组件
}).mount("#app");
</script>

两个按钮共用一份代码,只是传入的 label 不同。这就是组件复用的意义。


三、React 入门#

怎么开始?#

方式一:CDN(简单学习用)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>React 入门</title>
<script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
<script type="text/babel">
function App() {
return <h1>你好,React!</h1>;
}
ReactDOM.createRoot(document.getElementById("root")).render(<App />);
</script>
</body>
</html>

方式二:Vite 脚手架(正式项目)

Terminal window
npm create vite@latest my-app -- --template react

JSX:在 JS 里写 HTML#

React 最特别的地方:组件里直接写类似 HTML 的代码,这叫 JSX。JSX 里用 {} 插入 JS 表达式:

function App() {
let name = "小明";
return <h1>你好,{name}!</h1>; // 输出:你好,小明!
}

状态:useState(React 的”响应式数据”)#

Vue 用 ref,React 用 useState

import { useState } from "react";
function Counter() {
const [count, setCount] = useState(0); // 初始值 0
function add() {
setCount(count + 1); // 必须用 setCount 修改
}
return (
<div>
<p>点击次数:{count}</p>
<button onClick={add}>+1</button>
</div>
);
}
export default Counter;

注意: React 里修改数据必须调用 setCount(新值),不能直接 count = count + 1。调用了 setCount,React 会自动重新渲染页面。

事件处理:onClick#

JSX 里事件用驼峰命名:onClickonChangeonSubmit

<button onClick={add}>+1</button>
<input onChange={e => setText(e.target.value)} />

条件渲染#

function Score({ score }) {
return score >= 60 ? <p>及格了 🎉</p> : <p>没及格 😢</p>;
}

列表渲染#

function FruitList() {
const list = ["苹果", "香蕉", "橘子"];
return (
<ul>
{list.map((item, index) => (
<li key={index}>{item}</li> // key 是给 React 的标记
))}
</ul>
);
}

组件与 props#

function MyButton({ label }) { // props 就是组件的"入参"
return <button>{label}</button>;
}
function App() {
return (
<div>
<MyButton label="按钮一" />
<MyButton label="按钮二" />
</div>
);
}

四、Vue vs React:怎么选?#

维度Vue 3React
上手难度较平缓,中文资料多稍陡,要习惯 JSX 和函数式思维
模板写法HTML 模板 + 指令,接近传统网页JSX,代码即 UI
国内生态非常活跃,国内大厂(阿里、字节部分项目)在用全球最大,GitHub 生态最丰富
学习曲线渐进式,可以一点点引入全量引入,概念相对多

我的建议:

  • 国内找工作、做中小项目 → Vue(资料多、上手快、国内流行)
  • 想进大厂、做大型复杂项目、长期发展 → React(市场占有率全球第一)

但记住: 框架只是工具,核心还是 JavaScript 基础。Vue 和 React 背后的概念(组件、数据驱动、状态)是相通的,精通一个,另一个很快就能上手。二选一深入学习即可,不必两个都精通。


五、总结#

这一篇我们理解了:

  • 为什么要框架:数据驱动视图,告别手动操作 DOM 的噩梦
  • 三大核心概念:组件化、数据驱动、虚拟 DOM
  • Vue 3:createApp + ref 响应式、模板指令(v-if/v-for/v-model/@click)、组件复用
  • React:函数组件 + useState、JSX、onClick、列表 map 渲染
  • 选择建议:国内/入门选 Vue,全球/长期选 React,核心相通

下一篇动手做项目——用前面学的所有知识,做 3 个能真正跑起来的项目。

Vue / React 框架入门完整教程(组件化开发)
https://021028.xyz/posts/default/71/
作者
021028
发布于
2026-08-11
许可协议
CC BY-NC-SA 4.0