React结合webpack的具体使用

前端之家收集整理的这篇文章主要介绍了React结合webpack的具体使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

React结合webpack的具体使用

我们一般是使用npm进行安装的,这里我为大家推荐一款淘宝出的cnpm,这个和npm差不多,但是比npm安装的要快很多;

  • 安装命令
  1. npm install cnpm -gd

搭建webpack环境

  • 初始化一个package.json文件
  1. npm init -y
  • 安装webpack
  1. //全局安装
  2. npm install webpack -gd
  3.  
  4. //局部安装
  5. npm install webpack --save-dev
  • 安装babel-loader来把jsx格式的代码编译成javascript
  1. cnpm install --save-dev babel-loader
  • 安装babel-core来转译代码
  1. cnpm install --save-dev babel-core
  1. cnpm install babel-preset-env babel-preset-react --save-dev

运行webpack转移文件

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <Meta charset="UTF-8">
  5. <title>React3</title>
  6. </head>
  7. <body>
  8. <div id="app">
  9. </div>
  10. <script src="/assets/bundle.js"></script>
  11. </body>
  12. </html>
  1. import bar from './bar';
  2.  
  3. bar();
  1. export default function bar() {
  2. console.log(1);
  3. }
  1. module.exports = {
  2. entry: './app.js',output: {
  3. filename: 'bundle.js'
  4. }
  5. }
  • 做完这个以后,我们就可以运行webpack了,
  1. 在命令行输入webpack就可以运行

此时index.html页面的控制台就会输出1;

注释:现在我们的webpack环境就搭建的差不多了,下面我们来进一步的了解webpack;


进一步了解webpack

  • 首先把bar.js改成HelloWorld.js;
  • 安装两个react库,react和react-dom
  1. 这两个库可以一起安装
  2. cnpm install react react-dom --save-dev
编写模块
  • HelloWorld.js
  1. import React from 'react';
  2.  
  3. class HelloWorld extends React.Component{
  4. render(){
  5. return (
  6. <div>
  7. Hello World!!!!
  8. </div>
  9. )
  10. }
  11. }
  12.  
  13. //export {HelloWorld as default};
  14. export default HelloWorld;
  • app.js
  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import HelloWorld from './components/HelloWorld';
  4.  
  5. ReactDOM.render(<HelloWorld/>,document.getElementById("app"));
  • 运行webpack --watch
  1. 在命令行里输入:
  2. webpack --watch

注释:这里我们是用编辑器打开的,下面会通过服务器来打开index.html页面


用服务器打开页面

  • 安装webpack-dev-server来起一个服务器
  1. 全局安装:
  2. npm install webpack-dev-server -gd
  3. 局部安装:
  4. npm install webpack-dev-server --save-dev
  • 输入命令行,通过服务器打开页面
  1. webpack-dev-server --content-base build/

现在的这个网页是打不开的,因为找不着index.html文件,所以我们需要重新整理一下文件,整理后的文件

  1. module.exports = {
  2. entry: './app.js',output: {
  3. filename: 'build/bundle.js' //修改
  4. }
  5. },module: {
  6. rules: [
  7. { test: /\.js$/,exclude: /node_modules/,loader: "react-hot-loader!babel-loader" },]
  8. }
  • 修改完以后我们需要运行一下webpack --watch
  1. 在命令行输入:
  2. webpack --watch
  • 然后运行server
  1. webpack-dev-server --content-base build/

webpack自动刷新

  1. var path = require("path"); //添加
  2. module.exports = {
  3. devtool:'source-map',entry: './app.js',output: {
  4. path:path.resolve(__dirname,"build"),//添加
  5. publicPath:"/assets/",//添加
  6. filename: 'bundle.js'
  7. },]
  8. }
  9. }
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <Meta charset="UTF-8">
  5. <title>React3</title>
  6. </head>
  7. <body>
  8. <div id="app"></div>
  9. <script src="/assets/bundle.js"></script> //修改
  10. </body>
  11. </html>
  1. webpack-dev-server --content-base build/ --inline

此时我们的页面就可以自动刷新了:

webpack热更新

  • 安装react-hot-loader
  1. cnpm install react-hot-loader --save-dev
  1. var path = require("path");
  2. module.exports = {
  3. devtool:'source-map',publicPath:"/assets/",filename: 'bundle.js'
  4. },//修改
  5. ]
  6. }
  7. }
  • 运行热更新
  1. webpack-dev-server --content-base build/ --hot

热更新和自动刷新的区别就是自动刷新是全部刷新,就相当于整个页面都刷新一次,而热更新是只刷新你指定的那个模块;

webpack处理样式

  • 安装style-loader和css-loader
  1. cnpm install style-loader css-loader --save-dev
  1. 创建一个css文件夹,在文件夹里面创建一个main.css文件
  2.  
  3. - main.css
  4.  
  5. body{
  6. background:red;
  7. }
  1. var path = require("path");
  2. module.exports = {
  3. devtool:'source-map',{ test: /\.css$/,loader: "style-loader!css-loader" } //修改
  4. ]
  5. }
  6. }
  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import HelloWorld from './components/HelloWorld';
  4.  
  5. import './css/main.css'; //修改
  6. ReactDOM.render(<HelloWorld/>,document.getElementById("app"));
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <Meta charset="UTF-8">
  5. <title>React3</title>
  6. </head>
  7. <body>
  8. <div id="app">
  9. </div>
  10. <input type="text" /> //修改
  11. <script src="/assets/bundle.js"></script>
  12. </body>
  13. </html>
  • 在命令行里运行
  1. webpack-dev-server --content-base build/ --hot

此时的页面和刚才的一样,只不过是整理了一下;

webpack优化项目结构

  • 创建一个名为components的文件,把HelloWorld.js放进去,这个文件夹就作为模块文件
  • 修改app.js
  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import HelloWorld from './components/HelloWorld'; //修改
  4.  
  5. import './css/main.css';
  6. ReactDOM.render(<HelloWorld/>,document.getElementById("app"));
  1. {
  2. "name": "React3","version": "1.0.0","description": "","main": "index.js","scripts": {
  3. "test": "echo \"Error: no test specified\" && exit 1","start":" webpack-dev-server --content-base build/ --hot" //修改
  4. },"keywords": [],"author": "","license": "ISC","devDependencies": {
  5. "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"
  6. },"dependencies": {
  7. "react": "^15.6.1","react-dom": "^15.6.1"
  8. }
  9. }

此时我们就不用每一次都输入那么长的命令了,直接在命令行里输入 npm start就可以跑起来了;


看完了是不是感觉也没那么难呢!那就快来加入我的团队吧,微信二维码

猜你在找的React相关文章