从零开始,使用Webpack4配置属于自己的React项目及源码(实现count小例子)

React+Webpack4.0+ES6+Antd最新版环境搭建代码-2018年 立即下载

前言:使用react16.8+webpack4配置的项目,项目已经完成es6编译配置,安装命令用红体字标出

1.项目目录结构说明及源码下载

其他前端有趣的例子和坑合集:https://github.com/wqhui/CodeDemo

源码地址:https://github.com/wqhui/reactDemo

实现的webpack配置项

  •  jsx、es6语法解析
  • 简单开发服务 webpack-dev-server
  • html模板,会自动引入打包的js
  •  less解析
  •  css和js简单分离
  •  css自动添加浏览器前缀
  •  url 配置

 feature

  • UglifyJsPlugin
  •  BannerPlugin
  •  DllReferencePlugin

下载完成后解压后还要解压node_module.zip压缩包,解压完node_module压缩包,命令行进入,输入npm run dev即可运行项目。

├── package.json  

├── postcss.config.js  

├── src

│   ├── action  (action文件夹

│   │   ├── action.js

│   │   ├── actionnames.js

│   │   └── countAction.js

│   ├── app.js  

│   ├── component  (组件文件夹

│   │   ├── Count.js

│   │   └── Count.less

│   ├── index.js  (入口文件

│   ├── index.tmpl.html

│   ├── reducer   (reduecer 配置

│   │   └── index.js

│   └── store   (strore文件夹

│       └── store.js

└── webpack.config.js  webpack配置

 

1.项目工程配置

新建一个文件夹,然后在文件夹上打开终端,输入npm init -yes完成项目初始化,会生成一个package.json记录整个项目的依赖包信息。目录结构如下

2.安装Webpack和React并配置

安装react npm i react react-dom redux react-redux redux-thunk react-router --save-dev

在目录src下新建 index.tml.html 文件(这个后面会讲到使用webppac配置html模板):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="root"></div>
</body>
</html>

在目录src下新建 index.js 文件:

import React from 'react';
import ReactDOM from 'react-dom';

ReactDOM.render(
    <h1>这里是一个简单的示例页面啊</h1>,
    document.getElementById('root')
);

安装bable,用来解析js文件的loader及插件去解析jsx和es6语法:npm i babel-cli babel-loader babel-preset-env  babel-preset-stage-0 babel-preset-es2015  babel-preset-react babel-plugin-react-transform react-transform-hmr --save-dev ,在项目根目录新建并配置.babelrc文件:

{
    "presets": ["env", "react"]
}

安装webpack npm i webpack webpack-cli webpack-dev-server --save-dev  ,在项目根目录新建并配置webpack.config.js:

/*
 * @Author: qinghui_wu 
 * @Date: 2018-11-04 17:56:24 
 * @Last Modified by: qinghui_wu
 * @Last Modified time: 2018-11-10 16:07:04
 */

const path=require('path');
const ROOT_PATH = path.resolve(__dirname);

module.exports = {  
    entry: './src/index.js',//入口文件
    output: {//输出
        path: path.resolve(__dirname, 'dist'),
        filename: 'main.js'
    },
    devServer: {
        contentBase: require('path').join(__dirname, "dist"),//设置服务器访问的基本目录
        compress: true,
        port: 8088,//端口
        host: "localhost",
        inline: true,//实时刷新
    },
    module: {
        rules: [
             //这里配置loader ,对象形式配置
        ]
    },
    plugins: [
        //这里配置插件
    ]
};

配置启动命令,在package.json中的scripts中添加:

"dev": "webpack-dev-server --mode development --open",

这样在文件夹终端就可以使用 npm run dev 启动项目


配置解析.js和.jsx文件的loader:

            {
                test: /\.(js|jsx)$/,
                exclude: path.resolve(__dirname, 'node_modules'),//忽略查找
                include: path.resolve(__dirname, 'src'),//查找
                use: {
                    loader: "babel-loader"
                }
            }

安装配置webpack插件html-webpack-plugin,npm i html-webpack-plugin --save-dev

const HtmlWebPackPlugin = require("html-webpack-plugin");//引用都放在const path=require('path');旁边

        //这段放在plugins下
        new HtmlWebPackPlugin({
            template: ROOT_PATH + "/src/index.tmpl.html",//index html 模板
            filename: 'index.html',// 生成文件名
            minify: {
                collapseWhitespace: true, //把生成的 index.html 文件的内容的没用空格去掉,减少空间
            },
            hash: true, //为了更好的 cache,可以在文件名后加个 hash。
        }),

安装配置分离js和css插件、清理无效文件插件,npm i mini-css-extract-plugin clean-webpack-plugin --save-dev,(这里用mini-css-extract-plugin替代ExtractTextPlugin)

const MiniCssExtractPlugin = require("mini-css-extract-plugin");//分离css和js 配置style loader使用
const CleanWebpackPlugin = require('clean-webpack-plugin');//清理无效文件
        //这段放在plugins下
        new MiniCssExtractPlugin({
            // Options similar to the same options in webpackOptions.output
            // both options are optional
            filename: "[name].css",
            chunkFilename: "[id].css"
        }),
        new CleanWebpackPlugin(['dist'])//实例化,参数为目录

安装配置样式文件解析相关loader,这里使用less和css,npm install less less-loader css-loader style-loader postcss-loader autoprefixer -D,

           { 
                test: /\.(css|less)$/, //样式loader
                use:[
                        MiniCssExtractPlugin.loader,
                        {   
                            loader:"css-loader",
                            options:{
                                modules: true, // 指定启用css modules
                                localIdentName: '[name]__[local]--[hash:base64:5]' // 指定css的类名格式
                            }
                        },
                        "postcss-loader",//自动添加前缀
                        "less-loader"
                ]
            }

配置postcss-loader自动添加前缀(autoprefixer),在和webpack.config.js同级目录添加postcss.config.js

module.exports = {
    plugins: {
        'autoprefixer': {
            browsers: ['iOS >= 7', 'Android >= 4.1',
                'last 10 Chrome versions', 'last 10 Firefox versions',
                'Safari >= 6', 'ie > 8']
        },
    }
}

安装配置图片、字体文件的解析用的loader,npm i file-loader url-loader --save-dev,

            {
                test: /\.(png|jpg|gif|woff|svg|eot|woff2|tff)$/,
                use: 'url-loader?limit=8129', //limit的参数,当你图片大小小于这个限制的时候,会自动启用base64编码图片
                exclude: /node_modules/
            }

 

基于webpack4搭建的react项目框架的方法 本篇文章主要介绍了基于webpack4搭建的react项目框架的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 立即下载

相关推荐

Android 集成 Google 与 Facebook 第三方登录实战详解(2024版)

本文详细介绍了2024年Android应用集成Google与Facebook第三方登录的完整实战指南。通过分步教程和代码示例,帮助开发者快速实现一键登录功能,提升用户体验和注册转化率,同时涵盖隐私合规和常见错误处理的最佳实践。

blue的专栏 822

从零搭建Webpack5-react脚手架(附源码)

webpack5 近期终于有时间和精力专注于公司技术基础建设了,于是一开始,将公司的Saas系统改造成了微前端模式,解决了历史遗留的一部分问题接着,想着webpack5已经发布这么久了,该...

petertanjinjie的博客 775

从立创商城到Cadence:手把手教你实现封装格式的精准迁移

本文详细介绍了如何从立创商城获取元器件封装并精准迁移至Cadence Allegro的全流程。通过实战案例MAX31865ATP+T芯片,逐步解析Altium Designer格式转换、Cadence环境配置、封装导入验证等关键步骤,提供常见问题解决方案和效率提升技巧,帮助硬件工程师实现封装格式的高效迁移。

weixin_42519985的博客 216

React 示例(三)

接下来,让我们定义我们的索引,以及我们需要路由如何工作以及路由应该响应哪些路径。从那里,我们将继续构建我们的组件。“明白了。});render((</Route></Router>“所以,我看到的第一件事是我们正在创建一个会话历史记录?“正确,我们在这里创建了一个会话历史记录。我们将使用它作为我们的路由器。“在这里,我们使用历史模块的方法,它提供了在baseURL 下运行应用的支撑,在我们的例子中是/pinterest。“明白了。“接下来,我们将展示我们实际上希望路由如何工作。

龙哥盟 5538

手把手教你用C#和LibUsbDotNet实现USB设备通信(含完整代码示例)

本文详细介绍了如何使用C#和LibUsbDotNet库实现USB设备通信,包括设备识别、连接建立、同步/异步数据读写等核心操作。通过完整的代码示例,开发者可以快速掌握USB通信的关键技术,适用于工业自动化、医疗设备等多种场景。重点讲解了数据读写优化和错误处理技巧,帮助提升通信效率和可靠性。

a3b4c5的博客 706

VH6501实战:手把手教你用CANoe脚本精准触发CAN总线干扰(附避坑点)

本文详细介绍了使用VH6501和CANoe脚本精准触发CAN总线干扰的实战技巧,包括触发位置控制、ValidityMask配置和干扰序列设置等关键步骤。通过具体代码示例和常见问题排查指南,帮助工程师避开实际应用中的常见陷阱,提升CAN总线干扰测试的准确性和效率。

weixin_33709219的博客 370

基于 React & TypeScript & Webpack 的微前端应用模板

m-fe/react-ts-webpack 在 Web 开发导论/微前端与大前端一文中,笔者简述了微服务与微前端的设计理念以及微前端的潜在可行方案。微服务与微前端,都是希望将某个单一的单体应用,转化为多个可以独立运行、独立开发、独立部署、独立维护的服务或者应用的聚合,从而满足业务快速变化及分布式多团队并行开发的需求。如康威定律(Conway’s Law)所言,设计系统的组织,其产生的设计和架构等...

weixin_33806300的博客 383

定制PYNQ的overlay

一、用HLS生成一个定制IP(加速器)(1)首先打开vivado hls,本人的版本是2017.2,点击创建一个新工程。(2)设置工程名和路径,顶层函数设置为add,创建一个新的C++程序,名字叫做adder.cpp,不用在testbench中添加文件。选择板子的时候搜索xc7z020clg400-1,这是PYNQ的板子号,选择完成。             (3)在左侧的菜单栏里选择Sourc...

bramblewalls的博客 1万+

React19 新特性 – 附带代码示例的更新

🤖 React 编译器:React 正在努力实现一个新的编译器。目前,Instagram 已经在利用这项技术,它将在未来版本的 React 中发布。🔥 服务器组件:经过多年的开发,React 引入了服务器组件的概念。您现在可以在 Next.js 中使用此功能。💪 动作:动作还将彻底改变我们与 DOM 元素的交互方式。🌇 文档元数据:另一个急需改进的方面即将到来,使开发人员能够用更少的代码实现更多功能。💼 资源加载:这将使资源能够在后台加载,从而改善应用程序的加载时间和用户体验。

晓风晓浪 3458

已解决-Parallels Desktop 16 网络初始化失败:您的虚拟机将继续正常运作,但将无法连接网络

我是月球挖掘机,相信不少打工人为了尝鲜已经更新了MacOS 11 Big Sur,当然,苹果每次的系统大更新,都会给我们软件的功能无法使用惊喜,这次的也不例外。 这个问题是我在更新macOS Big Sur之后,Parallels Desktop打开虚拟机后,提示: 报错信息 网络初始化失败:您的虚拟机将继续正常运作,但将无法连接网络 这是我的软件版本: 起初我以为是我的虚拟机坏了,结果重装了一遍虚拟机,没有任何用处。我开始在网上找方法,只能找到那个使用命令行打开软件的命令,除此之外没有了

月球挖掘机 5万+

全在这了!全国分省90米、30米、12.5米、5米DEM高程模型数据下载方式汇总

全在这了!全国分省90米、30米、12.5米、5米DEM高程模型数据下载方式汇总 SRTM15(450米)免费下载 https://pan.baidu.com/s/1eO0U6wfzs7YSe2EQdxRJ2Q提取码:o7am GMTED(250米)免费下载 https://pan.baidu.com/share/init?surl=nrbbdbhyNVQV46XwqzqLlg 提取码:V7X9 SRTM3 (90米)免费下载 https://pan.baidu.com/share/..

TuxinyunGIS的博客 1万+

最新打包配置,webpack 4 配置 React 项目,同时配置DEV和PROD环境

webpack 4 配置 React 项目,同时配置DEV和PROD环境 文章目录webpack 4 配置 React 项目,同时配置DEV和PROD环境1、生成一个react项目2、从零配置webapck3、设置alias别名和自动填写后缀4、配置 devServer5、解析分离less到单独的文件6、url-loader, file-loader 解析图片地址,并导出到指定文件7、多个less...

非著名程序猿 4215

PCIe协议之 Equalization篇 之 理论篇 之 FFE

作为最后一道“精加工”工序,DFE利用其不放大噪声的优势,精准地消除残余的、强烈的后光标ISI,最终得到一个非常干净、张得很开的眼图,供判决器使用。信号经过信道衰减后变得模糊,首先由CTLE进行“粗调”,提供一个宽频带的增益,将眼图初步打开,为后面的DFE创造一个可以正常工作的信号环境。,它通过将输入信号在不同时间点上的多个副本(称为“抽头”)进行加权求和,来直接塑造或“整形”输出信号的波形。:这是最主要的信号路径,通常系数为正值,决定了信号的幅度。:将所有加权后的信号相加,产生最终的均衡输出。

那么菜的博客 756

React Router与Redux在egg-react-webpack-boilerplate中的最佳实践

egg-react-webpack-boilerplate是一个集成Egg、React、Webpack的企业级应用框架,支持服务端渲染(SSR)和客户端渲染(CSR)两种模式。本文将详细介绍如何在该框架中高效整合React Router与Redux,构建功能完善的单页应用。 ## 框架基础架构概览 egg-react-webpack-boilerplate采用分层架构设计,通过Webpack实

gitblog_00196的博客 314

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

react-hot-loader 在 Electron + TypeScript 中的实时热更新实战指南

本文基于 react-hot-loader 官方仓库中的 Electron + TypeScript 示例([examples/electron-typescript](https://link.gitcode.com/i/8911251305e5ec591f1871c70e8b3a65)),完整讲解如何在 Electron 桌面应用开发中接入 webpack-dev-server 与 react

gitblog_00348的博客 399

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

在 Create React App 项目中使用 CRACO 集成 MobX:Babel 装饰器与插件配置指南

> 本文介绍如何在 Create React App(CRA)项目中,通过 CRACO(Create React App Configuration Override)的 `babel` 配置项接入 MobX 状态管理库。文章以 [use-mobx.md](https://link.gitcode.com/i/0be1f10f85ab6a74fe58081ca1d0591b) 为骨架,结合 CRA

gitblog_00186的博客 374

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

大厂前端面试真题解析:Vue、React与Webpack核心考点

前端开发中,掌握主流框架(如Vue、React)和构建工具(如Webpack)的核心原理是技术进阶的关键。Vue的响应式系统通过Object.defineProperty或Proxy实现数据绑定,而React则依赖虚拟DOM和Fiber架构优化渲染性能。工程化方面,Webpack通过loader和plugin机制实现模块化打包,其优化策略如Tree Shaking和Code Splitting能显著提升应用性能。这些技术广泛应用于大厂前端项目,也是面试高频考点。本文整理的1000道真题涵盖Vue3 Comp

weixin_30755393的博客 350

从babel-plugin-react-transform到React Hot Loader 3:React热重载技术演进之路

在现代React开发工作流中,热重载(Hot Module Replacement)技术已经成为提升开发效率的必备利器。babel-plugin-react-transform作为React生态系统中一个里程碑式的工具,为开发者们带来了前所未有的开发体验。这个Babel插件通过自定义转换器来增强React组件,为后来的React Hot Loader 3奠定了坚实的技术基础。 ## 📊 bab

gitblog_00143的博客 398

webpack笔记

webpack是一个前端资源加载/打包工具,它将根据模块之间的依赖关系进行静态分析,然后将这些模块根据指定规则生成静态资源。比如将常规的浏览器能够识别的静态资源类文件(html、js、css、jpg等)、以及浏览器本身不能识别的文件(模板文件hbs文件、CommonJS的cjs文件、样式文件sass、less文件),转换并打包成几个独立的静态文件,给浏览器识别,并且能够减少浏览器访问网站时的请求次数。

kenzo2017的博客 240

如何通过babel-plugin-react-transform实现React组件热重载:终极开发体验提升指南

你是否曾经在开发React应用时,每次修改代码后都需要手动刷新浏览器才能看到变化?这种重复操作不仅浪费时间,还打断了你的开发流程。今天,我将为你介绍一个能够彻底改变React开发体验的工具——babel-plugin-react-transform,它能够实现React组件的热重载(Hot Module Replacement),让你在开发过程中保持应用状态的同时实时更新组件。这个强大的Babel

gitblog_00223的博客 307

React Styleguidist basic 示例:从零搭建隔离式 React 组件开发环境

本篇指南围绕 React Styleguidist 官方仓库中 `examples/basic` 示例项目展开,完整讲解如何基于该示例搭建一套"隔离式"的 React 组件开发环境与实时风格指南(living style guide)。读者将掌握:如何克隆并本地运行示例、`styleguide.config.js` 各配置项(`components`、`defaultExample`、`modul

gitblog_00175的博客 698

Remount实战指南:在Rails/Phoenix项目中集成React组件的技巧

Remount是一个强大的工具,它允许开发者使用自定义元素将React组件挂载到DOM中。这一特性使得在Rails和Phoenix等传统Web框架中集成React组件变得简单而高效,为项目带来了React的强大功能和传统框架的稳定性。 ## 为什么选择Remount? 在现代Web开发中,React已经成为构建交互式用户界面的首选库之一。然而,许多项目仍然依赖于Rails或Phoenix等传统

gitblog_00509的博客 383

js-lingui 5.0 版本发布指南:宏包拆分、useLingui 宏、占位符上下文输出与 CLI 配置增强

本文解读 Lingui(js-lingui)5.0 版本的发布内容:React 与 JS 宏拆分到独立入口、JSX/JS 宏的空白字符处理规则变化、新增 `useLingui` 宏与独立 Babel 插件、PO 注释中输出占位符变量名、`stripMessageField` 选项、多语言提取与 `defineConfig` 等。读完本文,你将掌握 5.0 的全部关键新特性、对应的配置写法,以及结合

gitblog_01162的博客 1045

如何快速运行koa-react-full-example:从MongoDB安装到首次登录的5步完整教程

**koa-react-full-example** 是一个使用 Koa、React、Passport、Mongoose、Webpack 和 Mocha 搭建的全栈示例项目,内置用户注册/登录与一个可读写 MongoDB 的计数器应用。本教程带你完成 **Koa + React 全栈环境搭建**:从安装 MongoDB、启动双终端,到首次注册登录成功,只需 5 步,新手也能一次跑通! ## 5分

gitblog_00760的博客 417

react-i18next 实战指南:基于 i18next 生态的 React 国际化完整方案

react-i18next 是 i18next 国际化生态在 React 侧的官方绑定层,提供 `useTranslation` Hook、`Trans` 组件、`withTranslation` 高阶组件等一套完整 API,让 React 应用无需改动构建配置即可接入翻译、插值、复数与语言切换。本指南以仓库根目录 [README.md](https://link.gitcode.com/i/21

gitblog_00866的博客 919

React Cosmos 入门指南:在隔离环境中开发与测试 React UI 组件

React Cosmos 是一款专注 React 的 UI 组件开发与测试沙盒工具,它让你脱离整个应用,一次只聚焦一个组件进行原型设计、交互调试与状态验证,从而显著提升组件迭代速度与质量。本文以项目根目录的 [README.md](https://link.gitcode.com/i/61fb1d5915e8efe7cf8af91c90377d8e) 为主线,结合仓库中的官方文档、CLI 实现与示

gitblog_00549的博客 291
上一篇: flex布局下文字超出省略号代替不起作用解决方法
下一篇: js禁止右键
Qssn丶
博客等级 码龄11年 88粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值