一、前端框架认知:React vs Vue vs Angular
说实话,我见过太多产品经理被前端框架搞晕了。
「React、Vue、Angular,到底有什么区别?」「为什么技术团队总在争论用哪个?」「我该不该参与框架选型?」
这些问题,我几乎每周都会被问到。今天咱们就把这三个框架掰开揉碎,讲清楚。
1.1 三大框架的核心差异
先给个直观对比。我习惯用一张表来概括:
| 维度 | React | Vue | Angular |
|---|---|---|---|
| 出身 | Facebook(2013) | 尤雨溪(2014) | Google(2010) |
| 核心思想 | 一切皆组件 | 渐进式框架 | 一站式解决方案 |
| 学习曲线 | 中等(JSX需适应) | 平缓(模板语法友好) | 陡峭(TypeScript+依赖注入) |
| 数据绑定 | 单向数据流 | 双向绑定(语法糖) | 双向绑定(原生) |
| 适用场景 | 大型应用、跨平台 | 中小型、快速迭代 | 企业级、复杂业务 |
嗯,这里要注意:这张表只是参考。实际选型要看团队和业务。
我的个人经验:如果你团队里都是老手,选React没错。如果新人多、项目急,Vue更友好。Angular嘛…适合那种「一个项目做三年」的企业级系统。
1.2 组件化思想——前端开发的基石
说白了,组件化就是把页面拆成一个个独立的小块。
就像搭积木。每个组件有自己的HTML、CSS、JavaScript。可以复用,可以组合。
举个例子,一个搜索框组件:
// React 组件示例
function SearchBox({ placeholder, onSearch }) {
const [keyword, setKeyword] = useState('');
const handleSubmit = (e) => {
e.preventDefault();
onSearch(keyword);
};
return (
<form onSubmit={handleSubmit}>
<input
value={keyword}
onChange={(e) => setKeyword(e.target.value)}
placeholder={placeholder}
/>
<button type="submit">搜索</button>
</form>
);
}
你想想看,这个组件可以在首页用,也可以在商品列表页用。传不同的placeholder和回调函数就行。
我在项目中遇到过最典型的坑:有人把整个页面写成一个组件,几千行代码。后来改需求,改到崩溃。这就是不懂组件化的后果。
产品经理需要知道:组件化意味着「可复用」。你提需求时,可以问技术:「这个按钮/弹窗/列表,之前有没有现成的组件?」能省很多开发时间。
1.3 状态管理——Redux vs Vuex
先问个问题:为什么需要状态管理?
因为组件多了,数据传递就乱了。A组件改了数据,B组件不知道。C组件需要的数据,在D组件的孙子组件里…
这时候就需要一个「中央仓库」来统一管理数据。
React生态里最常用的是Redux,Vue生态里是Vuex。其实核心思想一模一样:
- Store:唯一数据源,整个应用的状态都放在这里
- Action:描述「发生了什么」,比如「用户点击了登录按钮」
- Reducer/Mutation:根据Action更新Store里的数据
- View:根据Store里的数据渲染页面
看个Redux的例子:
// Redux 状态管理示例
// 1. 定义 Action
const LOGIN = 'LOGIN';
// 2. 定义 Reducer
function userReducer(state = { isLogin: false }, action) {
switch (action.type) {
case LOGIN:
return { ...state, isLogin: true, user: action.payload };
default:
return state;
}
}
// 3. 创建 Store
const store = createStore(userReducer);
// 4. 派发 Action
store.dispatch({
type: LOGIN,
payload: { name: '张三', role: 'admin' }
});
Vuex的写法也差不多,只是把Reducer换成了Mutation。我个人习惯用Redux,因为它的中间件机制更灵活。但Vuex对新手更友好。
我曾经踩过的坑:把所有数据都塞进Store。结果Store变得巨大无比,每次改数据都要排查半天。后来学乖了——只放「跨组件共享」的数据。组件自己的临时状态,用useState或ref就够了。
1.4 虚拟DOM——性能的秘密武器
虚拟DOM是什么?说白了,就是一个轻量级的JavaScript对象,用来描述真实DOM的样子。
为什么需要它?因为操作真实DOM很慢。每次修改页面,浏览器都要重新计算布局、重绘。如果频繁操作,页面会卡顿。
虚拟DOM的思路是:先在内存里用JS对象模拟DOM结构。数据变了,先对比新旧两个虚拟DOM的差异(这叫Diff算法)。然后只把真正变化的部分更新到真实DOM上。
看个直观的例子:
// 虚拟DOM(JS对象)
const vNode = {
type: 'div',
props: { className: 'container' },
children: [
{
type: 'h1',
props: {},
children: 'Hello World'
}
]
};
// 对应的真实DOM
// <div class="container">
// <h1>Hello World</h1>
// </div>
你想想看,如果只改h1里的文字,虚拟DOM只需要对比出「文本变了」,然后只更新那个文本节点。而不是重新渲染整个div。
React和Vue都用虚拟DOM,但实现细节不同。React的Diff算法更激进,Vue的优化更精细。不过对产品经理来说,知道「虚拟DOM能提升性能」就够了。
一句话总结:虚拟DOM就是「用计算换渲染」。多花点CPU算差异,少让浏览器去操作真实DOM。在复杂页面上,这个交换非常划算。
1.5 给产品经理的选型建议
最后,我结合多年经验,给几个实用建议:
- 别盲目追新——框架只是工具,业务才是核心。Vue 2够用就别非要升Vue 3。
- 看团队技术栈——团队擅长什么就用什么。强行换框架,学习成本很高。
- 考虑生态——React的第三方库最多,Vue的中文文档最好,Angular的企业级方案最全。
- 关注长期维护——选社区活跃、更新稳定的框架。别用那种「作者已跑路」的库。
我的习惯:做产品原型时,我会问技术负责人:「这个项目用React还是Vue?为什么?」然后根据他的回答,判断他对技术选型的思考深度。一个好的技术负责人,能说出三个以上的理由。
好了,这一章就到这里。下一章我们聊聊「前后端分离与API设计」,这是产品经理理解技术架构的关键一步。
公众号:蓝海资料掘金营,微信deep3321