搭建React开发环境-webpack实现

周末在家学会React前端知识,记录下来,方便备查。
webpack版本:webpack5
编译器:vscode

第一步、新建项目及初始化

1)新建项目文件夹
可命名为 my_webpack
2)初始化项目
使用命令 npm init -y,即可生成 package.json 文件夹,如下图所示。

在这里插入图片描述

第二步、安装插件

1)安装react 插件
执行命令 npm i --save react react-dom 执行完毕后,在目录下会生成 node_modules 文件夹package_lock.json文件,如下图所示。

在这里插入图片描述
2)安装 webpack 插件
执行命令 npm i -D webpack webpack-cli,安装如下图所示。
在这里插入图片描述
新建 webpack配置文件,命名为 webpack.config.js

3)安装babel插件
执行命令 npm i -D babel-loader @babel/core @babel/preset-react @babel/preset-env,并在 webpack.config.js 文件module中设置规则,如下图所示。
在这里插入图片描述

4)安装html-webpack-plugin插件
为实现在index.html 中自动引入 hash后的js文件
执行命令npm i -D html-webpack-plugin,并在 webpack.config.js 中引入。

const HtmlWebpackPlugin = require('html-webpack-plugin');// webpack.config.js 中添加以下内容
plugins:[new HtmlWebpackPlugin({template: './src/index.html'})]
第三步、主体各个文件

项目目录如下图所示。
在这里插入图片描述

项目主要由以下几部分组成
dist 文件为 build 生成的js 和html
node_modules文件 为下载的依赖
public文件 为公共的 index文件
src文件 为jsx css等文件

以下分别是各个文件的内容
package.json

// package.json 文件内容,主要为自动生成
{"name": "my_webpack","version": "1.0.0","description": "","main": "index.js","scripts": {"prebuild":"rimraf ./dist","build": "webpack --config ./webpack.config.js"},"keywords": [],"author": "","license": "ISC","dependencies": {"react": "^18.2.0","react-dom": "^18.2.0"},"devDependencies": {"@babel/core": "^7.23.7","@babel/preset-env": "^7.23.7","@babel/preset-react": "^7.23.3","babel-loader": "^9.1.3","webpack": "^5.89.0","webpack-cli": "^5.1.4","webpack-dev-server": "^4.15.1"}
}

webpack.config.js

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');module.exports={// 环境mode:'development',// 入口entry:'./src/index.jsx',// 输出文件配置信息output: {// 文件名添加哈希filename : 'bundle.[hash].js',// 指定文件目录path: path.resolve(__dirname,'dist')},resolve:{// 指定解析文件的格式extensions:['.jsx','...']},module:{// 设置规则,不同的加载器rules:[{test: /\.jsx$/,use:{loader : 'babel-loader',// preset-env处理浏览器新的规则options: {presets:['@babel/preset-react','@babel/preset-env']}}},{test:/\.css$/,use:['style-loader','css-loader']}]},plugins:[new HtmlWebpackPlugin({template: './public/index.html'})]
}
第四步、运行

执行编译命令 ==npm run build ==,检查配置并运行。
在这里插入图片描述
在浏览器中输入 http://localhost:8080/ 即可查看效果。

1)安装 rimraf 插件
为保证每次执行前,删除之前生成的文件,可执行命令npm -i -D rimraf,在 package.json 文件中添加 prebuild ,即在build前执行。

  "scripts": {"prebuild":"rimraf ./dist","build": "webpack --config ./webpack.config.js"}

2)更改自动刷新
安装webpack-dev-server插件,可执行命令npm i -D webpack-dev-server

异常处理

【1】npm版本
报错:This is probably not a problem with npm. There is likely additional logging output above
处理方案:
// 清除缓存
npm cache clear --force
// 重装npm
npm install
【2】变量输入错误
报错:Invalid configuration object. Webpack has been initialized using a configuration object that does not match the API schema.
configuration.output has an unknown property ‘patch’. These properties are valid:
处理方案
变量path敲错了,写成了patch,改成path
【3】缺少插件
报错:Module not found: Error: Can’t resolve ‘style-loader’ in ‘D:\MyLean\my_webpack’
处理方案
安装插件,执行命令 npm install --save-dev style-loader

参考资料

【1】https://www.bilibili.com/video/BV1Lo4y1k73W

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/606047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Centos7 MongoDB安装

基础配置(Centos7.5镜像,2核2GB内存,50GB硬盘) 主机名IPmongodb192.168.100.124 (在MongoDB官网有linux安装MongoDB的步骤) (1)配置yum源 [rootmongodb ~]# cat /etc/yum.repos.d…

Go语言学习之旅-开篇

Go语言学习之旅-开篇 前言 最近对Go语言非常感兴趣,准备花一段时间来学习,此系列文章用于学习笔记整理与学习记录。 简介 Go(又称 Golang)是 Google的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强…

DDIA 第十一章:流处理

本文是《数据密集型应用系统设计》(DDIA)的读书笔记,一共十二章,我已经全部阅读并且整理完毕。 采用一问一答的形式,并且用列表形式整理了原文。 笔记的内容大概是原文的 1/5 ~ 1/3,所以你如果没有很多时间…

vue2中this.$emit(“update:xx“,value)和xx.sync的用法在vue3中有什么变化

在 Vue 3 中,v-model 语法和 this.$emit("update:xx", value) 的用法略有变化,而 .sync 修饰符已经不再存在。下面是 Vue 2 中和 Vue 3 中的比较: Vue 2 中的写法: 使用 this.$emit("update:xx", value)&am…

如何修复 SQL Server 数据库中的恢复挂起状态?

