React結合webpack的具體使用javascript
咱們通常是使用npm進行安裝的,這裏我爲你們推薦一款淘寶出的cnpm,這個和npm差很少,可是比npm安裝的要快不少;css
npm install cnpm -gd
npm init -y
//全局安裝 npm install webpack -gd //局部安裝 npm install webpack --save-dev
cnpm install --save-dev babel-loader
cnpm install --save-dev babel-core
cnpm install babel-preset-env babel-preset-react --save-dev
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>React3</title> </head> <body> <div id="app"> </div> <script src="/assets/bundle.js"></script> </body> </html>
import bar from './bar'; bar();
export default function bar() { console.log(1); }
module.exports = { entry: './app.js', output: { filename: 'bundle.js' } }
在命令行輸入webpack就能夠運行
此時index.html頁面的控制檯就會輸出1;html
註釋:如今咱們的webpack環境就搭建的差很少了,下面咱們來進一步的瞭解webpack;java
這兩個庫能夠一塊兒安裝 cnpm install react react-dom --save-dev
import React from 'react'; class HelloWorld extends React.Component{ render(){ return ( <div> Hello World!!!! </div> ) } } //export {HelloWorld as default}; export default HelloWorld;
import React from 'react'; import ReactDOM from 'react-dom'; import HelloWorld from './components/HelloWorld'; ReactDOM.render(<HelloWorld/>,document.getElementById("app"));
在命令行裏輸入: webpack --watch
註釋:這裏咱們是用編輯器打開的,下面會經過服務器來打開index.html頁面;node
全局安裝: npm install webpack-dev-server -gd 局部安裝: npm install webpack-dev-server --save-dev
webpack-dev-server --content-base build/
如今的這個網頁是打不開的,由於找不着index.html文件,因此咱們須要從新整理一下文件,整理後的文件:react
module.exports = { entry: './app.js', output: { filename: 'build/bundle.js' //修改 } }, module: { rules: [ { test: /\.js$/, exclude: /node_modules/, loader: "react-hot-loader!babel-loader" }, ] }
在命令行輸入: webpack --watch
webpack-dev-server --content-base build/
var path = require("path"); //添加 module.exports = { devtool:'source-map', entry: './app.js', output: { path:path.resolve(__dirname,"build"), //添加 publicPath:"/assets/", //添加 filename: 'bundle.js' }, module: { rules: [ { test: /\.js$/, exclude: /node_modules/, loader: "react-hot-loader!babel-loader" }, ] } }
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>React3</title> </head> <body> <div id="app"></div> <script src="/assets/bundle.js"></script> //修改 </body> </html>
webpack-dev-server --content-base build/ --inline
此時咱們的頁面就能夠自動刷新了:webpack
cnpm install react-hot-loader --save-dev
var path = require("path"); module.exports = { devtool:'source-map', entry: './app.js', output: { path:path.resolve(__dirname,"build"), publicPath:"/assets/", filename: 'bundle.js' }, module: { rules: [ { test: /\.js$/, exclude: /node_modules/, loader: "react-hot-loader!babel-loader" },//修改 ] } }
webpack-dev-server --content-base build/ --hot
熱更新和自動刷新的區別就是自動刷新是所有刷新,就至關於整個頁面都刷新一次,而熱更新是隻刷新你指定的那個模塊;web
cnpm install style-loader css-loader --save-dev
建立一個css文件夾,在文件夾裏面建立一個main.css文件; - main.css: body{ background:red; }
var path = require("path"); module.exports = { devtool:'source-map', entry: './app.js', output: { path:path.resolve(__dirname,"build"), publicPath:"/assets/", filename: 'bundle.js' }, module: { rules: [ { test: /\.js$/, exclude: /node_modules/, loader: "react-hot-loader!babel-loader" }, { test: /\.css$/, exclude: /node_modules/, loader: "style-loader!css-loader" } //修改 ] } }
import React from 'react'; import ReactDOM from 'react-dom'; import HelloWorld from './components/HelloWorld'; import './css/main.css'; //修改 ReactDOM.render(<HelloWorld/>,document.getElementById("app"));
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>React3</title> </head> <body> <div id="app"> </div> <input type="text" /> //修改 <script src="/assets/bundle.js"></script> </body> </html>
webpack-dev-server --content-base build/ --hot
此時的頁面和剛纔的同樣,只不過是整理了一下;npm
import React from 'react'; import ReactDOM from 'react-dom'; import HelloWorld from './components/HelloWorld'; //修改 import './css/main.css'; ReactDOM.render(<HelloWorld/>,document.getElementById("app"));
{ "name": "React3", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start":" webpack-dev-server --content-base build/ --hot" //修改 }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { "babel-core": "^6.25.0", "babel-loader": "^7.1.1", "babel-preset-env": "^1.6.0", "babel-preset-react": "^6.24.1", "css-loader": "^0.28.4", "style-loader": "^0.18.2", "webpack": "^3.4.0", "webpack-dev-server": "^2.6.1" }, "dependencies": { "react": "^15.6.1", "react-dom": "^15.6.1" } }
此時咱們就不用每一次都輸入那麼長的命令了,直接在命令行裏輸入 npm start就能夠跑起來了;json
看完了是否是感受也沒那麼難呢!那就快來加入個人團隊吧,微信二維碼: