webpack5搭建react框架-开发环境配置

news/2024/7/15 17:34:16 标签: react.js, webpack, javascript

webpack5react_0">webpack5配置react基础开发环境

1、前言

之前已经使用webpack5进行了react框架基础环境的搭建(基础环境配置),但是每次修改完项目代码都需要重新执行npm run build指令进行构建,并且需要刷新浏览器中的页面查看最新修改的代码结果,这样会给我们平时的开发带来非常多的阻力,所以今天来进行开发环境的配置,使我们的项目每次修改完代码后就可以自动的更新最新的内容。

2、本地服务配置

在本地开发的时候需要借助webpack-dev-server插件开启一个本地服务,这样就可以在本地启动的服务上托管我们的静态资源,代码或者设置代理等等。

另外我们的基础环境已经配置好,所以就不需要额外的进行配置,直接使用webpack-merge这个库进行合并就可以。

安装插件

npm i webpack-dev-server webpack-merge -D

webpack.dev.js文件下进行开发环境配置

// webpack.dev.js
const { resolve } = require('./tools');
const { merge } = require('webpack-merge'); // 引入合并方法
const baseConfig = require('./webpack.base'); // 引入基础配置

module.exports = merge(baseConfig, {
  mode: 'development', // 设置开发模式为development
  devServer: {
    port: 8888, // 设置服务端口号
    open: true, // 是否自动打开浏览器
    host: "0.0.0.0", // 使用本机ip启动
    client: {
      overlay: { // 出现编译警告或错误时是否全屏覆盖
        errors: true,
        warnings: false,
      },
    },

    historyApiFallback: { // 处理history路由404问题
      disableDotRule: true,
    },
    proxy: { // 添加本地代理,处理跨域问题

    },
    static: [ // 可以配置从目录提供静态文件
      {
        directory: resolve('public') // 告诉服务器从哪里提供内容, 可以有多个
      }
    ]
  }
})

然后在package.json文件内增加开发环境执行的指令

// package.json
  "scripts": {
    "dev": "webpack-dev-server --config config/webpack.dev.js"
  },

当开启本地服务后将输出的资源公共前缀路径修改成绝对路径。

// webpack.base.js
module.exports = {
  output: {
    publicPath: '/', // 资源公共前缀路径
  },
}

然后执行npm run dev开启本地开发环境查看效果

在这里插入图片描述
在地址中输入托管的静态资源目录下的文件名,查看访问静态资源效果:

在这里插入图片描述

3、热更新模块配置

在我们开发环境时不想每次改动都触发浏览器刷新项目页面时可以对webpack进行热更新配置(我个人更习惯每次修改后进行页面刷新),使我们的修改在不刷新页面的情况下生效,并且保留组件的状态。

在开发环境下对样式文件(css || less等)进行修改时,已经是实时热更新效果不需要单独进行配置,因为我们使用的style-loader已经做了替换样式的热替换功能。

首先在components文件下创建一个新的test.jsx组件,并且在components下创建css样式文件test.less,文件内容如下:

// test.less
.test_content {
  color: black;
}
// test.jsx
import React from 'react';
import('./css/test.less');

export default function test() {
  console.log(111111);
  return (
    <div>
      <h2 className="test_content">test1</h2>
    </div>
  );
}

然后执行 npm run dev启动项目,将test.less文件下color属性改变查看页面更新不管我们修改几次样式页面都不会刷新而是直接渲染,效果如下:

在这里插入图片描述

如果要使react组件拥有热更新效果在webpack5中还需要使用@pmmmwh/react-refresh-webpack-plugin (插件地址)和react-refresh插件来实现

安装插件

npm i @pmmmwh/react-refresh-webpack-plugin react-refresh -D

修改webpack.dev.js文件配置,使用安装的插件

// webpack.dev.js
const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin');

module.exports = merge(baseConfig, {
  plugins: [
    new ReactRefreshWebpackPlugin()
  ],
})

然后修改babel.config.js 文件,给babel-loader增加配置

// babel.config.js
module.exports = {
  plugins: [require.resolve('react-refresh/babel')]
}

最后在index.js文件下增加webpack热更新api调用

// index.js
if (module.hot) module.hot.accept();

查看修改内容后页面加载效果:
在这里插入图片描述

4、结语

使用webpack5搭建开发环境就完成了,已经可以启动项目并且进行基础的开发,当然还有很多配置可以进行优化,后面等基础环境完全配置好后在统一进行优化。


http://www.niftyadmin.cn/n/205162.html

相关文章

学习Qt的意义在于?

Qt是一种跨平台的C图形用户界面应用程序开发框架。它是由挪威的Trolltech公司&#xff08;现在是Qt公司的一部分&#xff09;开发的&#xff0c;现在由Digia公司和Qt公司维护。Qt提供了一套API和工具&#xff0c;可以帮助开发人员创建高质量、可扩展、易于维护的应用程序。Qt支…

素材管理系统概念导入

引言 由于工作上的调整安排&#xff0c;有幸参加营销素材管理系统的产品建设工作中&#xff0c;营销宣传领域一直是我的知识盲区&#xff0c;所以素材管理系统的产品建设对我来说是个富有挑战性的工作&#xff0c;在这过程中&#xff0c;我也秉持着“好记性不如烂笔头”的原则&…

HTML 标签大全(包含语义与解释)

2.12 HTML 标签大全 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>HTML总结</title> </head> <body> <a href"https://blog.csdn.net/qq_62283694?spm1000.2115.3001.5…

企业如何保护浏览器安全?

在日常工作中&#xff0c;大多数员工都需要使用浏览器浏览网页&#xff0c;访问网站内容&#xff0c;收发邮件等。市场有各种浏览器&#xff0c;但不管是用哪种浏览器&#xff0c;你能确认你常用的浏览器真的安全吗&#xff1f;而且这些日常使用的浏览器&#xff0c;真的适合企…

部署nginx(无网络)

采取方案&#xff1a;使用docker进行部署 1. 安装docker 参考链接&#xff1a; https://docs.docker.com/engine/install/binaries/下载链接&#xff1a; https://download.docker.com/linux/static/stable/x86_64/docker-17.03.1-ce.tgz 解压 tar xzvf /path/to/.tar.gz 复…

Twitter-高性能hash_map

学习twitter的高性能散列表源码&#xff1a; 个人认为Twitter散列表的优点&#xff1a; 1、使用C宏定义实现C泛型的思想&#xff1b; 2、散列函数冲突小&#xff1b; 3、使用bitmap思想&#xff0c;标志位占用空间小&#xff1b; 4、自动扩展容量&#xff0c;判断扩容的条件&am…

接口自动化测试也能轻松+愉快:Excel助力测试框架的完善

目录&#xff1a;导读 前言 设计流程图 Excel和结果预览 框架结构 Excel相关 日志封装 正则操作 核心操作 测试操作 测试报告发送邮件类 运行 前言 在进行接口自动化测试时&#xff0c;选择一个适合自己的测试框架非常重要。 在众多的测试框架中&#xff0c;Excel…

工作中英语学习的几个阶段

1. 学习英语的几个阶段 在汽车行业中&#xff0c;英语是一种重要的工作语言。为了更好地掌握这个行业&#xff0c;我们需要了解英语熟练度的几个等级。英语熟练度通常被分为以下几个等级&#xff1a; 初级水平&#xff1a;能够理解常见的日常用语和简单的句子。在沟通中需要依…