众所周知,React 是 JavaScript 库,用于构建出色的用户界面。但是,并不是每个人都在使用相同的工具或都知道所有有用的工具,这些工具有助于使 React 开发体验更有趣,更主动。
如果大家还没使用 React ,或者你有对它感兴趣的朋友,当他们问你为什么选择这个库的时候,你该怎么回答呢?除了告诉他们这个库有多棒以外(这应该是首先要说的事),我还想提一下,这些由开源社区创建的工具有助于把开发体验带到一个全新的令人兴奋的水平。
以下是 2019 年大家可以用来构建 React 应用程序的 22 个工具(该列表没有按它们的重要性排序)。
大家有没有想过自己的应用程序哪些包或哪部分占用了全部空间?好了,我们可以用 webpack-bundle-analyzer 来查看,它将帮助我们识别出占用最多空间的输出文件。
它将创建一个实时服务器,并向我们提供捆绑包内容的交互式可视化树状图。借助此工具包,我们可以查看所显示文件的位置,它们的 gzip 大小,解析后的大小及其所属的父子级文件。
有什么好处?我们可以根据看到的图示来优化我们的 React 应用!
这是它的屏幕截图:
我们可以清楚地看到 pdf 软件包在应用程序中占据了最大的空间。它还占据了最大屏幕,这对我们都很有用。
不过,屏幕截图质量非常小。我们还可以输入有用的选项以查看更多详细信息,如 generateStatsFile: true, 并且可以选择生成静态 HTML 文件,保存在开发环境之外的某个地方,以备后用。
React-Proto 是面向开发人员和设计人员的原型制作工具。这是一个桌面软件,所以在使用之前,我们需要下载安装该软件。
以下是工具页面样式:
该应用程序允许我们声明属性及其类型,在树状图中查看组件,导入背景图像,将其定义为有状态或无状态,定义其父组件,放大/缩小,以及将原型导出到一个新的或已有的项目中。
该应用程序似乎更适合 Mac 用户,不过,它也支持 Windows。
当我们完成用户界面映射后,可以选择导出到现有项目或新项目中。如果选择导出到现有项目并选择了根目录,它们将被导出到 ./src/components,如下所示:
以下是在示例中我们使用组件之一的例子:
React-Proto 在 GitHub 上获得了 2,000 个星标。
不过,我认为这个应用程序还需要更新,并且还有很多需要做的工作,尤其是 React Hooks 的发布。
除非我们有一张可见的背景图片,不然就不能缩小。换句话说,如果导入一张背景图片,缩小,然后删除这张图片后,图就无法放大了,因为操作按钮已经变灰色,不可使用了。
放大的唯一方法是重新导入背景图片,放大后将其删除。这个缺陷改变了我对这个工具产生的好感,但因为在其他地方看不到此开源文件,所以把它加入了列表中。当然,成为开源软件对这个应用程序来说是件好事,因为这使它有可能成为未来流行的开源存储库列表。
Why Did You Render 猴子补丁 React 通知我们可以避免重渲染。这不仅非常有用,还可以指导我们对项目进行性能修复,帮助我们了解 React 工作的方式。而且,当我们对 React 工作原理有更多的了解时,也能让我们成为更好的 React 开发人员。
猴子补丁: 这个叫法起源于 Zope 框架,大家在修正 Zope 的 Bug 的时候经常在程序后面追加更新部分,这些被称作是“杂牌军补丁(guerilla patch)”,后来 guerilla 就渐渐的写成了 gorllia(猩猩),再后来就写了monkey(猴子),所以猴子补丁的叫法是这么莫名其妙的得来的。
我们可以通过声明一个额外的静态属性 whyDidYouRender
,并将其值设置为 true
,把一个侦听器附加到任意自定义组件:
import React from 'react'
import Button from '@material-ui/core/Button'
const Child = (props) => <div {...props} />
const Child2 = ({ children, ...props }) => (
<div {...props}>
{children} <Child />
</div>
)
Child2.whyDidYouRender = true
const App = () => {
const [state, setState] = React.useState({})
return (
<div>
<Child>{JSON.stringify(state, null, 2)}</Child>
<div>
<Button type="button" onClick={() => setState({ hello: 'hi' })}>
Submit
</Button>
</div>
<Child2>Child #2</Child2>
</div>
)
}
export default App
只有这样做之后,我们的控制台才会弹出令人难以置信的烦人警报:
但别误会,请把它当成一件好事。利用那些烦人的消息,我们就可以修复那些浪费的重渲染。
大家都知道 Create React App 是启动开发 React 项目最快的方法(拥有开箱即用的现代功能)。
还有什么能比 npx create-react-app <name>
更简单的呢?
我在 Medium 上的教程(以及 Dev.to)都是用 create-react-app 构建 React 接口界面的,就因为它又快又简单。
我们当中有些人可能不知道如何用 CRA 来创建一个 TypeScript 项目。我们要做的就是在末尾加上 --typescript
:
npx create-react-app <name> --typescript
这会帮我们省去给 CRA 项目手工添加 TypeScript 的麻烦。
React-Lifecycle-Visualizer 是一个 npm 软件包,用于跟踪和可视化任意 React 组件的生命周期方法。
与 Why Did You Render 相似,我们可以选择任何组件来启动生命周期可视化工具:
import React from 'react'
import {
Log,
VisualizerProvider,
traceLifecycle,
} from 'react-lifecycle-visualizer'
class TracedComponent extends React.Component {
state = {
loaded: false,
}
componentDidMount() {
this.props.onMount()
}
render() {
return <h2>Traced Component</h2>
}
}
const EnhancedTracedComponent = traceLifecycle(TracedComponent)
const App = () => (
<VisualizerProvider>
<EnhancedTracedComponent />
<Log />
</VisualizerProvider>
)
运行结果,如下所示:
但是,其中一个缺点是它目前仅适用于类组件,因此尚不支持 Hook 。
Guppy 是 React 的一个友好且免费的应用程序管理器和任务运行器,可以在桌面上运行且支持跨平台,大家可以放心使用。
它提供了很多友好的图形界面,为 React 开发人员的一些典型任务项目提供支持。例如创建新项目,执行任务和管理依赖项。并在 2018 年 8 月添加支持 Windows,因此可以放心,它肯定是跨平台的。
以下是 Guppy 使用时的样子:
我一直很喜欢 react-testing-library,因为在编写单元测试时感觉不错。这个包提供了实用的 DOM 测试程序,鼓励良好的测试实践。
此解决方案旨在解决测试实施细节的问题,就像用户可以看到它们一样,而不是测试 React 组件的输入/输出。
测试实施细节并不是确保应用按预期运行的有效方法。当然,我们能够更清楚的了解如何获取组件所需的数据,使用哪种排序方法等。但是,如果我们必须更改实现方式以指向另一个数据库的话,单元测试就会失败,因为这些是耦合逻辑的实现细节。
这是 react-testing-library 解决的一个问题,因为理想情况下,我们只希望我们的用户界面能够正常工作并最终正确显示。只要这些组件能够提供预期的输出,数据如何获取到这些组件实际上并不重要。
以下是使用此库进行测试的示例代码:
// Hoist helper functions (but not vars) to reuse between test cases
const renderComponent = ({ count }) =>
render(
<StateMock state={{ count }}>
<StatefulCounter />
</StateMock>,
)
it('renders initial count', async () => {
// Render new instance in every test to prevent leaking state
const { getByText } = renderComponent({ count: 5 })
await waitForElement(() => getByText(/clicked 5 times/i))
})
it('increments count', async () => {
// Render new instance in every test to prevent leaking state
const { getByText } = renderComponent({ count: 5 })
fireEvent.click(getByText('+1'))
await waitForElement(() => getByText(/clicked 6 times/i))
})
React Developer Tools 是一个扩展插件,它允许在 Chrome 和 Firefox 开发人员工具中查看 React 组件层次结构。
这是 React 开发中最常见的扩展插件,并且是 React 开发人员用来调试其应用程序的最有用的工具之一。
在使用诸如 material-ui 或 semantic-ui-react 之类的组件库时,Bit 是一个很好的替代方案。它可以让我们探索数千个开源组件,并使用它们来构建项目。
有很多不同的 React 组件,可供任何人使用,包括选项卡、按钮、图表、表格、导航条、下拉菜单、加载旋转器、日期选择器、面包屑导航(breadcrumbs)、图标、布局等等。
这些是由其他 React 开发人员上传的,这些开发人员就跟你我一样。
但是,也有一些可用的实用程序,如格式化日期之间的距离。
如果大家还不了解 Storybook,并且希望能够轻松地构建 UI 组件,我强烈建议你立即使用它。该工具启动了支持热重载的实时开发服务器,让我们可以在其中独立地实时开发 React 组件。
另一个很棒的事情是,我们可以使用现有的开源插件,将我们的开发经验提升到一个全新的水平。例如,利用 Storybook README 包,我们可以在同一页面上创建 README 文档,同时开发供生产使用的 React 组件。这足以作为常规文档页面了:
大家有没有想过自己的应用程序在流程图中看起来是什么样的?React -sight 可以让整个应用程序以树状图的形式展示层次结构,清楚查看我们的 React 应用程序。它还支持 React Router,Redux 和 React Fibre。
使用此工具,我们可以将鼠标悬停在节点上,这些节点是指向树中与它们直接相关的组件的链接。
如果大家在查看结果时遇到问题,可以在地址栏上输入 chrome:extensions,找到 React Sight 框并单击 Allow access to file URLs 开关,如下所示:
React-cosmos 是用于创建可重复使用 React 组件的开发工具。
它会扫描项目中的组件,并且可以实现以下功能:
这是本次推荐中最好的可用工具之一,它可以让我们手动使用 React 的速度比眨眼还快(好吧,也许也没那么快)。
这个称为 CodeSandbox 的工具是一个在线编辑器,我们从创建原型到 Web 应用程序部署 - 都可以在这个网站实现!
在早期,Codesandbox 仅支持 React,但现在已经扩展到 Vue 和 Angular 等库。他们还支持常见的静态站点生成器(如 gatsby 或 nextjs )创建项目来启动下一个 React Web 项目。
关于 codesandbox,它不仅活跃,还有很多有意思的事情可以讨论。如果大家需要探索一下人们为方便大家起见正在构建的一些项目,那么单击 explore 就可以轻松访问到大量代码示例,来帮助大家更新下一个项目:
大家一旦开始编辑项目,就会意识到,实际上要使用的是个功能强大的 VSCode 编辑器。我很想写一篇完整的文章,介绍我们今天在 codeandbox 上可以使用的所有功能,不过,现在看起来工作已经完成了。
React bits 是 React 模式、技术、技巧和窍门的集合,所有这些都以类似在线文档的格式编写,大家可以在同一个选项卡上快速访问不同的设计模式和技术、反模式、样式、UX 变体以及其他有用的与 React 相关的材料。
他们有一个 GitHub 存储库,目前有 10437 星。
一些示例包括诸如道具代理,在不同场景下处理各种 UX 的组合之类的概念,甚至还提示了每个开发人员应该避免的一些陷阱。
这是他们页面上的样子,如大家在左侧的菜单上看到的那样,有很多信息:)
Folderize 是一个 VSCode 扩展。它可以让我们将组件文件转换为组件文件夹结构。转换后的 React 组件仍将是一个组件,只是现在已转换为一个目录。
例如,假设我们正在创建一个 React 组件,它把文件作为属性以显示有用的信息,比如它们的元数据。元数据组件的逻辑占用了很多行,因此我们决定将其拆分为一个单独的文件。但是,当我们决定这样做时,我们就有了两个相互关联的文件。
因此,如果我们的目录如下所示:
我们可能想把 FileView.js 和 FileMetadata.js 抽象到目录结构中,像 Apples- 那样,特别是如果我们希望添加更多与文件相关的组件,比如 FileScanner.js 。这就是 folderize 可以为我们做的事情,这样它们就可以具有以下类似结构:
import React from 'react'
import FileView from './src/components/FileView'
const App = (props) => <FileView {...props} />
export default App
React Starter Projects 是一个很棒的依赖库列表,我们可以在一个页面中查看全部项目。因此,如果我们觉得能同时快速查看到大量选项是非常有用的,那么这个很适合我们。
一旦看到喜欢的入门项目后,我们就可以简单克隆存储库,根据开发中的应用需要进行简单修改。但是,并非所有的库都用来克隆存储库,因为其中一些库需要通过安装形式,才能成为项目的依赖项。这样可以更轻松地获取更新并保持项目整洁。
以下是该页面看起来的样子:
可以说,这是每个开发者工具包里都应该有的重要工具。Highlight Updates 是 React DevTools 的一项扩展功能,可以查看页面中的哪些组件正在不必要地重渲染。
它们会用橙色/红色标出严重的重渲染问题,帮助我们在开发页面时更容易的发现一些性能问题。
除非我们的目标是构建平庸的应用程序,否则为什么不试试这个在我们身边的好东西。
React Diff Viewer 是使用 Diff 和 React 制作的简单美观的文本差异查看器。支持多种功能,如:分屏视图,内联视图,单词差异,行高亮显示等。
如果我们想将此功能嵌入记事本(如 Boostnote)和自定义至应用程序(比如主题颜色、故事演示文档组合等),那么,它将非常有用。
JS.coach 是我经常用来查找 React 相关材料的网站。我不知道为什么提到这个网站的人不多,但在这个页面我发现了几乎所有我需要的信息,它快捷、方便,并不断更新,总是能为我所有的项目提供所需的结果。
最近,他们添加了 React VR 选项卡,这真是太好了!
Awesome React 开源库是一个与 React 相关的并非常棒的列表。
这让我可能会忘记其他网站只从这个链接学习 React 。因为可以在此找到大量有用的资源,这些资源肯定会帮助我们构建出色的 React 应用程序!
Proton Native 为大家提供了一个 React 环境来构建跨平台的本机桌面应用程序。
它是 Electron 的替代产品,只有一些简洁的功能,包括:
有兴趣了解更多吗?请阅读他们的文档。
一个不错的 React 速查表,尽管它缺少 React Hooks。不用担心,我将为 Reactv16.8 + 创建速查表,请继续关注。
以上就是本次分享的全部工具。希望大家在这里找到了有价值的信息。
本文由哈喽比特于4年以前收录,如有侵权请联系我们。
文章来源:https://mp.weixin.qq.com/s/Xf4kk_VjA2FrZuViHLSCzA
京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。
日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。
据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。
今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。
日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。
近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。
据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。
9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...
9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。
据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。
特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。
据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。
近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。
据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。
9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。
《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。
近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。
社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”
2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。
罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。