如果不使用脚手架,如果用webpack构建一个自己的react应用

news/2025/1/3 17:49:33/文章来源:https://www.cnblogs.com/zsnhweb/p/18646179

以下是使用Webpack构建一个自己的React应用的基本步骤:

1. 项目初始化

首先创建一个项目文件夹,并在其中初始化package.json文件(用于管理项目的依赖和脚本等),打开命令行,进入项目文件夹,执行以下命令:

mkdir my-react-app
cd my-react-app
npm init -y

2. 安装必要的依赖

需要安装React、React DOM以及Webpack相关的核心库和一些必要的加载器(loader)等。

npm install react react-dom webpack webpack-cli webpack-dev-server html-webpack-plugin @babel/core @babel/preset-env @babel/preset-react babel-loader css-loader style-loader --save-dev
  • reactreact-dom:React核心库和用于操作DOM的库。
  • webpackwebpack-cli:构建工具及其命令行界面,用于打包项目。
  • webpack-dev-server:提供一个开发服务器,方便在开发过程中实时查看效果,热更新等。
  • html-webpack-plugin:用于自动生成HTML文件,并将打包后的JavaScript等资源引入到HTML中。
  • @babel/core@babel/preset-env@babel/preset-reactbabel-loader:用于将ES6+代码(包括React的JSX语法)转换为浏览器能够识别的JavaScript代码,通过Babel进行转译。
  • css-loaderstyle-loader:用于处理CSS文件,css-loader解析CSS文件中的@importurl()等,style-loader将解析后的CSS样式注入到页面中。

3. 配置Webpack

在项目根目录下创建webpack.config.js文件,用于配置Webpack的各项参数,示例配置如下:

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');module.exports = {mode: 'development', // 开发模式,还可以设置为'production'用于生产环境打包entry: './src/index.js', // 项目入口文件,后续所有依赖会从这里开始分析和打包output: {path: path.resolve(__dirname, 'dist'), // 打包后的文件输出目录filename: 'main.js' // 输出的主文件名},module: {rules: [{test: /\.(js|jsx)$/, // 处理.js和.jsx文件exclude: /node_modules/, // 排除node_modules文件夹中的文件,不进行转译处理use: {loader: 'babel-loader',options: {presets: ['@babel/preset-env','@babel/preset-react']}}},{test: /\.css$/, // 处理CSS文件use: ['style-loader','css-loader']}]},plugins: [new HtmlWebpackPlugin({template: './src/index.html', // 指定HTML模板文件,会基于这个文件生成最终的HTMLinject: 'body' // 将打包后的JavaScript文件注入到HTML的body标签内})],devServer: {contentBase: path.join(__dirname, 'dist'), // 开发服务器的根目录,指向打包输出目录port: 3000, // 服务器监听的端口号open: true // 启动服务器时自动打开浏览器访问应用}
};

4. 创建项目文件

  • 在项目根目录下创建src文件夹,里面包含以下几个关键文件:

    • index.html:作为HTML模板文件,示例如下:
    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><title>My React App</title>
    </head>
    <body><div id="root"></div>
    </body>
    </html>
    
    • index.js:这是项目的入口JavaScript文件,在这里引入React并渲染组件到页面上,示例如下:
    import React from 'react';
    import ReactDOM from 'react-dom';
    import App from './App'; // 假设后续会创建App组件ReactDOM.render(<App />,document.getElementById('root')
    );
    
    • App.js:一个简单的React组件文件,示例如下:
    import React from 'react';const App = () => {return (<div><h1>Hello, React App!</h1></div>);
    };export default App;
    

5. 运行项目

在命令行中执行以下命令来启动开发服务器,Webpack会根据配置进行打包,并在浏览器中打开应用:

npx webpack-dev-server

如果后续想要进行生产环境的打包,可以执行以下命令(会根据webpack.config.js中的mode配置为production时的相关设置进行打包):

npx webpack

通过以上步骤,就可以在不使用脚手架的情况下,利用Webpack构建一个简单的React应用,在开发过程中可以不断扩展组件、添加功能以及完善样式等。

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

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

相关文章

3.数据类型

3.1字符串1.正常字符串使用 或 "" 包裹起来2.注意转义字符 \ \ 显示’ \n 换行 \t tab \u4e2d \u### Unicode字符3.多行字符串编写 4.模板字符串5.字符串长度 str(变量名).length6.字符串的可变性,不可变String Buffer和StringBuilder都是可变的,String…

