【React篇 】React项目中常用的工具库

我们可以从项目初始化、开发、构建、检查及发布的顺序总结react项目开发常用的工具库。

  • 首先是初始化。

初始化工程项目一般用官方维护的 create-react-app,这个工具使用起来简单便捷,但 create-react-app 的配置隐藏比较深,修改配置时搭配 react-app-rewired 更为合适。国内的话通常还会用 dva 或者 umi 初始化项目,它们提供了一站式解决方案。dva 更关心数据流领域的问题,而 umi 更关心前端工程化。其次是初始化库,一般会用到 create-react-library,也基本是零配置开始开发,底层用 rollup 进行构建。如果是维护大规模组件的话,通常会使用 StoryBook,它的交互式开发体验可以降低组件库的维护成本。

  • 其次是开发。

开发通常会有路由、样式、基础组件、功能组件、状态管理等五个方面需要处理。

路由方面使用 React Router 解决,它底层封装了 HTML5 的 history API 实现前端路由,也支持内存路由。样式方面主要有两个解决方案,分别是 CSS 模块化和 CSS in JS。

CSS 模块化主要由 css-loader 完成,而 CSS in JS 比较流行的方案有classNames、 emotion 和  styled-components。emotion 提供 props 接口消灭内联样式;styled-components 通过模板字符串提供基础的样式组件。

基础组件库方面,一般管理后台使用 Antd,因为用户基数庞大,稳定性好;面向 C 端的话,主要靠团队内部封装组件。

功能组件就比较杂了,比如用于实现拖拽的有 react-dnd 和 react-draggable,react-dnd 相对于 react-draggable,在拖放能力的抽象与封装上做得更好,下层差异屏蔽更完善,更适合做跨平台适配;PDF 预览用过 react-pdf-viewer;视频播放用过 Video-React;长列表用过 react-window 与 react-virtualized,两者的作者是同一个人,react-window 相对于 react-virtualized 体积更小,也被作者推荐。最后是状态管理,主要是 Redux 与 Mobx,这两者的区别就很大了,Redux 主要基于全局单一状态的思路,Mobx 主要是基于响应式的思路,更像 Vue。

  • 然后是构建。

构建主要是 webpack、Rollup 、Vite 与 esBuild。webpack 久经考验,更适合做大型项目的交付;Rollup 常用于打包小型的库,更干净便捷;Vite主打极速的服务启动,轻量快速的热重载;esBuild 作为新起之秀,性能十分优异,与传统构建器相比,性能最大可以跑出 100 倍的差距,值得关注,尤其是与 webpack 结合使用这点,便于优化 webpack 构建性能。这几个库的详细对比可以看这里:webpack vs rollup vs vite vs esbuild vs @swc/core | Compare NPM Packages

  • 再者是检查。

检查主要是代码规范与代码测试编写。代码规范检查一般是 ESLint,再装插件,属于常规操作。编写代码测试会用到 jest、enzyme、react-testing-library、react-hooks-testing-library:jest 是 Facebook 大力推广的测试框架;enzyme 是 Aribnb 大力推广的测试工具库,基本完整包含了大部分测试场景;react-testing-library 与 react-hooks-testing-library 是由社区主推的测试框架,功能上与 enzyme 部分有所重合。

  • 最后是发布。

静态资源可托管在 CDN 上,需要在 webpack 中引入上传插件。可使用的 s3-plugin-webpack,主要是识别构建后的静态文件进行上传。

以上工具可总结为如下思维导图:

如果您还有其他好的工具库推荐,欢迎留言我更新汇总,共同提升开发效率 ~ O(∩_∩)O

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设备在线监控系统软件

在数字化、智能化的浪潮中,物联网技术正以前所未有的速度改变着我们的工作和生活方式。作为物联网技术的核心组成部分,设备在线监控系统软件的重要性日益凸显。今天,我们就来详细探讨一下HiWoo Cloud平台如何助力企业实现设备的全面监控与管理…

纯血鸿蒙开发教程:如何实现运动饮食卡片效果

开发背景 人们对健康的要求越来越高,从单纯的健康饮食到健康运动,再到两者的结合。但是,饮食和运动之间的平衡一般人很难掌握,而我们这款 APP 将饮食、运动、以及自身身体状况(如体脂、体重、内脂等)有机结…

强烈安利10款手机App!

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/ 1.听书神器——昊昊听书 昊昊听书app是一款专门为用户提供有声读物的应用程序。它不仅提供了各种类型的有声书籍,还有各种知名的电…

Hugging Face系列2:详细剖析Hugging Face网站资源——实战六类开源库

Hugging Face系列2:详细剖析Hugging Face网站资源——实战六类开源库 前言本篇摘要2. Hugging Face开源库2.1 transformers2.1.1 简介2.1.2 实战1. 文本分类2. 图像识别3. 在Pytorch和TensorFlow中使用pipeline 2.2 diffusers2.2.1 简介2.2.2 实战1. 管线2. 模型和调…

使用OpenPCDet实现VoxelNext进行训练和测试:实现NuScence数据集的全局感知结果可视化

