此文章是翻译How to develop apps bootstrapped with Create React App 官方文档

系列文章

  1. 如何开发由Create-React-App 引导的应用
  2. 如何开发由Create-React-App 引导的应用(二)
  3. 如何开发由Create-React-App 引导的应用(三)
  4. 如何开发由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.jsonreact-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 语法,它还支持:

学习更多关于不同提案阶段

虽然我们建议你谨慎使用这些实验性提案,但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 笔记

如果你正在使用Atom linter-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 引导的应用(一)的更多相关文章

  1. 如何扩展 Create React App 的 Webpack 配置

    如何扩展 Create React App 的 Webpack 配置  原文地址https://zhaozhiming.github.io/blog/2018/01/08/create-react-a ...

  2. 深入 Create React App 核心概念

    本文差点难产而死.因为总结的过程中,多次怀疑本文是对官方文档的直接翻译和简单诺列:同时官方文档很全面,全范围的介绍无疑加深了写作的心智负担.但在最终的梳理中,发现走出了一条与众不同的路,于是坚持分享出 ...

  3. 在 .NET Core 5 中集成 Create React app

    翻译自 Camilo Reyes 2021年2月22日的文章 <Integrate Create React app with .NET Core 5> [1] Camilo Reyes ...

  4. tap news:week5 0.0 create react app

    参考https://blog.csdn.net/qtfying/article/details/78665664 先创建文件夹 安装create react app 这个脚手架(facebook官方提 ...

  5. 使用create react app教程

    This project was bootstrapped with Create React App. Below you will find some information on how to ...

  6. Create React App

    Facebook开源了React前端框架(MIT Licence),也同时提供了React脚手架 - create-react-app. create-react-app遵循约定优于配置(Coc)的原 ...

  7. Create React App 安装less 报错

    执行npm run eject 暴露模块 安装 npm i  less less-loader -D 1.打开 react app 的 webpack.config.js const sassRege ...

  8. [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 ...

  9. [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  ...

  10. create react app遇到的问题

    我现在想的是吧 static 资源和动态 api 来分开处理, static 资源开启 nginx 服务器,api 请求由 express 完成, 现在的问题是开发的时候 proxy 设定将所有的请求 ...

随机推荐

  1. SpringMVC配置双数据源,一个java项目同时连接两个数据库

    数据源在配置文件中的配置 请点击--->   java架构师项目实战,高并发集群分布式,大数据高可用,视频教程 <pre name="code" class=" ...

  2. Android:Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.

    今天开发Android项目时,导入了http有关架包后,程序编译报错如下: Error:Execution failed for task ':app:transformResourcesWithMe ...

  3. C#设计模式之二十三解释器模式(Interpreter Pattern)【行为型】

    一.引言   今天我们开始讲"行为型"设计模式的第十一个模式,也是面向对象设计模式的最后一个模式,先要说明一下,其实这个模式不是最后一个模式(按Gof的排序来讲),为什么把它放在最 ...

  4. MySQL优化五 SQL优化

    1.减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然 ...

  5. OwinHost.exe用法

    简介 OwinHost.exe是微软提供的自宿主host,如果自己不想写owin的host,可以用这个. 官方对OwinHost的描述为:Provides a stand-alone executab ...

  6. mp3格式转wav格式 附完整C++算法实现代码

    近期偶然间看到一个开源项目minimp3 Minimalistic MP3 decoder single header library 项目地址: https://github.com/lieff/m ...

  7. Chris Richardson微服务翻译:重构单体服务为微服务

    Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯 微服务架构中的服务发现 微服务之事件驱动的数据管理 微服务部署 ...

  8. python 最基本的的单例模型的实现及应用

    在我们python开发过程很多 ,在很多地方都会用到单例模式,确保数据的唯一性,最简单的单例模式,我们可以模块导入的方式实现,因为导入文件,无论import多少次  都只导入一次模块. 方法一:装饰器 ...

  9. if与while相互嵌套,菱形*的实现.py

    """    *           * *         * * *       * * * *     * * * * *     * * * *       * ...

  10. jq手风琴效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...