前端必备的20种基本React工具「干货」,web开发重点

  • 编译类型检查
  • 支持所有React工具和库,包括Create React App
  • 提高JavaScript技能的好方法

缺点:

  • 有学习曲线,但可以选择退出

Redux

  • 网站:redux.js.org
  • 仓库:github.com/reduxjs/redux
  • GitHub星:52,000+
  • 开发商:月亮
  • 当前版本:4.0.5
  • 贡献者:700+

JavaScript应用程序的可预测状态管理容器。该工具带有管理状态数据的商店。状态突变只能通过调度消息来实现。消息对象包含一种类型,该类型向减速器发送信号以触发哪个突变。建议将所有内容保存在单个商店中。Redux在单个商店中支持多个reducer。减速器在输入参数和输出状态之间具有一对一的关系。这使减速器具有纯功能。

一个典型的改变状态的reduce可能看起来像这样:

const simpleReducer = (state = {}, action) => {
switch (action.type) {
case ‘SIMPLE_UPDATE_DATA’:
return {…state, data: action.payload};

default:
return state;
}
};

优点:

  • 可预测的状态管理
  • 单个商店中有多个异径管
  • 减速器是纯函数

缺点:

  • 从头开始设置可能会有些痛苦

React-Redux

  • 网站:react-redux.js.org
  • 仓库:github.com/reduxjs/redux
  • GitHub星级:18,500+
  • 开发商:月亮
  • 当前版本:7.1.3
  • 贡献者:190+

Redux的官方React绑定,有两个主要模块:Provider和connect。Provider是带有storeprop 的React组件。这个道具是单个商店如何连接JSX标记的方式。connect函数接受两个参数:mapStateToProps和mapDispatchToProps。这是Redux的状态管理与组件属性联系在一起的地方。当状态发生变化或调度时,绑定负责在React中设置状态。

这是连接的外观:

import { bindActionCreators } from ‘redux’;
import { connect } from ‘react-redux’;

const mapStateToProps = (state) => state.simple;
const mapDispatchToProps = (dispatch) =>
bindActionCreators({() => ({type: ‘SIMPLE_UPDATE_DATA’})}, dispatch);

connect(mapStateToProps, mapDispatchToProps)(SimpleComponent);

优点:

  • Redux的官方React绑定
  • 与JSX标记绑定
  • 将组件连接到单个商店

缺点:

  • 学习曲线有些陡峭

Redux-Thunk

  • 网站:npmjs.com/package/redux-thunk
  • 仓库:github.com/reduxjs/redux-thunk
  • GitHub星:14,000+
  • 开发商:月亮
  • 当前版本:2.3.0
  • 贡献者:40+

Thunk中间件,用于Redux进行异步API调用。它在重击之后延迟执行以解锁异步。重击是阻止评估的功能。例如,,() => 1 + 1因为它没有立即执行。这带有一些细微之处,例如访问存储状态和调度。thunk中还支持可选参数。

例如:

const loadData = () => async (dispatch, getState, optionalAsyncTool) => {
const state = getState();

const response = await optionalAsyncTool.get(‘/url/’ + state.data);
dispatch({type: ‘SIMPLE_LOAD_DATA’, payload: response.data});
};

优点:

  • 异步的典型工具
  • 进入国家并派遣
  • 可通过可选参数配置

缺点:

  • 起初,用途不是很清楚

Redux记录器(Redux-Logger)

  • 网站:npmjs.com/package/redux-logger
  • 仓库:github.com/LogRocket/redux-logger
  • GitHub星:5,000+
  • 开发人员:Log Rocket
  • 当前版本:2.0.4
  • 贡献者:40+

用于Redux的Logger,捕获通过商店的所有调度。每次调度均在日志消息中显示在开发控制台中。它允许钻入上一个和下一个状态。分派中的操作也可用于有效负载检查。该记录器在本地开发人员中非常有用,可以在构建后删除。