h5如何解决移动端适配问题

使用响应式布局(Responsive Layout)原理:通过CSS媒体查询(Media Queries)根据设备的屏幕尺寸、分辨率等属性来动态调整页面的布局和样式。媒体查询允许您针对不同的媒体类型(如屏幕、打印等)和条件(如屏幕宽度、高度、设备方向等)应用不同的CSS规则。 示例代码:例如,…

第15章 流与IO

第15章 流与IO 15.1 .NET 流的架构 .NET 流的架构主要包含三个概念:** 后台存储 、 装饰器 以及 流适配器 **,如图所示: C7.0 核心技术指南 第7版.pdf - p655 - C7.0 核心技术指南 第 7 版-P655-20240216192328 ​​ 其中** 后台存储 和 装饰器 **为流。后台存储流:负责处理…

超全性能调优标准制定指南,你一定不能错过!

0 前言 我有个朋友说他们国企的系统从未性能调优,功能测试完就上线,线上也没性能问题,何必还做性能调优? 本文搞清:为什么要做性能调优? 啥时开始做? 做性能调优是不是有标准?1 为啥做性能调优?有些性能问题是慢慢产生,到了时间就自爆 更多性能问题是由访问量波动导致…

第16章 网络

第16章 网络 纲要 .NET Framework 在 System.Net.*命名空间中包含了支持各种网络标准的类,支持的标准包括 HTTP、TCP/IP 以及 FTP 等。以下列出了其中的主要组件:​Webclient​ 类 支持通过 HTTP 或者 FTP 执行简单的下载/上传操作。​WebRequest​ 和 WebResponse​ 类 可以…

第13章 诊断

第13章 诊断 13.1 条件编译 预编译的指令见 4.16 预处理指令,我们这里的条件编译用到的指令有:​#if​​、#else​​、#endif​​、#elif​​ 条件编译指令可以进行 与 ​&&​ ​、 或 ​||​ ​、 非 ​!​ 运算。预定义指令可以通过三种方式定义:在文件中通…

第14章 并发与异步

第14章 并发与异步 14.2 线程 进 程提供了程序执行的独立环境, 进 程持有 线 程,且至少持有一个 线 程。这些 线 程共享 进 程提供的执行环境。 14.2.1 创建线程 创建线程的步骤为:实例化 ​Thread​ ​ 对象,通过构造函数传入 ​ThreadStart​ ​ 委托。 调用 ​Thread…

Sqlserver With as 实现循环递归

一、脚本示例declare @Separator varchar(10), @str varchar(100) declare @l int, @i int select @Separator=,,@str=111,22,777,99,666 select @i = len(@Separator), @l = len(@str); with cte7 as ( select 0 a, 1 b union all select b, charindex(@Separator, @str, b)+@…

JAVA 分布式锁

分布式锁 JVM 自带的 synchronized 及 ReentrantLock 锁都是单进程内的,不能跨进程,如下,同时来个两个请求被分配到不同的tomcat,这种锁将失效:REDIS 实现分布式锁 可以借助 REDIS 的setnx 命令实现: https://blog.csdn.net/T_Y_F_/article/details/144238022 注:redis …

java8--类Scanner--文件内容输入--windows路径分隔符转义

try { Scanner in = new Scanner(Paths.get("C:\Users\Administrator\IdeaProjects\untitled2\src\test\myfile.txt"),"UTF-8"); } catch (IOException ioException) { ioException.printStackTrace(); }ps: 1.打印当前工…

[Windows] 启动 Windows Update 服务失败,报:Windows 无法启动 Windows Update 服务(位于 本地计算机 上) 错误 126:找不到指定的模块

1 问题描述现象1:Windows 10 家庭版-服务(services.msc)-启动 Windows Update 服务失败,报:"Windows 无法启动 Windows Update 服务(位于 本地计算机 上) 错误 126:找不到指定的模块"注: C:\Windows\System32\wuaueng.dll 文件存在注:注册表regedit:计算机\HKEY_L…

共享ubuntu系统宿主机的部分文件到win虚拟机--通过ISO文件挂载

安装genisoimage sudo apt-get update sudo apt-get install genisoimage将需要共享的文件放入指定文件夹 cp /path/to/your/file ~/iso_work/使用genisoimage生成新镜像 genisoimage -o /path/to/new.iso -J -R -V "NEW_ISO_LABEL" ~/iso_work/其中new.iso就是新镜像…