1、React入门:React是什么、为什么选择React、React的核心概念(虚拟DOM、JSX、组件化)、搭建第一个React项目(Create React App)
React到底是什么?
说实话,我第一次接触React的时候,也觉得很神秘。它就是一个JavaScript库,专门用来构建用户界面的。你想想看,我们平时写网页,要么用原生JS操作DOM,要么用jQuery。但项目一大,代码就乱成一锅粥。
React的出现,说白了就是帮我们解决这个问题的。它由Facebook团队开发,2013年开源。现在前端圈子里,React、Vue、Angular三足鼎立。我个人习惯用React,因为它的生态最成熟,社区最活跃。
核心要点:React不是框架,是一个库。它只负责视图层,也就是你看到的那部分。数据管理、路由这些,需要配合其他工具使用。
为什么选择React?
我在项目中遇到过不少团队,从jQuery迁移到React后,开发效率提升了一大截。为什么?
- 组件化开发:每个功能模块独立,复用性高。改一个地方,不会影响其他地方。
- 虚拟DOM:性能好,页面更新快。用户操作时不会卡顿。
- 强大的生态:React Native可以写移动端,Next.js可以做服务端渲染。
- 大厂背书:Facebook、Instagram、Airbnb都在用。你找工作,React岗位也最多。
嗯,这里要注意。React的学习曲线其实不算陡。你只要会JavaScript基础,就能上手。不像Angular,上来就要学TypeScript、依赖注入、装饰器,头都大了。
React的核心概念
虚拟DOM
虚拟DOM是什么?说白了,就是一个JavaScript对象,用来描述真实DOM的样子。每次数据变化,React先在虚拟DOM上做比较,然后只更新真正变化的部分。
我曾经接手过一个项目,页面里有上千个列表项。用原生JS操作DOM,每次更新都要重新渲染整个列表,卡得不行。换成React后,它只更新变化的那一项,流畅多了。
小技巧:虚拟DOM不是React独有的,Vue也有。但React的diff算法更高效,尤其是在大型应用中。
JSX
JSX是React的语法糖。它让你在JavaScript里写HTML,看起来像模板语言,但本质还是JS。
// 这是JSX
const element = <h1>Hello, React!</h1>;
// 编译后变成这样
const element = React.createElement('h1', null, 'Hello, React!');
我第一次看到JSX时,觉得有点奇怪。HTML和JS混在一起,不违背关注点分离吗?后来才明白,React认为渲染逻辑和UI逻辑是紧密耦合的,分开反而不好维护。
避坑指南:JSX里写class要用className,因为class是JavaScript的保留关键字。我刚开始写的时候,经常忘记这一点,导致样式不生效。
组件化
组件化是React的精髓。每个组件就是一个独立的单元,有自己的状态和逻辑。你可以把页面拆分成多个小组件,然后组合起来。
// 一个简单的组件
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
// 使用组件
const element = <Welcome name="React" />;
组件化的好处很明显。比如你做一个电商网站,商品卡片、购物车、用户信息,都可以做成独立组件。改商品卡片样式,不会影响购物车。这就是我为什么喜欢React的原因——代码清晰,维护方便。
搭建第一个React项目
好了,理论说完了,我们来动手。搭建React项目,最常用的方式是用Create React App(CRA)。
环境准备
首先,你得安装Node.js。版本建议用LTS版,稳定。我习惯用nvm管理Node版本,方便切换。
# 检查Node是否安装
node -v
# 检查npm是否安装
npm -v
创建项目
# 使用npx创建React项目
npx create-react-app my-first-react-app
# 进入项目目录
cd my-first-react-app
# 启动开发服务器
npm start
等几分钟,浏览器会自动打开 http://localhost:3000。你会看到一个React的默认页面,恭喜你,第一个React项目跑起来了!
提示:npx是npm 5.2+自带的工具,它会自动下载并执行create-react-app,不需要全局安装。我建议用npx,省得污染全局环境。
项目结构
创建完成后,你会看到这样的目录结构:
my-first-react-app/
node_modules/ # 依赖包
public/ # 静态资源
src/ # 源代码
App.js # 根组件
index.js # 入口文件
package.json # 项目配置
src目录是你主要工作的地方。index.js是入口,App.js是根组件。你可以修改App.js,看看页面怎么变化。
避坑指南:不要手动修改node_modules里的文件。我曾经为了改一个bug,直接改了node_modules里的源码,结果下次npm install后全没了。正确的做法是用patch-package或者提PR给作者。
总结
这一章我们讲了React是什么、为什么选它、核心概念,还亲手搭了第一个项目。你想想看,其实React没那么神秘,就是一个工具,帮我们更好地构建用户界面。
下一章,我们会深入JSX,看看它到底怎么工作的。到时候,你会对React有更深的理解。
嗯,今天就到这里。记得动手敲代码,光看是学不会的。