以下是Redux中间件中的潜在设置:

import { createStore } from ‘redux’;

let middleware = [];

if (process.env.NODE_ENV === ‘development’) { // rip out post-build
const {logger} = require(‘redux-logger’);
middleware.push(logger);
}

export default () => createStore({}, applyMiddleware(…middleware));

优点:

  • 优秀的Redux洞察力
  • 捕获商店中的所有调度
  • 只能在本地开发人员中运行

缺点:

  • 难以过滤掉不需要的消息

Lodash

  • 网站:lodash.com
  • 仓库:github.com/lodash/lodash
  • GitHub星级:43,500+
  • 开发人员:Lodash Utilities
  • 当前版本:4.17.5
  • 投稿人:250+

一个现代的JavaScript实用程序库,可用于React组件。onChange每个击键一次响应表单输入,如火灾。如果组件从后端API获取数据,则每次击键都会触发一次请求。这会阻塞后端API,并在许多人使用UI时引起问题。Lodash带有防反弹事件,该事件会触发许多按键的API请求。

设置onChange去抖动事件:

onChange={(e) => debounce(updateDataValue(e.target.value), 250)}

优点:

  • 模块化依赖
  • 很好地与代码拆分
  • 易于使用

缺点:

  • 知道何时对事件进行反跳不是很明显

Axios

  • 网站:npmjs.com/package/axios
  • 仓库:github.com/axios/axios
  • GitHub星级:69,500+
  • 开发人员:axios
  • 当前版本:0.19.2
  • 贡献者:200+

基于Promise的HTTP客户端,在thunk中效果很好。该工具支持async / await语法,以从浏览器发出Ajax请求。如果出现错误,它支持错误处理catch。该工具的API支持HTTP请求,例如GET,DELETE,POST,PUT和PATCH。这与Promise API调用(例如Promise.all()并行发送HTTP请求)也能很好地配合。

在内部,axios可以像这样工作:

const loadData = () => async (dispatch, getState, axios) => {
try {
const response = await Promise.all([
axios.get(‘/url’),
axios.post(‘/url’, getState())
]);

dispatch(updateData(response[0].data));
return dispatch(updateData(response[1].data));
} catch (reason) {
return dispatch(error(reason.message));
}
};

优点:

  • 基于承诺
  • 支持异步/等待
  • 支持错误处理

缺点:

  • 它再也无法实现了

Jest

  • 网站:jestjs.io
  • 仓库:github.com/facebook/jest
  • GitHub星级:29,500+
  • 开发人员:Facebook
  • 当前版本:25.1.0
  • 贡献者:1,000+

Jest是一个测试框架,专注于JavaScript项目的简单性。好消息是它内置在Create React App中。它适用于使用Babel,TypeScript和Node的项目。大多数React项目上没有任何配置。测试可以在监视模式下运行,该模式可以跟踪代码更改并重新运行测试。该API包含it,并且expect可以快速上手。

确保测试执行的健全性检查是:

it(‘says true is true’, () => {
expect(true).toBe(true);
});

优点:

  • 使用Create React App轻松设置
  • 流利的API
  • 在监视模式下运行

缺点:

  • 骨骼太裸而无法渲染React组件

Enzyme

  • 网站:airbnb.io/enzyme
  • 仓库:github.com/airbnb/enzyme
  • GitHub星级:18,500+
  • 开发商:Airbnb
  • 当前版本:2.9.1
  • 投稿人:300+

一个用于React的JavaScript测试实用程序,可以更轻松地测试组件。该API的含义与jQuery一样直观。要获取酶,它需要两个软件包:enzyme和一个单独的适配器。适配器必须与React版本兼容。例如,enzyme-adapter-react-16对于React ^16.4.0,
enzyme-adapter-react-16.3for ~16.3.0等等。适配器需要一个配置文件setupTest.js才能与Jest集成。

使用React 16时,请使用以下方法安装酶:

