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
看完了是否是感受也没那么难呢!那就快来加入个人团队吧,微信二维码: