如何开发由Create-React-App 引导的应用(一)
此文章是翻译How to develop apps bootstrapped with Create React App 官方文档
系列文章
- 如何开发由Create-React-App 引导的应用
- 如何开发由Create-React-App 引导的应用(二)
- 如何开发由Create-React-App 引导的应用(三)
- 如何开发由Create-React-App 引导的应用(四)
Updating to New Release
Creat React App 分成两个包:
create-react-app是用于创建新项目的全局命令行工具。react-scripts是在新建项目中的开发依赖。
几乎不需要更新create-react-app 自身:它将所有的设置委托给了react-scripts 。
当你运行create-react-app 时,它总是使用react-scripts 的最新版本来创建项目,以便你自动获得所有的新特性和改进。
要将现有项目更新为react-scripts 的最新版本,打开更新日志,找到你当前正在用的版本(可以在package.json中找到),按照最新版本的迁移说明来操作。
在大多数情况下,更改packages.json 中react-scripts 的版本号,然后运行npm install 应该就可以了,但是对于潜在的重大变化,请参考更新日志。
我们致力于保持最小的重大变化,从而可以无痛的升级react-scripts。
Sending Feedback
我们总是关注您的反馈。
Folder Structure
创建完成后,你的项目应该看上去像这样:
my-app/
README.md
node_modules/
package.json
public/
index.html
favicon.ico
src/
App.css
App.js
App.test.js
index.css
index.js
logo.svg
对于要构建的项目,这些文件必须存在:
public/index.html是页面模版;src/index.js是JavaScript 入门点。
你可以删除或重命名其它的文件。
你可以在src 中创建子目录。为了更快的重构,只有位于src 中的文件会被Webpack 处理。
你需要将任何JS 和CSS 放到src 中,否则Webpack 将不会处理。
public/index.html 只能使用public 中的文件。
阅读使用JavaScript 和HTML 资源的说明。
但是,你可以创建更多的顶级目录。
它们不会被包含在生产版本中,因此你可以将它们用于文档说明等。
Available Scripts
在项目目录中,你可以运行:
npm start
在开发模式下运行应用。
打开 http://localhost:3000 在浏览器中查看。
如果你进行了修改,页面将重新加载。
你还可以在控制台中看到lint error。
npm test
在交互观察者模式下,启动test runner。
更多信息请参考running tests 章节。
npm run build
构建生产版本应用到build 文件夹。
它在生产模式下正确地绑定了React,并且优化了构建以获得最佳性能。
构建是minified 并且文件名包含哈希值。
你的应用已经准备好部署了!
更多信息请参考deployment 章节。
npm run eject
注意:这是一个单向操作。一旦你eject,你不能返回!
如果你对构建工具和配置选项不满意,你可以运行eject。此命令将从项目中删除单个构建依赖。
相反,它会将所有配置文件和转变的依赖(Webpack、Babel、ESLint 等)复制到你的项目中,所以你可以完全控制它们。除了eject 外所有的命令仍将其作用,但它们将指向复制的脚本,以便你调整它们。在这一点,完全看你自己。
你不必使用eject。The curated feature set 适用于中小型部署。但是我们明白,当你准备使用这个工具时,如果你不能自定义它,则它将没有用。
Supported Language Features and Polyfills
这个项目支持最新JavaScript 标准的超集。
除了ES6 语法,它还支持:
- Exponentiation Operator(ES2016)
- Async/await(ES2017)
- Object Rest/Spread Properites(stage 3 proposal)
- Class Field and Static Properties(stage 3 proposal)
- JSX 和 Flow 语法
学习更多关于不同提案阶段。
虽然我们建议你谨慎使用这些实验性提案,但Facebook 在产品代码中大量使用这些功能,因此,如果将来这些提案发生变化,我吗将提供codemods。
注意这个项目只包括几个ES6polyfills:
如果你使用任何需要运行时支持的ES6+ 特性(像Array.from() 或Symbol),确保你手动添加了合适的polyfill,或者你的目标浏览器已经支持它们了。
Syntax Highlighting in the Editor
要在你喜欢的文本编辑器中配置语法高亮,前往相关的Babel 文档说明页,然后按照说明操作。包含大部分流行的编辑器。
Displaying Lint Output in the Editor
注意:这个特性需呀
react-scripts@0.2.0或更高。
一些编辑器,包括Sublime Text、Atom 和Visual Studio Code 提供了ESLint 插件。
对于linting 它们不是必须要的。你会在终端以及浏览器控制台中看到linter 输出。但是,如果你喜欢在编辑器中显示lint 结果,则需要执行一些额外的操作。
首先,你需要为你的编辑器安装ESLint 插件。
Atom 用户使用
linter-eslint笔记
如果你正在使用Atomlinter-eslint插件,确保 Use global ESLint installation 选项已经选中:
Visual Studio Code 用户
VS Code ESLint 插件会自动侦测Create React App 的配置文件。所以你不需要在根目录下创建eslintrc.json文件,除非你想要添加你自己的规则。在这种情况下,你应该包含CRA 的配置,通过添加下面这行:
{
// ...
"extends": "react-app"
}
然后将下面这块代码添加到你的项目中的package.json 文件中
{
//...
"eslintConfig": {
"extends": "react-app"
}
}
最后,你需要全局安装一些包:
npm install -g eslint-config-react-app@0.3.0 eslint@3.8.1 babel-eslint@7.0.0 eslint-plugin-react@6.4.1 eslint-plugin-import@2.0.1 eslint-plugin-jsx-a11y@4.0.0 eslint-plugin-flowtype@2.21.0
我们认识到这是次优的,由于我们隐藏ESLint 依赖的方式,它目前是必须的。ESLint 团队已经在为此提供解决方案,因此在几个月内可以会变得不必要。
Debugging in the Editor
这个特性目前只有Visual Studio Code编辑器支持。
Visual Studio Code 支持实时编辑和调试,使用Create React App 开箱即用。这能够使你作为一个开发者不需要离开编辑器就可以进行编写和调试你的React 代码,最重要的是它可以让您拥有持续的开发工作流程,其中上下文切换是最小的,因为你不必在不同工具之间进行切换。
你需要确保VS Code 是最新版本,并且VS Code 的Chrome Debugger Extension 已经安装了。
然后将下面代码添加到你的launch.json 文件,并将其放到你的应用根目录下的.vscode 文件夹中。
{
"version": "0.2.0",
"configurations": [{
"name": "Chrome",
"type": "chrome",
"request": "launch",
"url": "http://localhost:3000",
"webRoot": "${workspaceRoot}/src",
"userDataDir": "${workspaceRoot}/.vscode/chrome",
"sourceMapPathOverrides": {
"webpack:///src/*": "${webRoot}/*"
}
}]
}
运行npm start 启动你的应用,按F5 或点击绿色debug 图标在VS Code 中调试。现在你可以写代码、设置断点、修改代码以及调试你最新修改的代码--所有都在你的编辑器中实现。
Changing the Page title
你可以在生成项目的public 文件夹下知道源HTML 文件。你可以编辑<title> 标签,把“React App” 标题改为其他任何东西。
请注意,通常你不会经常在public 目录下编辑文件。例如,可以在不更改HTML 情况下,添加CSS 文件。
如果你需要根据内容来动态更新页面的标题,你可以使用浏览器的document.title API。对于要从React 组件更改标题的更复杂的场景,可以使用React Helmet 这个第三方库。
在生产环境中,你为自己的应用使用自定义服务器,要将标题在发送到浏览器之前修改,你可以遵循本章 建议。或者,你可以预构建每一个页面为静态HTML 文件,然后加载JavaScript 包,将在这里介绍。
Installing a Dependency
生成的项目中包括React 和ReactDOM 依赖。它也包括Create React App 使用的一组脚本作为开发依赖。你也可以使用npm安装其它的依赖(例如,React Router):
npm install --save <library-name>
如何开发由Create-React-App 引导的应用(一)的更多相关文章
- 如何扩展 Create React App 的 Webpack 配置
如何扩展 Create React App 的 Webpack 配置 原文地址https://zhaozhiming.github.io/blog/2018/01/08/create-react-a ...
- 深入 Create React App 核心概念
本文差点难产而死.因为总结的过程中,多次怀疑本文是对官方文档的直接翻译和简单诺列:同时官方文档很全面,全范围的介绍无疑加深了写作的心智负担.但在最终的梳理中,发现走出了一条与众不同的路,于是坚持分享出 ...
- 在 .NET Core 5 中集成 Create React app
翻译自 Camilo Reyes 2021年2月22日的文章 <Integrate Create React app with .NET Core 5> [1] Camilo Reyes ...
- tap news:week5 0.0 create react app
参考https://blog.csdn.net/qtfying/article/details/78665664 先创建文件夹 安装create react app 这个脚手架(facebook官方提 ...
- 使用create react app教程
This project was bootstrapped with Create React App. Below you will find some information on how to ...
- Create React App
Facebook开源了React前端框架(MIT Licence),也同时提供了React脚手架 - create-react-app. create-react-app遵循约定优于配置(Coc)的原 ...
- Create React App 安装less 报错
执行npm run eject 暴露模块 安装 npm i less less-loader -D 1.打开 react app 的 webpack.config.js const sassRege ...
- [React] Use the Fragment Short Syntax in Create React App 2.0
create-react-app version 2.0 added a lot of new features. One of the new features is upgrading to Ba ...
- [React] {svg, css module, sass} support in Create React App 2.0
create-react-app version 2.0 added a lot of new features. One of the new features is added the svgr ...
- create react app遇到的问题
我现在想的是吧 static 资源和动态 api 来分开处理, static 资源开启 nginx 服务器,api 请求由 express 完成, 现在的问题是开发的时候 proxy 设定将所有的请求 ...
随机推荐
- bzoj 4817: [Sdoi2017]树点涂色
Description Bob有一棵n个点的有根树,其中1号点是根节点.Bob在每个点上涂了颜色,并且每个点上的颜色不同.定义一条路 径的权值是:这条路径上的点(包括起点和终点)共有多少种不同的颜色. ...
- Docker(五):Docker高级网络配置
1.容器跨主机多子网方案 网络设计如下: 主机1:10.110.52.38 容器1: 192.168.0.1 vlan1 容器2: 192.168.0.2 vlan2 主机2:10.110.52.66 ...
- QT中定时器的使用方法
前言:因为QT中用死循环会开销很多内存容易崩溃,这时候使用定时器可以很好解决这个问题. 使用定时器需要用到头文件:include<QTimer> (1)定义定时器 QTimer *upda ...
- python multiprocessing.Process
在使用Kafka-python时自己写的一个bug 我在一个进程的__init__中初始化了一个producer,但是一直不好用 但是在函数里直接new一个就好用了 why? 需要说明的是produc ...
- 4、公司经营的业务来源 - CEO之公司管理经验谈
公司经营的业务来源为公司的运作资金提供了帮助,一般来说,整个公司的领导层为公司的经营做管理,而业务员就为公司的业务提供来源,然后建设部为业务开展做建设. 一.总经理: 公司的总经理主要负责公司运作经营 ...
- Xamarin.Forms (Android制作启动画面)
http://blog.csdn.net/zapzqc/article/details/38496117 Xamarin.Forms 在启动的时候相当慢,必须添加一个启动界面,步骤如下: 1. ...
- Linux设置PHP环境变量
区分 环境变量从时间上可分为临时性和永久性,这里只说明永久性的设置 操作 PHP 安装目录 找到PHP的安装目录:我这里是/phpstudy/server/php 其bin目录为:/phpstudy/ ...
- ngx-bootstrap使用02 Accordion组件的使用
1 Accordion组件 该组件通过一个可折叠的控制面板去在有限空间内显示更多的信息 according组件在可折叠指令的最外层,该组件提供了一些列的项目列表去显示被折叠的内容,这些项目列表包含he ...
- js 判断值为Array or Object的方法
①obj instanceof Array / Object ②Array.prototype.isPrototypeOf(obj) ③Object.prototype.toString.call(o ...
- Python 数据科学系列 の Numpy、Series 和 DataFrame介绍
本課主題 Numpy 的介绍和操作实战 Series 的介绍和操作实战 DataFrame 的介绍和操作实战 Numpy 的介绍和操作实战 numpy 是 Python 在数据计算领域里很常用的模块 ...