npm i --save-dev enzyme enzyme-adapter-react-16

优点:

  • 支持React组件
  • 支持Jest测试框架
  • 直观的API

缺点:

  • 在Jest中设置适配器有点痛苦

浅渲染器(Shallow Renderer)

  • 网站:airbnb.io/enzyme/docs/api/shallow.html
  • 仓库:github.com/airbnb/enzyme
  • GitHub星级:18,500+
  • 开发商:Airbnb
  • 当前版本:2.9.1
  • 投稿人:300+

这是浅浅的呈现,有助于将测试限制在一个深度。它在不影响其子级的树状层次结构中呈现父级组件。这样可以隔离测试并使断言更加可靠。浅层渲染支持用于遍历组件的很大一部分Enzyme API。该shallowAPI确实会在渲染期间componentDidMount和调用生命周期方法componentDidUpdate。使用Hooks时,浅渲染器不会调用useEffect。一个技巧是console.log(component.debug())检查浅渲染器看到的内容。

要使用浅层渲染器测试React组件:

const component = shallow(<ParentComponent data={“Dave”} />);
expect(component.find(‘p’).at(0).text()).toBe(‘Dave’);

优点:

  • 隔离测试
  • 全功能API
  • 允许快速调试

缺点:

  • 必须浏览酵素API中的选项之海,才能在毛坯钻石中找到钻石

Storybook

  • 网站:storybook.js.org
  • 仓库:github.com/storybookjs/storybook
  • GitHub星级:45,500+
  • 开发人员:故事书
  • 当前版本:5.3.13
  • 投稿人:900+

开源工具,用于隔离地手动测试React组件。故事书提供了一个沙箱,用于构建难以进入边缘案例的组件。它允许进行模拟,因此可以呈现难以复制的关键状态的组件。使用时,使用Create React App会自动进行设置react-scripts。故事书中的每个故事都可以针对具有多个状态的单个组件。故事文件具有类似的约定,component.stories.js因此可以快速找到它们。

要开始使用Storybook,请执行以下操作:

npx -p @storybook/cli sb init

优点:

  • 涵盖难以触及的案例
  • 在沙箱中渲染组件
  • 与Create React App集成

缺点:

  • 难以自动化测试

React Bootstrap

  • 网站:react-bootstrap.github.io
  • 仓库:github.com/react-bootstrap/react-bootstrap
  • GitHub星:17,000+
  • 开发人员:react-bootstrap
  • 当前版本:1.0.0-beta.16
  • 投稿人:900+

这是为React重建的最流行的前端框架。每个Bootstrap组件都是作为React组件从头开始构建的。这将替换Bootstrap JavaScript和nukes等jQuery依赖项。最新的Beta版本支持Bootstrap 4.3。React Bootstrap可与版本4中已经发现的数千个Bootstrap主题一起使用。每个组件都具有可访问性,默认情况下可访问。它支持开箱即用的Create React App,还支持自定义主题。

在React项目中启动React Bootstrap:

npm install react-bootstrap bootstrap

结果可能是这样的:

优点:

  • 使用React组件从头开始重建
  • 易用性
  • 支持创建React App

缺点:

  • 自定义主题在Create React App中可能很棘手

Material-UI

  • 网站:material-ui.com
  • 仓库:github.com/mui-org/material-ui
  • GitHub星级:54,500+
  • 开发人员:Material-UI
  • 当前版本:4.9.3
  • 贡献者:1,500+

流行的React组件,可以更快,更轻松地进行Web开发。这允许您构建自己的设计系统或从Material Design开始。提供高级和免费的模板和主题。高级主题的价格取决于功能。Material-UI通过NPM软件包来进行快速安装。

要开始使用Material-UI,请执行以下操作:

npm install @material-ui/core

结果可能是这样的:

资源

优点:

  • 轻松构建强大的UI
  • 提供许多组件
  • 提供许多模板

