首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
1.1构建Product Hunt项目
1.2设置开发环境
1.3针对Windows用户的特殊说明
1.4JavaScript ES6/ES7
1.5什么是组件
1.6构建Product组件
1.7让数据驱动Product组件
1.8应用程序的第 一次交互:投票事件响应
1.9更新state和不变性
1.10用Babel插件重构transform-class-properties
2.1计时器应用程序
2.2开始计时器应用程序
2.3将应用程序分解为组件
2.4从头开始构建React应用程序的步骤
2.5第(2)步:构建应用程序的静态版本
2.6第(3)步:确定哪些组件应该是有状态的
2.7第(4)步:确定每个state 应该位于哪个组件中
2.8第(5)步:通过硬编码来初始化state
2.9第(6)步:添加反向数据流
2.10更新计时器
2.11删除计时器
2.12添加计时功能
2.13添加启动和停止功能
3.1组件和服务器介绍
3.2server.js
3.3服务器API
3.4使用API
3.5从服务器加载状态
3.6client
3.7向服务器发送开始和停止请求
3.8向服务器发送创建、更新和删除请求
3.9下一步
4.1React使用了虚拟DOM
4.2为什么不修改实际的DOM
4.3什么是虚拟DOM
4.4虚拟DOM片段
4.5ReactElement
4.6JSX
5.1props、state和children介绍
5.2如何使用本章
5.3ReactComponent
5.4props是参数
5.5PropTypes
5.6使用getDefaultProps()获取默认props
5.7上下文
5.8state
5.9无状态组件
5.10使用props.children与子组件对话
6.1表单101
6.2文本输入
6.3远程数据
6.4异步持久性
6.5Redux
6.6表单模块
7.1JavaScript模块
7.2Create React App
7.3探索Create React App
7.4Webpack基础
7.5对示例应用程序进行修改
7.6创建生产构建
7.7弹出
7.8Create React App和API服务器一起使用
7.9Webpack总结
8.1不使用框架编写测试
8.2Jest是什么
8.3使用Jest
8.4React应用程序的测试策略
8.5使用Enzyme测试基本的React组件
8.6为食物查找应用程序编写测试
8.7编写FoodSearch.test.js
当前位置:
首页>>
技术小册>>
React全家桶--前端开发与实例(上)
小册名称:React全家桶--前端开发与实例(上)
### 7.3 探索Create React App 在React的浩瀚生态中,`Create React App`(简称CRA)无疑是一个举足轻重的工具,它极大地简化了React应用的初始设置和开发流程。作为一个官方支持的项目脚手架,Create React App为开发者提供了一个“零配置”的开发环境,让你可以快速启动项目,专注于应用的核心逻辑和界面设计,而不必担心构建配置、依赖管理等繁琐事项。本章节将深入探索Create React App的功能、使用方法、定制化选项以及常见问题的解决方案,帮助读者充分利用这一强大工具。 #### 7.3.1 引入Create React App ##### 7.3.1.1 安装与创建项目 首先,确保你的开发环境中已安装了Node.js和npm(或yarn)。Create React App是一个全局可安装的npm包,通过以下命令安装: ```bash npm install -g create-react-app # 或者如果你更偏爱yarn yarn global add create-react-app ``` 安装完成后,你可以通过以下命令创建一个新的React应用: ```bash npx create-react-app my-app # 或者如果你已经全局安装了create-react-app create-react-app my-app ``` 这里`npx`是npm的一个工具,用于执行npm包中的二进制文件,无需全局安装该包。`my-app`是你的项目名称,可以根据需要自定义。 ##### 7.3.1.2 项目结构概览 创建项目后,进入项目文件夹(`cd my-app`),你会看到如下的项目结构: - `node_modules/`:存放项目依赖的npm包。 - `public/`:包含应用的HTML模板(`index.html`)、图标文件等静态资源。 - `src/`:存放React组件、JavaScript逻辑、CSS样式等源码文件。 - `index.js`:应用的入口文件。 - `App.js`:根组件文件。 - `App.css`:根组件的样式文件。 - `.gitignore`:Git仓库的忽略文件,定义了不需要纳入版本控制的文件和目录。 - `package.json`:项目的配置文件,包含项目依赖、脚本、元数据等信息。 - `README.md`:项目的说明文件。 #### 7.3.2 开发与构建 ##### 7.3.2.1 开发服务器 在项目根目录下,运行以下命令启动开发服务器: ```bash npm start # 或 yarn start ``` 这将在浏览器中自动打开一个新的标签页,加载你的应用,并启动一个热重载(Hot Reloading)功能,允许你在不刷新页面的情况下即时看到代码的更改效果。 ##### 7.3.2.2 构建生产版本 当应用开发完成,准备部署时,你可以使用以下命令构建生产版本的应用: ```bash npm run build # 或 yarn build ``` 该命令会创建一个`build/`文件夹,其中包含所有静态资源(HTML、CSS、JavaScript等),这些资源是优化过的,适合在生产环境中使用。 #### 7.3.3 定制化与扩展 ##### 7.3.3.1 环境变量 Create React App支持`.env`文件来定义环境变量,这对于配置不同环境下的API端点、功能开关等非常有用。例如,你可以在项目根目录下创建一个`.env.development`文件来定义开发环境特有的变量,或者`.env.production`来定义生产环境的变量。 ##### 7.3.3.2 代理设置 如果你的应用需要向后端API发送请求,而你的后端服务运行在不同的端口或域名上,Create React App提供了便捷的代理功能来绕过跨域问题。你只需在`package.json`中添加一个`proxy`字段,指向你的后端服务地址即可。 ##### 7.3.3.3 自定义构建配置 虽然Create React App旨在提供“零配置”的体验,但它也允许你通过`eject`命令来暴露所有webpack和Babel的配置文件,从而进行自定义配置。然而,`eject`是一个不可逆的操作,会失去Create React App的自动更新功能。因此,推荐的做法是使用`react-app-rewired`和`customize-cra`等库来在不`eject`的情况下自定义配置。 #### 7.3.4 常见问题与解决方案 ##### 7.3.4.1 端口冲突 如果开发服务器启动时报错端口冲突(如`Error: listen EADDRINUSE: address already in use :::3000`),可以尝试以下几个解决方案: - 查找并关闭占用该端口的进程(可以使用`lsof -i:3000`或`netstat -aon | findstr 3000`命令)。 - 修改`package.json`中的`start`脚本,添加`--port`参数来指定一个新的端口(如`react-scripts start --port 4000`)。 ##### 7.3.4.2 路由模式问题 Create React App默认使用浏览器历史(Browser History)模式的路由,这要求服务器能够正确处理前端路由的404请求,返回`index.html`页面。如果你将应用部署到非根路径,需要配置webpack的`PUBLIC_URL`环境变量或使用其他方法确保路由正常工作。 ##### 7.3.4.3 性能优化 虽然Create React App已经对生产构建进行了大量优化,但在某些情况下,你可能还需要进一步优化应用性能,比如通过代码分割(Code Splitting)、懒加载(Lazy Loading)等技术来减少初始加载时间。 #### 7.3.5 总结 Create React App作为React应用开发的强大工具,以其“零配置”的便捷性和丰富的定制化选项,赢得了广大开发者的青睐。通过本章节的学习,你应该已经掌握了Create React App的基本使用方法、项目结构、开发流程、定制化选项以及常见问题的解决方案。在未来的React项目开发中,你可以更加高效地使用这一工具,专注于应用的逻辑和界面设计,而不必在环境配置上浪费太多时间。同时,随着React生态的不断发展和完善,Create React App也将持续更新和改进,为开发者提供更加优质的开发体验。
上一篇:
7.2Create React App
下一篇:
7.4Webpack基础
该分类下的相关小册推荐:
React 进阶实践指南
ReactJS面试指南
深入学习React实战进阶
React全家桶--前端开发与实例(下)
剑指Reactjs