当我们想与关系数据库交互时,SQL 就会出现并帮助用户与数据库进行交互。SQL 从高级语言中获取用户的输入,然后访问将代码转换为机器可理解的形式。SQL 确实会恢复数据库文件,但有时 SQL 服务器恢复暂挂阶段会进入帐户,这会停止恢复…

Java Collections类排序学习

jdk自带排序学习,比如我们写一个排序代码 List score new ArrayList();score.add(1);score.add(12);score.add(45);score.add(67);Collections.sort(score); 来看一下sort的实现 /*** Sorts the specified list into ascending order, according to the* {linkpla…

系统编程--VIM特辑

这里写目录标题 vim三种工作模式进入文本模式的快捷键在命令模式下进行文本编辑删除快捷键复制粘贴查找替换查找替换 vim其他操作 vim打造简易IDE vim 三种工作模式 具体可见第二章对vim的详细介绍 需要注意的是,在末行模式下执行完一次命令,就可以直接…

企业进行股权众筹的时候要注意哪些问题?

1. 目标与风险 首先,企业要明确众筹的目标和期望。股权众筹不仅是为了筹集资金,更是为了扩大人脉、增加品牌曝光度。因此,企业在发起众筹时,应制定详细的计划和目标,并对可能出现的风险进行充分评估。例如,…

编写.NET的Dockerfile文件构建镜像

创建一个WebApi项目,并且创建一个Dockerfile空文件,添加以下代码,7.0代表的你项目使用的SDK的版本,构建的时候也需要选择好指定的镜像tag FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base WORKDIR /app EXPOSE 80 EXPOSE 443F…

报表控件Stimulsoft 2023回顾:都做了哪些产品的改变?

在2023年过去一年中,报表控件Stimulsoft 针各类控件都做了重大改变,其中新增了某些产品、同时加强了很多产品的性能和UI设计,更加符合开发者需求,下面就跟随小编一起来回顾,具体都有哪些↓↓↓ Stimulsoft Ultimate &…

uniapp打包后图片资源会重复

hbuildx打包后文件过大,多方优化后,发现会生成重复的图片,如图: 临时解决方法: lib.zip chain-webpack.js_.zip 解压 lib.zip 替换到 HBuilderX根目录/plugins/uniapp-cli/node_modules/dcloudio/uni-cli-shared/lib…

【无标题】MySQL8修改非root用户密码

首先查看修改的用户信息,我这里用户名是demo,host是**%** 然后使用alter命令修改密码 这里USER后的参数是第一步里查询得到的user与host的组合。ALTER USER demo% IDENTIFIED WITH mysql_native_password BY 新密码;可能会出现的错误: 如果百…

DNS被劫持怎么办

DNS劫持是一种网络攻击,攻击者通过篡改DNS记录,将特定域名的解析结果指向错误的IP地址,从而实现对特定网站的访问劫持或流量劫持。这种攻击方式严重影响了用户的上网体验,并可能导致用户隐私泄露。下面也从原因、危害以及应对的策…

Spring中的工厂类

目录 1.ApplicationContext 4.2.BeanFactory 1.ApplicationContext ApplicationContext的实现类,如下图: ClassPathXmlApplicationContext:加载类路径下 Spring 的配置文件 FileSystemXmlApplicationContext:加载本地磁盘下 S…

TypeScript 从入门到进阶之基础篇(五) 枚举类型篇

系列文章目录 TypeScript 从入门到进阶系列 TypeScript 从入门到进阶之基础篇(一) ts基础类型篇TypeScript 从入门到进阶之基础篇(二) ts进阶类型篇TypeScript 从入门到进阶之基础篇(三) 元组类型篇TypeScript 从入门到进阶之基础篇(四) symbol类型篇 持续更新中… 文章目录 …

Ubuntu安装Anaconda并创建虚拟环境

1. 在Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror页面的中后部找到相应Server的最新版本。 2. 点击下载发文时的最新版本Anaconda3-2023.09-0-Linux-x86_64.sh。 3. 上传后,执行bash Anaconda3-2023.09-0-Linux-x86_64.…

【性能测试入门】:压力测试概念!

压力测试可以验证软件应用程序的稳定性和可靠性。压力测试的目标是评估软件在极端负载条件下的鲁棒性和错误处理能力,并确保软件在紧急情况下不会崩溃。它甚至可以进行超出软件正常工作条件的测试,并评估软件在极端条件下的工作方式。 在软件工程中&…

Arrays 的使用

Arrays 概述 提供了数组操作的相关方法&#xff0c;连接数组和集合 asList 返回指定数组的列表列表和数组的引用位置相同 Integer[] arrs new Integer[] {1,2,3,4,5,6,7,8,9};List<Integer> list Arrays.asList(arrs);System.out.println(list);arrs[5] 100;Syste…

【设计模式之美】SOLID 原则之二:开闭原则方法论、开闭原则如何取舍

文章目录 一. 如何理解“对扩展开放、修改关闭”&#xff1f;二. 修改代码就意味着违背开闭原则吗&#xff1f;三. 如何做到“对扩展开放、修改关闭”&#xff1f;四. 如何在项目中灵活应用开闭原则&#xff1f; 一. 如何理解“对扩展开放、修改关闭”&#xff1f; 具体的说&a…

如何判断模型陷入局部最优解的陷阱?

判断一个模型是否陷入了局部最优解的陷阱并不总是直观的&#xff0c;但有一些迹象和方法可以帮助我们做出判断&#xff1a; 训练进程停滞&#xff1a; 如果模型的训练误差或验证误差在经过多次迭代后停止改善或改善非常缓慢&#xff0c;这可能是一个迹象。 训练和验证误差的差…