React 18 + Babel 7 + Webpack 5 开发环境搭建
文章目录
- 一、基础开发环境搭建
- 1. 新建项目目录
- 2. 项目目录结构及内容
- 3. 安装 React 18 + Babel 7 + Webpack 5
- 4. 配置 Babel 和 Webpack
- 5. 调试/构建项目
- 二、扩展项目支持的能力(待补充)
- 1. JS 扩展(待补充)
- 2. CSS 扩展(待补充)
- 3. 热更新(待补充)
- 4. 按需加载(待补充)
- 5. 第三方库的使用(待补充)
- 三、代码标准化(待补充)
- 1. 代码校验 ESLint(待补充)
- 四、代码发布(待补充)
- 1. 生产环境 webpack 配置(待补充)
一、基础开发环境搭建
1. 新建项目目录
返回目录
mkdir example #创建项目目录
cd example #进入项目目录
npm init -y #生成 package.jsom
2. 项目目录结构及内容
返回目录
example # 项目目录
├── public # 静态公用目录
│ └── index.html # html模板
├── src # 源代码目录
│ ├── pages # 页面目录
│ │ └── home # 主页目录
│ │ └── index.js # 主页代码
│ └── index.js # React 入口代码
└── package.json
- public/index.html:html 模版”
<!DOCTYPE html> <html lang="en"> <head><meta charset="utf-8" /><!-- 移动端全屏 --><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=0" /><meta name="theme-color" content="#000000" /><!-- 防止页面缓存 --><meta http-equiv="Pragma" content="no-cache"><meta http-equiv="Cache-Control" content="no-cache"><meta http-equiv="Expires" content="0"><!-- 页面标题 html-webpack-plugin 插件替换 --><title><%= htmlWebpackPlugin.options.title %></title> </head> <body><!-- React根节点 --><div id="root"></div> </body> </html> - src/pages/home/index.js:首页
import React from 'react'; //引入 reactfunction Home() {return (<div>Hello, World!</div>) }export default Home; - src/index.js:React 的入口文件
'use strict'; import React from 'react'; //引入 react import { createRoot } from 'react-dom/client'; import Home from '../src/pages/home'; //引入本项目的首页//把首页渲染到 html 模版的 react 根节点上 const domNode = document.getElementById('root'); const root = createRoot(domNode); root.render(<Home />);
3. 安装 React 18 + Babel 7 + Webpack 5
返回目录
# 安装 React主程序 dom操作 路由
npm i -S react react-dom react-router-dom# 安装babel
npm i -D @babel/core @babel/preset-env @babel/preset-react# 安装 webpack主程序 支持命令行 本地开发用web服务 处理html插件
npm i -D webpack webpack-cli webpack-dev-server html-webpack-plugin# 安装 webpack加载器
$ npm i -D babel-loader css-loader style-loader
4. 配置 Babel 和 Webpack
返回目录
- 更新项目目录l
example # 项目目录 ├── public # 静态公用目录 │ └── index.html # html模板 ├── src # 源代码目录 │ ├── pages # 页面目录 │ │ └── home # 主页目录 │ │ └── index.js # 主页代码 │ └── index.js # React 入口代码 ├── .babelrc # babel配置文件 新增 ├── webpack # webpack配置目录 新增 │ └── dev.js # 开发环境配置文件 新增 └── package.json - 新建文件 .babelrc
{"plugins": ["@babel/syntax-dynamic-import"],"presets": [["@babel/preset-env",{"modules": false}],"@babel/preset-react"] } - 新建 webpack/dev.js:开发环境配置文件
// 引用库 const path = require('path'); const webpack = require('webpack');// 引入插件 const HtmlWebpackPlugin = require('html-webpack-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin');// 路径方法 const resolve = pathname => path.resolve(__dirname, `../${pathname}`); const stylesHandler = MiniCssExtractPlugin.loader;module.exports = {mode: 'development',entry: resolve('src/index.js'),output: {clean: true,filename: 'js/[name].[hash:5].bundle.js', //出口文件path: resolve('dist') //输出路径},devServer: {open: true,host: 'localhost',},plugins: [new HtmlWebpackPlugin({title: 'HTML页面标题', //替换index.html的title标签内容template: resolve('public/index.html'), //html模版的位置}),new MiniCssExtractPlugin({filename: 'css/[name].[contenthash:5].css',chunkFilename: 'css/[id].[contenthash:5]\'.css',ignoreOrder: false}),],module: {rules: [{test: /\.(js|jsx)$/i,loader: 'babel-loader',},{test: /\.css$/i,use: [stylesHandler, 'css-loader'],},{test: /\.(eot|svg|ttf|woff|woff2|png|jpg|gif)$/i,type: 'asset',},],}, };注意:loader 的加载顺序是从右往左,从下往上
5. 调试/构建项目
返回目录
- 修改 package.jsom,在 “scripts” 下添加运行和构建命令
{"scripts": {"dev": "webpack serve -c webpack/dev.js","build:dev": "webpack -c webpack/dev.js"} } - 用 npm 执行脚本命令
npm run dev # 调试项目 npm run build # 构建项目
二、扩展项目支持的能力(待补充)
返回目录
1. JS 扩展(待补充)
返回目录
2. CSS 扩展(待补充)
返回目录
3. 热更新(待补充)
返回目录
4. 按需加载(待补充)
返回目录
5. 第三方库的使用(待补充)
返回目录
三、代码标准化(待补充)
返回目录
1. 代码校验 ESLint(待补充)
返回目录
四、代码发布(待补充)
1. 生产环境 webpack 配置(待补充)
返回目录
相关文章:
React 18 + Babel 7 + Webpack 5 开发环境搭建
文章目录 一、基础开发环境搭建1. 新建项目目录2. 项目目录结构及内容3. 安装 React 18 Babel 7 Webpack 54. 配置 Babel 和 Webpack5. 调试/构建项目 二、扩展项目支持的能力(待补充)1. JS 扩展(待补充)2. CSS 扩展(…...
MongoDB Shard 集群 Docker 部署
MongoDB Shard Docker 部署 部署环境 主机地址主机配置主机系统Mongodb1/192.168.31.1352CPU 4GBDebian12Mongodb2/192.168.31.1092CPU 4GBDebian12Mongodb3/192.168.31.1652CPU 4GBDebian12 镜像版本 mongodb/mongodb-community-server:5.0.27-ubuntu2004 部署集群 部署…...
MacOS 开发 — Packages 程序 macOS新版本 演示选项卡无法显示
MacOS 开发 — Packages 程序 macOS新版本 演示选项卡无法显示 问题描述 : 之前写过 Packages 的使用以及如何打包macOS程序。最近更新了新的macOS系统,发现Packages的演示选项卡无法显示,我尝试从新安转了Packages 也是没作用,…...
Hive的分区表分桶表
1.分区表: 是Hive中的一种表类型,通过将表中的数据划分为多个子集(分区),每个分区对应表中的某个特定的列值,可以提高查询性能和管理数据的效率。分区表的每个分区存储在单独的目录中,分区的定义…...
PostgreSQL17索引优化之支持并行创建BRIN索引
PostgreSQL17索引优化之支持并行创建BRIN索引 最近连续写了几篇关于PostgreSQL17优化器改进的文章,其实感觉还是挺有压力的。对于原理性的知识点,一方面是对这些新功能也不熟悉,为了尽可能对于知识点表述或总结做到准确,因此需要…...
在Vue中,子组件向父组件传递数据
在Vue中,子组件向父组件传递数据通常通过两种方式实现:事件和回调函数。这两种方式允许子组件与其父组件进行通信,传递数据或触发特定的行为。 1. 通过事件传递数据 子组件可以通过触发自定义事件,并将数据作为事件的参数来向父组…...
数据结构(顺序表)
谈起顺序表,那我们就不得不先来了解一下它的上级概念---线性表 线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是⼀种在实际中⼴泛使⽤的数据结构,常⻅的线性表:顺序表、链表、栈、队列…...
MySQL之基本查询(上)-表的增删查改
目录 Create(创建) 案例建表 插入 单行数据 指定列插入 单行数据 全列插入 多行数据 全列插入 插入是否更新 插入时更新 替换 Retrieve(读取) 建表插入 select列 全列查询 指定列查询 查询字段为表达式 为查询结果指定别名 结果去重 where条件 比较运算符 逻辑运…...
RocketMQ源码学习笔记:Producer发送消息流程
这是本人学习的总结,主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、Overview2、验证消息3、查找路由4、选择消息发送队列4.1、选择队列的策略4.2、源码阅读4.2.1、轮询规避4.2.2、故障延迟规避4.2.2.1、计算规避时间4.2.2.2、选择队列 4.2.3、ThreadLocal的…...
kotlin flow collect collectLatest 区别
在 Kotlin 协程库中,collect 和 collectLatest 都是用于收集 Flow 中发射的数据的方法,但它们在处理数据和响应新数据的方式上有所不同。 collect collect 是一个挂起函数,用于收集 Flow 中发射的所有数据。它会按顺序处理每一个发射的数据…...
ELK集群搭建
ELK集群搭建 文章目录 ELK集群搭建1.环境准备2.Elasticsearch环境搭建1.创建es账户并设置密码2.选择对应版本进行下载3.编辑配置文件4.设置JVM堆大小 #7.0默认为4G5.创建es数据及日志存储目录6.修改安装目录和存储目录权限 3.系统优化1.增加最大文件打开数2.增加最大进程数3.增…...
zookeeper+kafka消息队列集群部署
一.消息队列 1、什么是消息队列 消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。 消息队列(MessageQueue)是一种在软件系统中用…...
LLM_入门指南(零基础搭建大模型)
本文主要介绍大模型的prompt,并且给出实战教程。即使零基础也可以实现大模型的搭建。 内容:初级阶段的修炼心法,帮助凝聚和提升内力,为后续修炼打下基础。 1、prompt 1.1含义和作用 prompt就是提示工程的意思。在大型语言模型中…...
Element Plus 与 Vue 3:构建现代化 Web 应用的完美搭档
引言 Element Plus是基于Vue 3的组件库,它继承了Element UI的优秀基因,为Vue 3应用提供了丰富的界面组件。Element Plus不仅拥有与Element UI相同的高质量组件,还针对Vue 3进行了优化和更新,确保了与Vue 3的无缝集成。 环境准备…...
线程间通信与变量修改感知:几种常用方法
线程间通信与变量修改感知:几种常用方法 1. 使用volatile关键字2. 使用synchronized关键字3. 使用wait/notify/notifyAll机制4. 使用轮询(Polling) 💖The Begin💖点点关注,收藏不迷路💖 在Java…...
前后端通信 —— HTTP/HTTPS
目录 一、HTTP/HTTPS 简介 1、HTTP 2、HTTPS 二、HTTP 工作过程 三、HTTP 消息 1、HTTP消息结构 2、HTTP消息示例 四、HTTP 方法(常用) 1、GET 2、POST 3、PUT 4、DELETE 5、GET与POST对比 五、HTTP 状态码(常用) …...
人工智能 (AI) 应用:一个高精度ASD 诊断和照护支持系统
自闭症谱系障碍(ASD)是一种多方面的神经发育状况,影响全球大约1/100的儿童,而在中国,这一比例高达1.8%(引用自《中国0~6岁儿童孤独症谱系障碍筛查患病现状》),男童为2.6%…...
C# 1.方法
方法组成: 1.修饰符:public一般定义共有的 2.方法返回值:void 无返回值; 非void,可以写成其他类型例如int,float,string,string[]等 3.方法名:Add 大驼峰命名法,每一个首字符大写。…...
【C++进阶学习】第七弹——AVL树——树形结构存储数据的经典模块
二叉搜索树:【C进阶学习】第五弹——二叉搜索树——二叉树进阶及set和map的铺垫-CSDN博客 目录 一、AVL树的概念 二、AVL树的原理与实现 AVL树的节点 AVL树的插入 AVL树的旋转 AVL树的打印 AVL树的检查 三、实现AVL树的完整代码 四、总结 前言:…...
px,em,rem之间的关系换算
px,em,rem之间的换算 px:普通大小 em:相对单位,相对于父元素的字体大小 rem:相对单位,相对于根元素(html)的字体大小 <!DOCTYPE html> <html lang"en"> <head>…...
如何通过NVIDIA Profile Inspector深度优化游戏性能:解锁显卡隐藏设置的完整指南
如何通过NVIDIA Profile Inspector深度优化游戏性能:解锁显卡隐藏设置的完整指南 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 你是否曾经感到困惑,为什么同样的显卡配置&…...
利用 Taotoken 模型广场为你的智能客服场景选择最合适的大模型
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 利用 Taotoken 模型广场为你的智能客服场景选择最合适的大模型 智能客服是当前大模型技术落地最广泛的场景之一。无论是处理售前咨…...
TsubakiTranslator:如何用免费工具打破Galgame语言壁垒的终极指南
TsubakiTranslator:如何用免费工具打破Galgame语言壁垒的终极指南 【免费下载链接】TsubakiTranslator 一款Galgame文本翻译工具,支持Textractor/剪切板/OCR翻译 项目地址: https://gitcode.com/gh_mirrors/ts/TsubakiTranslator 还在为看不懂日语…...
3大远程管理痛点解决方案:MobaXterm中文版实现一站式终端效率革命
3大远程管理痛点解决方案:MobaXterm中文版实现一站式终端效率革命 【免费下载链接】Mobaxterm-Chinese Mobaxterm simplified Chinese version. Mobaxterm 的简体中文版. 项目地址: https://gitcode.com/gh_mirrors/mo/Mobaxterm-Chinese 远程服务器管理面临…...
为Claude Code配置Taotoken密钥与模型解决访问限制
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为Claude Code配置Taotoken密钥与模型解决访问限制 Claude Code 作为一款高效的编程助手,其原生服务有时会因地域或配额…...
MobileSAM深度解析:轻量化图像分割架构揭秘与实战应用
MobileSAM深度解析:轻量化图像分割架构揭秘与实战应用 【免费下载链接】MobileSAM This is the official code for MobileSAM project that makes SAM lightweight for mobile applications and beyond! 项目地址: https://gitcode.com/gh_mirrors/mo/MobileSAM …...
从内容焦虑到自动化采集:3步构建你的抖音直播内容获取系统
从内容焦虑到自动化采集:3步构建你的抖音直播内容获取系统 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback s…...
微服务限流实战:Nginx 漏桶与网关令牌桶
限流不是为了让系统“变慢”,而是为了让系统在突发流量、恶意请求或超过承载能力时,仍然能保住核心服务。 一句话概括:限流是在入口处控制请求速度或并发数量,Nginx 常用漏桶算法控制请求流出速率,Spring Cloud Gatewa…...
Dark Reader动态主题修复终极指南:自动化解决网站适配难题
Dark Reader动态主题修复终极指南:自动化解决网站适配难题 【免费下载链接】darkreader Dark Reader Chrome and Firefox extension 项目地址: https://gitcode.com/gh_mirrors/da/darkreader Dark Reader是一款广受欢迎的浏览器扩展,能帮助你将任…...
Vue-Tree-List:轻松构建优雅树形结构的Vue组件指南
Vue-Tree-List:轻松构建优雅树形结构的Vue组件指南 【免费下载链接】vue-tree-list 🌲A vue component for tree structure 项目地址: https://gitcode.com/gh_mirrors/vu/vue-tree-list 你是否曾为在Vue项目中实现复杂的树形结构而感到头疼&…...
