使用Webpack搭建React项目:从零开始

🤍 前端开发工程师、技术日更博主、已过CET6
🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1
🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》
🍚 蓝桥云课签约作者、上架课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》
文章目录
- 引言
- 安装Node.js和npm
- 创建项目目录
- 初始化npm项目
- 安装Webpack和React
- 配置Webpack
- 安装Babel
- 创建React组件
- 创建HTML文件
- 启动开发服务器
- 结论
引言
React是一个流行的前端JavaScript库,用于构建用户界面。在开发React应用时,Webpack是一个强大的工具,可以帮助我们打包和优化React代码。本文将介绍如何使用Webpack搭建一个基本的React项目。
安装Node.js和npm
在开始之前,确保你已经安装了Node.js和npm。你可以从Node.js官网下载并安装Node.js,npm会随Node.js一起安装。
创建项目目录
在你的工作目录中,创建一个新的项目目录,并进入该目录:
mkdir react-webpack-project
cd react-webpack-project
初始化npm项目
在项目目录中,运行以下命令来初始化一个新的npm项目:
npm init -y
这将创建一个package.json文件,用于管理项目的依赖。
安装Webpack和React
接下来,安装Webpack和React:
npm install --save-dev webpack webpack-cli webpack-dev-server
npm install react react-dom
这将安装Webpack、Webpack CLI、Webpack Dev Server和React。
配置Webpack
在项目目录中,创建一个名为webpack.config.js的文件,并添加以下内容:
const path = require('path');module.exports = {entry: './src/index.js',output: {path: path.resolve(__dirname, 'dist'),filename: 'bundle.js'},module: {rules: [{test: /\.js$/,exclude: /node_modules/,use: {loader: 'babel-loader',options: {presets: ['@babel/preset-react']}}}]},devServer: {contentBase: './dist'}
};
这将配置Webpack的入口文件、输出文件、模块规则和开发服务器。
安装Babel
Babel是一个JavaScript编译器,用于将ES6+代码转换为向后兼容的JavaScript代码。在Webpack中,我们可以使用babel-loader来加载JavaScript文件,并使用@babel/preset-react来转换React代码。
安装Babel:
npm install --save-dev @babel/core babel-loader @babel/preset-react
创建React组件
在项目目录中,创建一个名为src的目录,并在其中创建一个名为index.js的文件。添加以下内容:
import React from 'react';
import ReactDOM from 'react-dom';function App() {return (<div><h1>Hello, React!</h1></div>);
}ReactDOM.render(<App />, document.getElementById('root'));
这将创建一个简单的React组件,并将其渲染到index.html文件中的root元素。
创建HTML文件
在项目目录中,创建一个名为index.html的文件,并添加以下内容:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>React Webpack Project</title>
</head>
<body><div id="root"></div>
</body>
</html>
这将创建一个基本的HTML文件,其中包含一个root元素,用于渲染React组件。
启动开发服务器
在package.json文件中,添加一个名为start的脚本:
"scripts": {"start": "webpack serve --open"
}
然后,运行以下命令来启动开发服务器:
npm start
这将启动Webpack Dev Server,并在浏览器中打开项目。
结论
通过以上步骤,你已经成功使用Webpack搭建了一个基本的React项目。Webpack提供了强大的模块打包功能,使得代码更加模块化、优化和兼容。通过配置Webpack和Babel,开发者可以轻松处理React代码,并实现实时预览和热更新功能。
希望本文能帮助你更好地理解和使用Webpack搭建React项目,提升你的React编程水平。无论是构建大型应用、构建库或框架,还是构建静态网站,Webpack都将是你不可或缺的工具。祝你编程愉快!
相关文章:
使用Webpack搭建React项目:从零开始
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…...
STM32提高篇: CAN通讯
STM32提高篇: CAN通讯 一.CAN通讯介绍1.物理层2.协议层二.STM32CAN外设1.CAN控制器的3种工作模式2.CAN控制器的3种测试模式3.功能框图三.CAN的寄存器介绍1.环回静默模式测试2.双击互发测试四.CAN的HAL代码解读一.CAN通讯介绍 CAN(Controller Area Network 控制器局域网,简称…...
25.Reactor
预备知识 std::bind template <class Fn, class... Args>/* unspecified */ bind (Fn&& fn, Args&&... args);解释: std::bind(&TcpServer::Accepter, this, std::placeholders::_1) 这段代码使用了 C11 中的 std::bind 函数࿰…...
Linux进程间通信——有名管道
一.概念 函数形式:int mkfifo(const char \*filename,mode_t mode); 功能:创建管道文件 参数:管道文件文件名\路径,权限,创建的文件权限仍然和umask有关系。 返回值:创建成功返回0,创建失败返回…...
Axure RP9.0教程: 查询条件隐藏与显示(综合了动态面板状态切换及展开收缩效果实现)
文章目录 引言I 原型显示/隐藏搜索框思路步骤详细操作II 若依 ruoyi 显示/隐藏搜索框 & 显示隐藏列自定义设置显示隐藏列显示/隐藏搜索框引言 数据筛选有大量的查询条件时,可以选择查询隐藏效果。 I 原型显示/隐藏搜索框 综合了动态面板状态切换及展开收缩效果实现 思…...
铁电液晶(FLC)与反铁电液晶(AFLC)
### **铁电液晶(FLC)与反铁电液晶(AFLC)的原理、区别及应用** --- ## **1. 基本原理** ### **(1)铁电液晶(Ferroelectric Liquid Crystal, FLC)** - **分子结构**: …...
【漫话机器学习系列】183.非参数方法(Non-parametric Methods)
非参数方法(Non-parametric Methods)详解 概述 非参数方法是一类在统计学和机器学习中广泛应用的技术,它的特点是不对特征值和目标值之间的关系做具体的假设。与传统的参数方法(如线性回归、逻辑回归等)不同…...
智能驾驶中预测模块简介
1.轨迹预测的定义 轨迹预测是自动驾驶系统“感知-预测-规控”流程中的核心环节,位于感知与规划模块之间,起到承上启下的作用。感知系统负责检测道路环境中的动态和静态元素,包括车辆、行人、自行车、交通标志、车道线等,而预测模…...
剑指offer经典题型(一)
本期我们将开始进行剑指offer中经典题型的学习。 数组相关 题目1:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输…...
ctfshow VIP题目限免 版本控制泄露源码2
根据题目提示是版本控制泄露源码 版本控制(Version Control)是一种在软件开发和其他领域中广泛使用的技术,用于管理文件或项目的变更历史。 主流的版本控制工具: Git:目前最流行的分布式版本控制系统。SVN&am…...
蓝牙跳频扩频技术的作用:提升抗干扰能力与通信可靠性的核心机制
在无线通信技术领域,蓝牙(Bluetooth)以其短距离、低功耗和高兼容性成为连接电子设备的首选方案。其核心技术之一 ——跳频扩频(Frequency Hopping Spread Spectrum, FHSS),是蓝牙在2.4 GHz ISM频段复杂电磁…...
Kafka 如何保证消息可靠性?
Kafka 保证消息可靠性主要通过以下几个机制来实现,从生产者到消费者的整个链路上都设计了相应的保障措施: 1. 生产者(Producer)端的可靠性 ✅ a. acks 参数(确认机制) acks0:生产者不等待任何…...
ngx_ssl_init
定义在 src\event\ngx_event_openssl.c ngx_int_t ngx_ssl_init(ngx_log_t *log) { #if OPENSSL_VERSION_NUMBER > 0x10100003Lif (OPENSSL_init_ssl(OPENSSL_INIT_LOAD_CONFIG, NULL) 0) {ngx_ssl_error(NGX_LOG_ALERT, log, 0, "OPENSSL_init_ssl() failed")…...
docker swarm常用命令
1、初始化Swarm集群 用于初始化一个Swarm集群,并将当前节点设置为Manager节点。 用法:docker swarm init --advertise-addr <Manager节点IP> # docker swarm init --advertise-addr 192.168.1.100 这会将当前节点初始化为Swarm集群的管理节点&…...
硬盘加密安全
硬盘加密性能需求核心指标与优化策略 1. 核心性能指标 读写速度影响: 硬盘加密需平衡安全性与数据吞吐效率。以BitLocker为例,其对4K随机写入性能的影响最高可达45%2,但在现代CPU(支持AES-NI指令集)下…...
推荐系统(二十二):基于MaskNet和WideDeep的商品推荐CTR模型实现
在上一篇文章《推荐系统(二十一):基于MaskNet的商品推荐CTR模型实现》中,笔者基于 MaskNet 构建了一个简单的模型。笔者所经历的工业级实践证明,将 MaskNet 和 Wide&Deep 结合应用,可以取得不错的效果&…...
Ubuntu挂载HDD迁移存储PostgreSQL数据
关联博客:windows通用网线连接ubuntu实现ssh登录、桌面控制、文件共享 背景: 在个人ubuntu机器上安装了pgsql,新建了一张表插入了2000w数据用于模拟大批量数据分页查询用,但是发现查询也不慢(在公司测试环境查询1700…...
Flink CDC Pipeline mysql to doris
版本兼容 flink 与 flink-cdc版本兼容 flink 与doris版本兼容 运行同步程序 最终在 flink-1.20.1 与 flink-cdc-3.1.1 跑通测试 配置yaml文件 [rootchb1 flink-cdc-3.1.1]# cat mysql2doris.yaml ##################################################################…...
LaTeX、KaTeX、Markdown 的用法
文章目录 1. LaTeX 用法概述1.1 LaTeX简介1.2 优点与应用场景2. LaTeX 基础语法2.1 文档结构2.2 文本格式化2.3 数学公式3. KaTeX 用法3.1 KaTeX简介3.2 基本使用方法3.2.1 引入KaTeX3.2.2 渲染数学公式3.2.3 自定义配置3.3 与LaTeX的兼容性4. Markdown 用法4.1 Markdown简介4.…...
Git 教程:从 0 到 1 全面指南 教程【全文三万字保姆级详细讲解】
目录 什么是 Git ? Git 与 SVN 区别 Git 安装配置 Linux 平台上安装 Centos/RedHat 源码安装 Windows 平台上安装 使用 winget 工具 Mac 平台上安装 Git 配置 用户信息 文本编辑器 差异分析工具 查看配置信息 生成 SSH 密钥(可选…...
事件类型——常见的键盘事件及应用
事件类型——常见的键盘事件及应用 键盘事件是前端交互的重要组成部分,通过 keydown 和 keyup 可以精准监听用户的按键行为,结合 key 和 code 属性实现多样化的逻辑。在实际开发中,需根据场景选择合适的事件和属性,并注意兼容性和…...
【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 的未来:从微服务到云原生的演进
<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、引子&…...
beego文件上传
1file.go 2html代码 3路由设置 beego.Router("/file/Upload", &controllers.FileUploadController{}, "post:Upload") 注意 1,得新建个upload文件夹 2,路由设置严格区分大小写。 biiego文件下载上传代码 github 觉得不错Star下...
2025-04-05 吴恩达机器学习5——逻辑回归(2):过拟合与正则化
文章目录 1 过拟合1.1 过拟合问题1.2 解决过拟合 2 正则化2.1 正则化代价函数2.2 线性回归的正则化2.3 逻辑回归的正则化 1 过拟合 1.1 过拟合问题 欠拟合(Underfitting) 模型过于简单,无法捕捉数据中的模式,导致训练误差和测试误…...
基于Python的图书借阅推荐系统设计与实现
【Python】基于Python的图书借阅推荐系统设计与实现 (完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 本项目基于Python语言和Django框架开发,旨在为用户提供一个高可靠、高便捷的图…...
数字与数学——常见面试算法题
目录 数字统计问题 符号统计 阶乘0的个数 溢出问题 整数反转 回文数 进制问题 七进制数 进制转换 数组实现加法 数组实现整数加法 字符串实现加法 二进制加法 幂运算 求2的幂 求3的幂 求4的幂 辗转相除法(之前博客有过详细推导) https…...
Lua:第1-4部分 语言基础
1 Lua语言入门 1.1 程序段 我们将 Lua 语言执行的每一段代码(例如,一个文件或交互模式下的一行)称为一个程序段 ( Chunk ) ,即一组命令或表达式组成的序列 。 1.2 一些词法规范 Lua 语言中的标识符&#…...
2024版idea使用Lombok时报找不到符号
今天在springboot项目中使用Lombok的Builder注解,启动时居然报了找不到符号的错,如下图 于是开始了漫长的寻找之路,首先去settings->Plugins中看自己的Lombok插件是否启动,发现确实是如此,然后看网上的教程去加上这…...
python中的sort使用
目录 sort()使用 排序处理 升序由小到大排序: sort与sorted 总结 降序由大到小排序: key 参数详解 按字符串长度升序排序 按字符串第二个字符排序 sort()使用 list.sort(keyNone, reverseFalse) 功能:对列表原地排序(直接…...
构建macOS命令速查手册:基于Flask的轻量级Web应用实践
构建macOS命令速查手册:基于Flask的轻量级Web应用实践 一、项目概述 本文介绍一个基于Flask框架开发的macOS命令速查Web应用。该应用通过结构化的命令数据存储和响应式前端设计,为用户提供便捷的命令查询体验,具备以下特点: 六…...
