众所周知,React是一个用于构建出色用户界面的JavaScript库。然而,并不是每个人都在使用相同的工具,或者知道它们可以用来让React开发体验更有趣。如果你没有使用过React,或者有朋友可能对使用React感兴趣,当他们问你为什么使用React库时你会怎么说?除了告诉他们React有多棒(应该是第一件事)之外,我还想提到开源社区创建的工具有助于将体验提升到一个全新的水平。以下是22种可用于在2020年构建React应用程序的工具(此列表按重要性排序)。1.WebpackBundleAnalyzer有没有想过应用程序的哪些包或部分占用了所有空间?好吧,您可以使用WebpackBundleAnalyzer找到答案,这将帮助您识别占用最多空间的输出文件。它将创建一个实时服务器并为您提供一个显示包内容的交互式树视图。使用此工具,您可以查看渲染文件的位置、压缩后的大小、解析后的大小以及父/子文件。你可以根据你所看到的来优化你的React应用程序!下面是它的截图:从上图中我们可以清楚地看到pdf包在应用程序中占用了最多的空间,但这也是占用屏幕最大空间的。这非常有用。虽然屏幕截图很少,但您还可以使用有用的选项(如generateStatsFile:true)更详细地查看它,并且可以选择生成一个静态HTML文件以保存在开发环境之外的某个地方以供以后使用。2.React-ProtoReact-Proto是一款面向开发人员和设计人员的原型设计工具。它是桌面软件,因此您必须在使用前下载并安装该软件。这是一个使用该软件的示例:该应用程序允许您声明道具及其类型,在树视图中查看您的组件,导入背景图像,将它们定义为有状态或无状态,将它们的父组件定义为任何东西,放大/缩小,并将您的原型导出到新的或现有的项目中。该应用程序似乎更适合Mac用户,但对于Windows用户仍然可以正常工作。完成用户界面映射后,您可以选择导出到现有项目或新项目。如果您选择导出到现有项目并选择根目录,它会将它们导出到./src/components,如下所示:这是我们在示例中使用的组件示例:React-Proto在GitHub上可用2,000stars.不过就我个人而言,我认为该应用程序需要更新和做更多的工作,尤其是随着ReactHooks的发布。3.WhyDidYouRenderWhyDidYouRender让React通知你可以避免的重新渲染。这非常有用,不仅可以指导您完成项目的性能修复,还可以帮助您了解React的工作原理。而且,当你更好地理解React的工作原理时,它会让你成为更好的React开发人员。您可以通过声明一个值为true的附加静态属性whyDidYouRender将侦听器附加到任何自定义组件:importReactfrom'react'importButtonfrom'@material-ui/core/Button'constChild=(props)=>
constChild2=({children,...props})=>(
{children}
)Child2.whyDidYouRender=trueconstApp=()=>{const[state,setState]=React.useState({})return(
{JSON.stringify(state,null,2)}setState({hello:'hi'})}>提交
Child#2 )}exportdefaultApp只有这样做之后才会你的控制台发出一个令人难以置信的恼人警告:不要误会我的意思,把它当作一件好事。充分利用这些烦人的消息,这样你就可以修复那些浪费的重新渲染,而那些烦人的消息最终会离开你!4.创建ReactApp每个人都知道创建ReactApp是开始开发React项目的最快方式(开箱即用,具有现代功能)。有什么比npxcreate-react-app更容易的?我们中有些人可能不知道如何使用CRA创建TypeScript项目,您只需在最后添加--typescript即可:npxcreate-react-app
--typescript这样可以省去您手动添加的麻烦TypeScript到您的CRA项目。5.ReactLifecycleVisualizerReactLifecycleVisualizer是一个npm包,用于跟踪和可视化任何React组件的生命周期方法。就像你为什么渲染一样,你可以启用你选择的任何组件来调出生命周期可视化工具:已加载:false,}componentDidMount(){this.props.onMount()}render(){returnTracedComponent
}}constEnhancedTracedComponent=traceLifecycle(TracedComponent)constApp=()=>()这将显示可视化工具,如下所示:https://github.com/Oblosys/react-lifecycle-visualizer但是,这样做的缺点是它目前仅适用于类组件,因此暂不支持Hooks。6.GuppyGuppy是React的好朋友,React是一个在桌面上运行的免费应用程序管理器和任务运行器。他们似乎优先考虑那些刚接触React开发的人。但是,它也可能对高级开发人员有所帮助。它为React开发人员经常面临的许多典型任务提供了友好的图形用户界面,例如创建新项目、执行任务和管理依赖项。Windows支持于2018年8月添加,因此您可以放心它是跨平台的。这是Guppy的样子:https://github.com/joshwcomeau/guppy7。react-testing-library一直很喜欢react-testing-library,因为写单元测试的时候感觉很好。这个包提供了鼓励良好测试实践的ReactDOM测试实用程序。该解决方案旨在解决测试您的实现细节的问题,而不是像用户看到的那样测试React组件的输入/输出。测试实现细节并不是确保您的应用程序按预期工作的有效方法。当然,你会对如何获取你的组件需要的数据,使用哪种排序方式等等更有信心。但是,如果必须更改实现方式以指向另一个数据库,则单元测试将失败,因为它们是耦合逻辑的实现细节。这是react-test-library解决的问题,因为理想情况下,您只希望您的UI能够正常工作并最终正确呈现。只要它们仍然提供预期的输出,您如何将数据放入这些组件并不重要。下面是如何使用这个库放置测试的示例代码://Boosthelperfunctions(butnotvars)toreusebetweentestcasesconstrenderComponent=({count})=>render(,)it('rendersinitialcount',async()=>{//在每个测试中渲染一个新实例以防止泄漏状态。const{getByText}=renderComponent({count:5})awaitwaitForElement(()=>getByText(/clicked5times/i))})it('incrementscount',async()=>{//Rendernewineachtestinstanceto防止泄漏状态。const{getByText}=renderComponent({count:5})fireEvent.click(getByText('+1'))awaitwaitForElement(()=>getByText(/clicked6times/i))})8.React开发者工具ReactDeveloperTools是一个扩展,用于在Chrome和Firefox开发者工具中检查React的组件层次结构。这是此列表中最广为人知的扩展,并且仍然是React开发人员可以用来调试其应用程序的最有用的工具之一。9.BitBit是使用组件库(如Material-UI或SemanticUIReact)的绝佳选择。借助Bit,您可以探索数以千计的开源组件并使用它们来构建项目。https://bit.dev/有许多不同的React组件供任何人使用,包括标签、按钮、图表、表格、导航栏、下拉菜单、加载微调器、日期选择器、面包屑导航、图标、布局等等。这些都是由其他React开发人员上传的,比如你和我。但是,还有一些有用的实用程序,例如格式化日期。10.Storybook如果你还不知道Storybook,我强烈建议你开始使用它,如果你想更轻松地体验构建UI组件,那么你可以开始使用它。该工具启动实时开发服务器,即时支持热重载,您可以在其中独立和实时开发React组件。这样做的另一个好处是您可以使用现有的开源插件将您的开发体验提升到一个全新的水平。例如,使用StorybookREADME包,您可以在开发React组件时创建一个README文档,以便在同一页面上直接用于生产。这足以用作常规文档页面:11.ReactSightReactSight通过向您显示整个应用程序的实时组件层次结构树,让您可视化React应用程序。它还支持react-router、Redux和ReactFiber。使用此工具,您可以将鼠标悬停在节点上,这些节点是树中与其直接相关的组件的链接。如果看不到结果,可能需要在地址栏输入chrome:extensions,找到ReactSight框,点击“允许访问文件URL”开关。12.ReactCosmosReactCosmos是一个用于创建可重用React组件的开发工具。它会扫描您的项目以查找组件,并使您能够:使用道具、上下文和状态的任意组合渲染组件。模拟每个外部依赖项(例如API响应、localStorage等)。当您与正在运行的实例交互时,查看应用程序状态的实时变化。13.CodeSandbox这是最好的工具之一,可以让你的手比眨眼还快(好吧,也许没那么快)。该工具称为CodeSandbox,是一个在线编辑器,可让您创建Web应用程序,从原型到部署——全部来自您的网站!CodeSandbox最初只在早期阶段支持React,但现在已经扩展到可以与Vue和Angular等库的其他入门模板一起使用。他们还支持通过使用常见的静态站点生成器(例如Gatsby或Next.js)创建项目来启动您的下一个ReactWeb项目。关于CodeSandbox,有很多很棒的事情要谈。首先,它非常活跃。如果您需要探索其他人正在构建的某个项目,为了您的方便,单击探索可以轻松获得一堆代码示例,以帮助您翻新下一个项目。一旦你开始编辑你的项目,你就会开始意识到你实际使用的是强大的VSCode编辑器。14.ReactBitsReactBits是React模式、技术、提示和技巧的集合,全部以类似于在线文档的形式编写,您可以在其中快速访问不同的设计模式和技术、反模式、样式、UX更改以及其他有用的React相关材料,都在一个选项卡中。他们有一个GitHub存储库,目前有9923颗星。一些示例包括诸如prop代理、处理不同场景中各种UX的组合等概念,甚至揭示了每个React开发人员都应该注意的一些陷阱。这是他们页面上的样子。在左侧的侧边菜单中可以看到,有很多信息:15.folderizefolderize是发布不到7天前的VSCode扩展。它允许您将组件文件转换为组件文件夹结构,您的React组件仍然是一个组件,它现在只是转换为一个目录。例如,假设您正在创建一个React组件,该组件将文件作为显示有用信息(如其元数据)的道具。元数据组件的逻辑占用了很多行,因此您决定将其拆分到一个单独的文件中。但是,当您决定这样做时,您现在有两个相互关联的文件。因此,如果您的目录如下所示:您可能希望像Apple一样将FileView.js和FileMetadata.js抽象到目录结构中,尤其是在考虑添加更多与文件相关的组件(如FileScanner.js)时。这就是folderize为您所做的,以便它们可以具有类似于以下的结构:16.React入门项目这是一个很棒的React入门项目列表,您可以在一个页面上查看所有项目。因此,如果您是那种认为同时拥有多个选项很有用的人,那么这本书适合您。看到喜欢的入门项目后,您可以简单地克隆此存储库并为即将推出的应用程序进行自己的修改。但是,并非所有这些都必须通过克隆存储库来使用,因为其中一些已安装,成为您项目的依赖项。这样可以更轻松地获取更新并保持项目整洁。该页面如下所示:17.突出显示更新这可以说是任何人的开发工具箱中最重要的工具。HighlightUpdates是ReactDevTools扩展的一项功能,可让您查看页面的哪些组件不必要地重新呈现。它可以帮助您在开发页面时发现瓶颈,并使其更容易,因为它们将严重的重新渲染问题标记为橙色或红色。除非你的目标是构建一个平庸的应用程序,否则为什么不希望这个美女站在你身边呢?18.ReactDiffViewerReactDiffViewer是一个使用Diff和React制作的简单而漂亮的文本差异查看器。这支持拆分视图、内联视图、单词差异、行突出显示等功能。如果您尝试将此功能嵌入到您的笔记中(例如Boostnote)并自定义它以更好地适合您的应用程序(主题颜色、文档和故事书的组合)演示文稿等),那么这将非常有用。19.JS.coach我最常用来查找React相关内容的站点是JS.coach。它快速、简单、不断更新,并且始终为我提供所有项目所需的结果。他们最近添加了ReactVR标签,太棒了!20.AwesomeReactGitHubTheAwesomeReactOpenSourceRepository列出了一堆与React相关的很棒的东西。我可能会忘记其他站点,而只是从此链接学习React。你会发现大量有用的资源,它们肯定会帮助你构建很棒的React应用程序!21.ProtonNativeProtonNative提供了一个React环境来构建跨平台的原生桌面应用程序。它是Electron的替代品,具有一些简洁的功能,包括:与ReactNative相同的语法。适用于现有的React库,例如Redux。跨平台。本机组件。电子没有。与所有普通的Node.js包兼容。有兴趣了解更多吗?阅读他们的文档。22.DevhintsReact.jsCheatsheet一个很好的React备忘单,尽管它缺少ReactHooks。别担心,我将为Reactv16.8+创建一个备忘单,敬请期待。