在自动驾驶和机器人技术日益蓬勃发展的今天,3D目标检测技术成为关键的一环,它赋予机器以理解和响应周围环境的能力。本文将深入探讨如何使用开源的OpenPCDet框架训练先进的VoxelNeX模型,并在nuScenes数据集上进行训练、测试,最后实…

MYSQL8.30版本 服务开不了问题

CMD→services.msc 启动MySQL80时突然发现了问题,服务无法启动了: 解决方案1: 解决方案: 1. 找到mysql的data文件夹,将data进行备份,一定要备份! (data文件夹路径可以在mysql安装…

PS的抠图算法原理剖析 1

以这个抠tree为例子 在PS里,操作过程是让你开启R G B三个通道 分别看一下 哪一个的对比最明显 上面的图片 树叶肯定B最少 天空B富裕,所以对比最明显的就用B通道 然后使用一些奇怪的函数,把texture.bbb这张图片变成黑白,纯黑纯白 那…

LINUX系统编程:核心转储

目录 核心转储 这两个有什么区别呢? 那为什么在我们使用Core终止进程时没看见core文件呢? 那为什么这么好用的功能是被关闭的呢? 如何开启核心转储 写个除零错误验证一下 使用Core文件 核心转储 在使用信号的时候,我们发现…

事务管理AOP

通过事务操作 删除部门的时候,同时删除员工,那么如果其中有异常,那么就进行事务回滚 使用注解Trance Transactional-propagation(传播行为)

多语言接入淘宝API抓取淘宝数据库数据获取详情页信息评论数据等,打造个性化营销策略

在数字化时代,个性化营销已成为品牌与消费者建立联系的关键。淘宝API作为强大的工具,能够帮助商家深入挖掘消费者需求,实现精准营销。本文将探讨如何通过淘宝API提升营销效果,增强用户体验。 消费者洞察: 淘宝API提供丰…

电商行业为什么要分析竞对品牌?从哪些维度开展竞对品牌分析?

在品牌林立的商业战场上,了解和分析竞争品牌成为了企业制定市场策略的重要一环。同行业的品牌间竞争尤为激烈,因为它们往往服务于同一类消费者,提供相似的产品和服务。为了在这场竞争中站稳脚跟,甚至脱颖而出,商家必须…

关于LPC1768在线升级的实现的注意事项

开发环境:Keil 5 uVision V5.38.0.0 1、使用IAP的方式(应用程序在线编程) 2、在Flash中构建用于升级的不同区域 (1)引导区 (2)APP区 (3)升级代码存放区域 注意&…

【嵌入式DIY实例】-OLED显示BME280传感器数据

OLED显示BME280传感器数据 文章目录 OLED显示BME280传感器数据1、硬件准备与接线2、代码实现本文将介绍如何使用 ESP8266 NodeMCU 开发板(ESP12-E 模块)和 BME280 气压、温度和湿度传感器构建本地气象站。 NodeMCU 从 BME280 传感器读取温度、湿度和压力值,并将它们(分别以…

Stable Diffusion原理

核心 和diffusion相比,使用了latent(隐式空间)做diffusion,这样速度更快!!! SD模型的主体结构如下图所示,主要包括三个模型: autoencoder:encoder将图像压…

引擎:Shader

一、原理 创建Shader脚本,创建材质球,将物体的渲染效果Shader脚本挂载到材质球,最后把材质球挂到3d物体上面从而实现渲染。 二、模型边缘发光 原理:正对着摄像机的模型三角面边缘光最弱,垂直于摄像机的模型三角面边缘光…

C#——随机类Random类

Random类 C#的Random类是用于生成随机数的类,属于System命名空间,可以生成各种类型的随机数,例如整型、双精度浮点型、布尔型等。 使用方法: 使用random数据类型关键字 声明一个random的变量 值使用new random 来实例化这个变量…

电脑提示msvcp140.dll丢失的解决方法(附带详细msvcp140.dll文件分析)

msvcp140.dll是一个动态链接库(DLL)文件,属于Microsoft Visual C 2015 Redistributable的一部分。它全称为 "Microsoft C Runtime Library" 或 "Microsoft C Runtime Library",表明该文件是微软C运行时库的一…

0.2 模拟电视简介

0.2 模拟电视简介 模拟电视指从图像信号的产生、传输、处理到接收机的复原,整个过程几乎都是在模拟体制下完成的电视系统或电视设备。模拟电视使用模拟信号传输图像和音频,模拟信号的幅度、相位和频率分别表示图像的亮度、颜色和声音。模拟电视的优点&a…

石油行业的数字化转型与智能化发展:新技术综合运用助力业务提升

引言 石油行业面临的挑战与机遇 石油行业是全球能源供应的重要支柱,然而,随着资源枯竭、环境压力增加以及市场竞争加剧,石油企业面临着前所未有的挑战。传统的勘探和生产方式已经难以满足当前高效、安全、环保的要求。同时,能源转…

CSAPP Lab08——Proxy Lab完成思路

蓝色的思念 突然演变成了阳光的夏天 空气中的温暖不会很遥远 ——被风吹过的夏天 完整代码见:CSAPP/proxylab-handout at main SnowLegend-star/CSAPP (github.com) Q:计算机网络中port的作用是什么? A:在计算机网络中&#xff…