搭建环境
参考文
  https://facebook.github.io/react/docs/installation.html
方式一 官方命令cli (推荐 可快速上手)
| 1
2
3
4
5
 | npm install -g create-react-app
create-react-app my-app
cd my-app
npm start
 | 
一切顺利可以看到浏览器
| 1
2
3
4
5
6
7
8
9
10
11
12
13
 | ├── README.md               说明
├── package.json            npm 配置
├── build                   发布目录
├── public                  资源模板目录
│   ├── favicon.ico
│   └── index.html          模板页
└── src                     源码目录
    ├── App.css
    ├── App.js              app组件
    ├── App.test.js
    ├── index.css
    ├── index.js            index启动
    └── logo.svg
 | 
打开 
| 1
2
3
4
5
6
 | "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
}
 | 
  npm start 启动开发环境
npm run build 编译模式 目标目录 
方式二 手动配置webpack
| 1
2
3
 | mkdir react-webpack
cd react-webpack
npm init
 | 
| 1
 | npm install --save-dev babel-core babel-loader babel-preset-env babel-preset-es2015 babel-preset-react react react-dom webpack-dev-server webpack
 | 
| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 | var webpack = require('webpack');
var commonsPlugin = new webpack.optimize.CommonsChunkPlugin('common'); // 合并重复代码到 common.js 文件中
module.exports = {
    entry: {
        "01-helloword": __dirname + "/src/01-helloword.js" // 多文件入口
    },
    devtool: 'source-map',
    output: {
        path: __dirname + "/build",
        filename: "[name].js" // [name] 是entry入口的 key
    },
    plugins: [commonsPlugin],
    module: {
        loaders: [{
            test: /\.js$/,
            loader: 'babel-loader',
            query: {
                presets: ['es2015', 'react'] // es6 react 编译
            }
        }]
    },
    resolve: {
        extensions: ['.js', '.json'] // 默认扩展名
    }
}
 | 
  src 是源码目录
build 是编译后目标目录
| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 | {
  "name": "react-webpack",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node_modules/.bin/webpack -d --watch",
    "server": "node_modules/.bin/webpack-dev-server --inline",
    "dist": "node_modules/.bin/webpack -p"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "babel-core": "^6.24.1",
    "babel-loader": "^7.0.0",
    "babel-preset-env": "^1.4.0",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-react": "^6.24.1",
    "react": "^15.5.4",
    "react-dom": "^15.5.4",
    "webpack": "^2.4.1",
    "webpack-dev-server": "^2.4.5"
  }
}
 | 
  我这里设置了两个scripts
npm start         监听方式自动编译开发调试
npm run server    localhost:8080本地www服务
npm run dist      产品的方式发布
| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
 | <!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="shortcut icon" href="favicon.ico">
    <title>React App</title>
  </head>
  <body>
    <div id="root"></div>
    <script src="../build/common.js"></script>
    <script src="../build/01-helloword.js"></script>
  </body>
</html>
 | 
| 1
2
3
4
5
6
7
 | import React from 'react';
import ReactDOM from 'react-dom';
ReactDOM.render( 
    <h1> Hello, world! </h1>,
    document.getElementById('root')
);
 | 
| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 | > webpack -d --watch
Webpack is watching the files…
Hash: 8a6fd54e01f7bfb59aa4
Version: webpack 2.4.1
Time: 8630ms
                 Asset     Size  Chunks                    Chunk Names
01-helloword-bundle.js  1.99 MB       0  [emitted]  [big]  main
   [5] ./~/react-dom/lib/ReactDOMComponentTree.js 6.27 kB {0} [built]
   [6] ./~/fbjs/lib/ExecutionEnvironment.js 1.06 kB {0} [built]
   [8] ./~/react-dom/lib/ReactInstrumentation.js 601 bytes {0} [built]
  [10] ./~/react-dom/lib/ReactUpdates.js 9.67 kB {0} [built]
  [19] ./~/react/lib/React.js 3.34 kB {0} [built]
  [80] ./~/react-dom/index.js 58 bytes {0} [built]
  [81] ./~/react/react.js 55 bytes {0} [built]
 [111] ./~/react-dom/lib/ReactDOM.js 5.16 kB {0} [built]
 [170] ./~/react/lib/ReactChildren.js 6.19 kB {0} [built]
 [171] ./~/react/lib/ReactClass.js 27.6 kB {0} [built]
 [172] ./~/react/lib/ReactDOMFactories.js 5.53 kB {0} [built]
 [173] ./~/react/lib/ReactPropTypes.js 500 bytes {0} [built]
 [175] ./~/react/lib/ReactPureComponent.js 1.32 kB {0} [built]
 [176] ./~/react/lib/ReactVersion.js 350 bytes {0} [built]
 [181] ./src/01-helloword.js 418 bytes {0} [built]
    + 167 hidden modules
Hash: 86817430d2ff60331187
Version: webpack 2.4.1
Time: 209ms
 | 
  到这里就完成了环境配置,打开 | 1
 | pages\01-helloword.html | 
| 1
2
3
4
5
6
7
8
9
10
11
 | ├── build                           编译生成目录
│   ├── 01-helloword.js
│   └── common.js
├── pages                           访问页面
│   ├── 01-helloword.html
│   └── favicon.ico
├── src                             es6源码
│   └── 01-helloword.js
├── README.md
├── package.json                    npm配置
└── webpack.config.js               webpack配置
 | 
调试环境
  chrome浏览器安装插件
        
        
        
          
            Read More