學習 React 能夠用如下方法直接建立一個 ReactApp ,本文主要介紹如何手動用 Webpack 和 Parcel 來搭這個環境。html
$ npm install -g create-react-app $ create-react-app my-app $ cd my-app $ npm start
使用 React、Webpack、Parcel、babel 這些工具須要安裝不少依賴包,不走代理的話速度會很是慢,也很容易出錯,因此這裏推薦使用淘寶的 npm 鏡像來安裝,速度很是理想。
使用淘寶鏡像安裝 npm 包只須要兩步便可:node
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
只須要將 npm 替換成 cnpm 便可得到高速下載。
$ cnpm install [name]
下文中給出的全部安裝依賴包的命令都使用 cnpm 安裝的。你也能夠用 npm。react
$ npm init -y
在 scripts
裏面添加以下內容:webpack
"scripts": { "start": "webpack-dev-server", "test": "echo \"Error: no test specified\" && exit 1" },
$ cnpm install react react-dom --save
$ cnpm install babel-preset-env babel-preset-react babel-loader --save-dev
全局的和當前文件夾的最好都裝上。web
$ cnpm install webpack webpack-cli --save-dev $ cnpm install webpack-dev-server --save-dev $ cnpm install webpack webpack-cli -g $ cnpm install webpack-dev-server -g
爲了方便,如下全部文件
都建在同一個文件夾下面。npm
新建 webpack.config.js 並添加如下內容json
const path = require('path'); module.exports = { // index.js是入口文件 entry: path.resolve(__dirname, './index.js'), output: { path: path.resolve(__dirname, ''), filename: "./bundle.js" }, mode: 'development', // ip 和端口配置 devServer: { host: "127.0.0.1", port: 8080 }, module: { rules: [ { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader", options: { presets: ["env", "react"] } } ] } };
這個presets: ["env","react"]
也能夠單獨配置在.babelrc
文件中。
import React from 'react'; import ReactDOM from 'react-dom'; ReactDOM.render( <h1>個人第一個react例子</h1>, document.getElementById('root') );
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>example</title> </head> <body> <div id="root"></div> <script src="./bundle.js"></script> </body> </html>
最後執行 npm start
便可。babel
附上個人 package.json 文件,直接執行 cnpm install
就能安裝全部依賴。app
{ "name": "", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "webpack-dev-server", "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "react": "^16.3.1", "react-dom": "^16.3.1" }, "devDependencies": { "babel-loader": "^7.1.4", "babel-preset-env": "^1.6.1", "babel-preset-react": "^6.24.1", "webpack": "^4.5.0", "webpack-cli": "^2.0.14", "webpack-dev-server": "^3.1.3" } }
若是要換端口的話,修改下webpack.config.js
文件的port
值就能夠了。
$ npm init -y
在 scripts
裏面添加以下內容:dom
"scripts": { "start": "parcel index.html", "test": "echo \"Error: no test specified\" && exit 1" },
parcel 是運行 html 文件的,而不是 js。
$ cnpm install react react-dom --save
$ cnpm install babel-preset-env babel-preset-react babel-core --save-dev
全局的和當前文件夾的最好都裝上。
$ cnpm install parcel-bundler --save-dev $ cnpm install -g parcel-bundler
爲了方便,如下全部文件
都建在同一個文件夾下面。
新建文件 .babelrc ,添加如下內容:
{ "presets": ["env"] }
這裏面只添加 env 便可,若是添加了 react 就會報錯。
import React from 'react'; import ReactDOM from 'react-dom'; ReactDOM.render( <h1>個人第一個react例子</h1>, document.getElementById('root') );
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>example</title> </head> <body> <div id="root"></div> <script src="./index.js"></script> </body> </html>
最後執行 npm start
便可。
附上個人 package.json 文件,直接執行 cnpm install
就能安裝全部依賴。
{ "name": "", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "parcel index.html", "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "react": "^16.3.1", "react-dom": "^16.3.1" }, "devDependencies": { "babel-core": "^6.26.0", "babel-preset-env": "^1.6.1", "babel-preset-react": "^6.24.1", "parcel-bundler": "^1.7.0" } }
能夠看出來,用 parcel 跟 webpack 刷新內容的方式也不同,parcel 並無從新加載網頁。
若是要改端口的話,啓動命令須要改爲:
$ parcel index.html -p 端口
,例如:parcel index.html -p 8081。
本文分別展現了 如何用 webpack 和 Parcel 搭建第一個 ReactApp,雖然部份內容有重複,但你能夠清晰地看到它們之間的差異。
相對於 webpack 來講 parcel 在啓動之更新內容是不從新加載網頁的,只刷新更改的內容,速度比 webpack 快不少。
同時,parcel 也脫離了配置文件,使用很是方便,但這既是優勢也是缺點,沒有配置文件在功能上可能沒有 webpack 那麼強大,可是對於學習 react 來講足夠了。