缺点:

  • 一些高级模板确实需要成本,但可能值得

Elemental UI

  • 网站:elemental-ui.com
  • 仓库:github.com/elementalui/elemental
  • GitHub星级:4,000+
  • 开发人员:Elemental-UI
  • 当前版本:0.6.1
  • 贡献者:25+

最初用于KeystoneJS的React应用程序工具包。这是一个实验性的UI工具包,它源于实际需求。目标是一组独立的或捆绑在一起的无组件的React组件。它具有毫不夸张的默认样式和灵活的主题功能。

要开始使用元素界面:

npm i elemental --save

结果可能如下所示:

优点:

  • 可重复使用的独立组件
  • 灵活的默认样式
  • 受现实世界场景启发

缺点:

  • 仍在开发中

Semantic UI


自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

前端校招精编面试解析大全点击这里免费获取完整版pdf查看

的朋友,同时减轻大家的负担。**

[外链图片转存中…(img-wWeoVZMf-1712312259573)]

[外链图片转存中…(img-GVyHJilX-1712312259573)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

[外链图片转存中…(img-1pYH90DG-1712312259573)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

前端校招精编面试解析大全点击这里免费获取完整版pdf查看

  • 19
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ReactNative可以基于目前大热的开源JavaScript库React.js开发iOS和Android原生App。而且React Native已经用于生产环境——Facebook Groups iOS应用就是基于它开发的。 React Native的原理是在JavaScript中用React抽象操作系统原生的UI组件,代替DOM元素来渲染,比如以取代,以替代等。 在幕后,React Native在主线程之外,在另一个背景线程里运行JavaScript引擎,两个线程之间通过一批量化的async消息协议来通信(有一个专门的React插件)。 UI方面React Native提供跨平台的类似Flexbox的布局系统,还支持CSS子集。可以用JSX或者普通JavaScript语言,还有CoffeeScript和TypeScript来开发。有评论说,React的UI层模型要比UIKit好很多。 更好的是,由于基于Web技术,开发起来可以像在浏览器里那样随时在仿真程序中查看应用运行情况,刷新一下就行,无需编译,爽吧。 React Native比起标准Web开发或原生开发能够带来的三大好处: 1、手势识别:基于Web技术(HTML5/JavaScript)构建的移动应用经常被抱怨缺乏及时响应。而基于原生UI的React Native能避免这些问题从而实现实时响应。 2、原生组件:使用HTML5/JavaScript实现的组件比起原生组件总是让人感觉差一截,而React Native由于采用了原生UI组件自然没有此问题。 3、样式和布局:iOS、Android和基于Web的应用各自有不同的样式和布局机制。React Native通过一个基于FlexBox的布局引擎在所有移动平台上实现了一致的跨平台样式和布局方案。 ReactNative移动开发工具 更新日志: v0.64.1 此修补程序版本专门针对解决Xcode 12.5中的iOS构建问题。 除了将您的版本从0.64.0升级到0.64.1之外,请检查您的podfile.lock并确保Flipper的版本为0.75或更高,并且Flipper-Folly的版本为2.5.3或更高;如果没有,请将此行添加到您的podfile中(或修改它,如果您已经拥有的话): use_flipper!('Flipper' => '0.75.1', 'Flipper-Folly' => '2.5.3', 'Flipper-RSocket' => '1.3.1') 之后,进行所有经典的必要清理(node_modules,缓存,pod文件夹等)(react-native-clean-project是您的盟友),然后进行yarn install一次pod install --repo-update(如果pod安装由于Flipper软件包的错误而失败,只需删除podfile.lock中的相关行,然后再次运行pod install)。 随Xcode 12.5修复程序挑选和发布的唯一其他提交是: 更新validateBaseUrl以使用最新的正则表达式(commit),该正则表达式修复了CVE-2020-1920,GHSL-2020-293。 Tags:ReactNative 移动开发工具 React Native下载

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值