Skip to content

Commit 4ae0060

Browse files
committed
Rewrite "adding React to existing app"
Fixes #988
1 parent a00440d commit 4ae0060

File tree

1 file changed

+38
-66
lines changed

1 file changed

+38
-66
lines changed

content/docs/add-react-to-an-existing-app.md

Lines changed: 38 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -10,87 +10,59 @@ You don't need to rewrite your app to start using React.
1010

1111
We recommend adding React to a small part of your application, such as an individual widget, so you can see if it works well for your use case.
1212

13-
While React [can be used](/docs/react-without-es6.html) without a build pipeline, we recommend setting it up so you can be more productive. A modern build pipeline typically consists of:
14-
15-
* A **package manager**, such as [Yarn](https://yarnpkg.com/) or [npm](https://www.npmjs.com/). It lets you take advantage of a vast ecosystem of third-party packages, and easily install or update them.
16-
* A **bundler**, such as [webpack](https://webpack.js.org/) or [Browserify](http://browserify.org/). It lets you write modular code and bundle it together into small packages to optimize load time.
17-
* A **compiler** such as [Babel](http://babeljs.io/). It lets you write modern JavaScript code that still works in older browsers.
18-
19-
### Installing React
20-
21-
>**Note:**
22-
>
23-
>Once installed, we strongly recommend setting up a [production build process](/docs/optimizing-performance.html#use-the-production-build) to ensure you're using the fast version of React in production.
24-
25-
We recommend using [Yarn](https://yarnpkg.com/) or [npm](https://www.npmjs.com/) for managing front-end dependencies. If you're new to package managers, the [Yarn documentation](https://yarnpkg.com/en/docs/getting-started) is a good place to get started.
26-
27-
To install React with Yarn, run:
28-
29-
```bash
30-
yarn init
31-
yarn add react react-dom
13+
### 1. Add React [CDN links][cdn] to your HTML
14+
15+
```html
16+
<script
17+
crossorigin
18+
src="https://unpkg.com/react@16/umd/react.production.min.js">
19+
</script>
20+
<script
21+
crossorigin
22+
src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js">
23+
</script>
3224
```
3325

34-
To install React with npm, run:
35-
36-
```bash
37-
npm init
38-
npm install --save react react-dom
39-
```
40-
41-
Both Yarn and npm download packages from the [npm registry](http://npmjs.com/).
42-
43-
> Note:
44-
>
45-
> To prevent potential incompatibilities, all react packages should use the same version. (This includes `react`, `react-dom`, `react-test-renderer`, etc.)
46-
47-
### Enabling ES6 and JSX
48-
49-
We recommend using React with [Babel](http://babeljs.io/) to let you use ES6 and JSX in your JavaScript code. ES6 is a set of modern JavaScript features that make development easier, and JSX is an extension to the JavaScript language that works nicely with React.
50-
51-
The [Babel setup instructions](https://babeljs.io/docs/setup/) explain how to configure Babel in many different build environments. Make sure you install [`babel-preset-react`](http://babeljs.io/docs/plugins/preset-react/#basic-setup-with-the-cli-) and [`babel-preset-env`](http://babeljs.io/docs/plugins/preset-env/) and enable them in your [`.babelrc` configuration](http://babeljs.io/docs/usage/babelrc/), and you're good to go.
52-
53-
### Hello World with ES6 and JSX
54-
55-
We recommend using a bundler like [webpack](https://webpack.js.org/) or [Browserify](http://browserify.org/), so you can write modular code and bundle it together into small packages to optimize load time.
56-
57-
The smallest React example looks like this:
26+
### 2. Write your components
5827

5928
```js
60-
import React from 'react';
61-
import ReactDOM from 'react-dom';
29+
// src/widget.js
30+
class Widget extends React.Component() {
31+
render() {
32+
return <div>Hello, world!</div>;
33+
}
34+
}
6235

6336
ReactDOM.render(
64-
<h1>Hello, world!</h1>,
65-
document.getElementById('root')
37+
<Widget />,
38+
document.querySelector('.widget')
6639
);
6740
```
6841

69-
This code renders into a DOM element with the id of `root`, so you need `<div id="root"></div>` somewhere in your HTML file.
42+
### 3. Compile with Babel
7043

71-
Similarly, you can render a React component inside a DOM element somewhere inside your existing app written with any other JavaScript UI library.
44+
[Babel][babel] is a tool that converts [JSX][jsx] and future JavaScript syntax into ES5 JavaScript compatible with older browsers.
7245

73-
[Learn more about integrating React with existing code.](/docs/integrating-with-other-libraries.html#integrating-with-other-view-libraries)
46+
_Install `babel` with `yarn` or `npm`_
7447

75-
### A Complete Example
76-
77-
You can find step-by-step instructions detailing a basic implementation from scratch, including Babel and Webpack setup [here](https://medium.com/@JedaiSaboteur/creating-a-react-app-from-scratch-f3c693b84658).
78-
79-
### Development and Production Versions
48+
```shell
49+
npm install --global babel-cli babel-preset-react-app
50+
```
8051

81-
By default, React includes many helpful warnings. These warnings are very useful in development.
52+
_Example: compile files in `src` folder to `build`_
8253

83-
**However, they make the development version of React larger and slower so you should use the production version when you deploy the app.**
54+
```shell
55+
babel --presets=react-app src -d build
56+
```
8457

85-
Learn [how to tell if your website is serving the right version of React](/docs/optimizing-performance.html#use-the-production-build), and how to configure the production build process most efficiently:
58+
### 4. Add components to page
8659

87-
* [Creating a Production Build with Create React App](/docs/optimizing-performance.html#create-react-app)
88-
* [Creating a Production Build with Single-File Builds](/docs/optimizing-performance.html#single-file-builds)
89-
* [Creating a Production Build with Brunch](/docs/optimizing-performance.html#brunch)
90-
* [Creating a Production Build with Browserify](/docs/optimizing-performance.html#browserify)
91-
* [Creating a Production Build with Rollup](/docs/optimizing-performance.html#rollup)
92-
* [Creating a Production Build with webpack](/docs/optimizing-performance.html#webpack)
60+
```html
61+
<script src="build/widget.js"></script>
62+
```
9363

94-
### Using a CDN
64+
<!-- Links: -->
9565

96-
If you don't want to use npm to manage client packages, the `react` and `react-dom` npm packages also provide single-file distributions in `umd` folders. See the [CDN](/docs/cdn-links.html) page for links.
66+
[babel]: https://babeljs.io
67+
[cdn]: /docs/cdn-links.html
68+
[jsx]: /docs/introducing-jsx.html

0 commit comments

Comments
 (0)