使用Webpack搭建自己的React项目----1

React 和 Webpack在前端峡谷里可是两位扛耙子的基友了。他们相爱相杀。React官方已经为大伙提供了create-react-app开箱即用。如果是小项目或者是想自己折腾,就需要咱们(提供一块肥皂)提供基于react的webpack配置。废话不多说,下面的教程有眼睛就能学会。
github地址下载demo
git clone -b v0.1 https://github.com/regon-cao/react-webpack-demo.git

创建项目基础代码

  1. 创建文件,安装react。
    mkdir react-webpack-demo
 	cd react-webpack-demo
 	mkdir public
 	cd public
 	touch index.html
 	cd ..
 	mkdir src
 	mkdir resources
 	cd resources
 	mkdir images
 	cd ..
 	touch index.js
 	npm init -y
 	npm i react react-dom 
 	cd src
 	mkdir components
 	cd components
 	touch Hello.js
  1. 在components/Hello.js里添加
import React from 'react';
import reactPng from '../../resources/images/react.png';
export  default class Hello extends React.Component{
   constructor(props) {
       super(props);
   }
   render() {
       const {text} = this.props;
       return <div style={{display:'flex',justifyContent:'center'}}>
           <section>
               <img src={reactPng} alt="react"/>
           </section>
           <main>
               <div>{text}</div>
           </main>
       </div>
   	}
}
  1. 在App.js里添加
import React from 'react';
import Hello from './components/Hello'
export default  class App extends React.Component {
   constructor(props) {
       super(props);
   }
   render () {
       return <div>
               <Hello text="It works, you make a progress!"/>
       </div>
   	}
}
  1. 在index.js里添加
import React from "react";
import ReactDOM from "react-dom";
import App from './src/App.js';
ReactDOM.render(
 <App/>,
document.getElementById('root')
);
  1. 在public/index.html添加
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="theme-color" content="#000000" />
    <meta
      name="description"
      content="react-webpack-demo created using react and webpack"
    />
  </head>
  <body>
    <noscript>You need to enable JavaScript to run this app.</noscript>
    <div id="root" ></div>
  </body>
</html>

配置webpack

  1. 安装webpack环境

    npm i webpack webpack-cli  -D
    
  2. 安装需要用到的webpack插件
    @babel/core,babel-cli,babel-loader,@babel/preset-env:处理es6+语法,输出es5的兼容代码
    @babel/plugin-proposal-class-properties:如果代码里用到了class相关的(比如static defaultProps={}),那么需要安装此插件
    babel-preset-react:处理react和jsx
    url-loader:把图片转为Base64
    file-loader:处理require和import引入的图片文件
    clean-webpack-plugin:移除打包生成的build文件夹
    html-webpack-plugin:把webpack打包的bundle插入到index.html中

npm i @babel/core babel-cli babel-loader @babel/preset-env @babel/plugin-proposal-class-properties babel-preset-react@7.0.0-beta.3  url-loader file-loader clean-webpack-plugin html-webpack-plugin -D
  1. 在根目录下新建一个webpack.config.js,并添加以下代码
    const path = require('path');
    module.exports = {
     mode:'development',
         entry: {
             index: './index.js',
         },
     	output: {
         filename: '[name].bundle.js',
         path: path.resolve(__dirname, 'dist')
     	},
         devtool: 'inline-source-map',
       devServer: {
          contentBase: './dist',
          port:3000
        },
     module:{
         rules:[
             {
                 test: /\.js$/,
                 use: {
                     loader: 'babel-loader',
                       options:{
                         plugins:["@babel/plugin-proposal-class-properties"],
                         presets: [
                             "react",
                             "@babel/preset-env"
                         ],
                     },
                 }
             },
             {
                 test: /\.(png|jpg|gif|jpeg)$/,
                 use: [
                     {
                         loader: 'url-loader',
                         options: {
                             limit: 8192,
                             esModule:false
                         }
                     }
                 ]
             },
    
             ]
     },
     plugins: [
     new CleanWebpackPlugin(),
     new HtmlWebpackPlugin({
         title: 'react-webpack-demo',
         template: 'public/index.html'
     })
     ]
     };
    
  2. 在package.json里添加
    "scripts": {
    		"start": "webpack-dev-server",
    		"build":"webpack"
    },
    

运行项目

在项目根目录下运行

npm run start

运行成功的话你会看到
使用Webpack搭建自己的React项目----1_第1张图片
今天的小教程就到此,咱们择日再继续react和webpack的基友之旅

你可能感兴趣的:(前端)