从0开始搭建一个简单的webpack react项目

本文详述了从头开始搭建一个简单的webpack React项目的步骤,包括初始化项目、安装webpack、配置不同环境的webpack文件、创建html模板、加载资源、配置开发服务器、实现热更新以及引入react和使用babel编译jsx。
摘要由CSDN通过智能技术生成

1 初始化一个空项目

npm init -y

2 install webpack

npm install --save-dev webpack

3 新建webpack配置文件
在根目录下新建build文件夹,分别新建
webpack.common.js 通用配置
webpack.dev.js 开发配置
webpack.prod.js 线上配置

4 html模板

npm install --save-dev html-webpack-plugin

在根目录下新建index.html作为插件html-webpack-plugin的模板

webpack.dev.js下

  plugins: [
        new HtmlWebpackPlugin({
          title: 'test',
          template:'index.html'
        }),
        ....
      ],

5 加载资源
1 加载css

npm install --save-dev style-loader css-loader
  {
            test: /\.css$/i,
            use: ['style-loader', 'css-loader'],
  },

2 配置sass

npm install --save-dev sass-loader
// node-sass 要用镜像 国内被墙了
cnpm install --save-dev node-sass
  {
                test: /\.scss$/i,
                use: ['style-loader', 'css-loader','sass-loader'],
   },

3 加载图片

npm install --save-dev file-loader
或者
npm install --save-dev url-loader

url-loader多了一个大小限制,小于这个大小的自动转换为dataUrl

  {
                test: /\.(png|svg|jpg|gif)$/,
                use: [
                    'file-loader'
                ]
  }

6 配置开发服务器
因为webpack-dev-server也是基于express的封装。所以干脆直接自己配express。

npm install --save-dev express webpack-dev-middleware

根目录下新建server.js文件

const express = require('express');
const webpack = require('webpack');
const webpackDevMiddleware = require('webpack-dev-middleware');

const app = express();
const config = require('./build/webpack.common.js');
const compiler = webpack(config);

// Tell express to use the webpack-dev-middleware and use the webpack.config.js
// configuration file as a base.
app.use(webpackDevMiddleware(compiler, {
  publicPath: config.output.publicPath
}));

// Serve the files on port 3000.
app.listen(3000, function () {
  console.log('Example app listening on port 3000!\n');
});

7 配置热更新
在上一步的基础上

npm install --save-dev webpack-hot-middleware

1 webpack.dev.js内引入插件

   plugins: [
        new webpack.HotModuleReplacementPlugin(),
    ]

2 webpack.common.js内在入口处配置热更新配置

 entry: [
        'webpack-hot-middleware/client?path=/__webpack_hmr&reload=true&timeout=20000',
        './src/index.js',
      ],

3 server.js 出应用

app.use(require("webpack-hot-middleware")(compiler));

参考https://github.com/webpack-contrib/webpack-hot-middleware

8 引入react以及babel

 npm install react --save
 npm install react-dom --save

因为jsx浏览器是无法解析的,需要用babel编译一遍

babel-core
用于将js解析成ast

npm install --save-dev babel-core

preset-react
用于适配react语法

npm install --save-dev @babel/preset-react

preset-env
用于适配浏览器版本

npm install --save-dev @babel/preset-env

babel-loader
用于webpack配合babel自动解析react语法

npm install --save-dev babel-loader

webpack.common.js下配置rule

     {
        test: /\.(js|jsx)$/,
        exclude: /node_modules/, //不包含node_modules目录下的js文件
        use: {
          loader: 'babel-loader',
        },
      },

在根目录下新建babel.config.js

module.exports = {
    presets:[
        ["@babel/preset-env"],
        ["@babel/preset-react"]
    ]
}

在index.js内测试react语法

import './index.css'
import React from 'react';
import ReactDOM from 'react-dom';
 ReactDOM.render(
  <div className='box'>
    <h1 className='text'>Hello!</h1>
  </div>,
  document.getElementById('root')
);
if (module.hot) {
    module.hot.accept();
}

效果
在这里插入图片描述
项目结构
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值