21 個對 React 開發有所幫助的工具庫

做者:piyush-kochhar
譯者:前端小智
來源:hackernoon
點贊再看,微信搜索 【大遷世界】 關注這個沒有大廠背景,但有着一股向上積極心態人。本文 GitHub https://github.com/qq44924588... 上已經收錄,文章的已分類,也整理了不少個人文檔,和教程資料。

你們都說簡歷沒項目寫,我就幫你們找了一個項目,還附贈【搭建教程】javascript


爲了保證的可讀性,本文采用意譯而非直譯。html

下列工具中的重要性與排序無關。前端

1.Webpack Bundle Analyzer

有沒有想過你的應用程序的哪些包或哪部分代碼所佔總大小的多少? Webpack Bundle Analyzer能夠幫助我們分析。java

Webpack Bundle Analyzer建立一個實時服務器,並提供依賴包交互式樹形圖可視化。 經過這個工具包,能夠看到所渲染文件的位置,gzip大小,解析大小以及所父子級之間詳情。react

這個工具的好處是,能夠根據你所看到來優化你的React應用。webpack

收下是它生成的一個分析圖:git

clipboard.png

能夠清楚地看到pdf包大小佔用應用程序是最多的,同時也是佔用分析圖片最大比例,這對於我們來講是所看即所得效果。github

然而,生成分析圖空間有限,你還能夠傳遞一些有用的選項來更詳細地查看它,好比generateStatsFile: true,還能夠選擇生成一個靜態HTML文件,能夠將其保存在開發環境以外的某個地方,以供之後使用。web

2. React-Proto

React-Proto 是一個面向開發人員和設計人員的原型工具。這是一個桌面軟件,因此在使用以前你必須下載並安裝這個軟件。chrome

如下是使用方式一個簡單演示:

clipboard.png

該應用程序容許你聲明props及其types,在樹中查看組件,導入背景圖像,將它們定義爲有狀態或無狀態,定義其父組件將是什麼,放大/縮小,以及將原型導出到新的或現有項目。

該應用程序彷佛更適合Mac用戶,但它仍適用於Windows用戶。

完成用戶界面後,能夠選擇導出到現有項目或新項目。 若是你選擇導出到現有項目並選擇根目錄,它會將它們導出到./src/components,以下所示:

clipboard.png

隨着React hook的發佈,這個應用程序須要更新作更多的工做。固然,開源是這個應用程序的好處,由於它使它有可能成爲將來流行的開源存儲庫列表。

3. Why Did You Render

Why Did You Render 猴子補丁React通知你有關可避免的從新渲染的信息。

猴子補丁: 這個叫法起源於Zope框架,你們在修正Zope的Bug的時候常常在程序後面追加更新部分,這些被稱做是「雜牌軍補丁(guerilla patch)」,後來guerilla就漸漸的寫成了gorllia((猩猩),再後來就寫了monkey(猴子),因此猴子補丁的叫法是這麼莫名其妙的得來的。

猴子補丁主要有如下幾個用處:

  • 在運行時替換方法、屬性等
  • 在不修改第三方代碼的狀況下增長原來不支持的功能
  • 在運行時爲內存中的對象增長patch而不是在磁盤的源代碼中增長

這很是有用,不只能夠指導我們修復項目的性能,還能夠幫助你理解React是如何工做的。並且,當你更好地理解React的工做原理時,你就會成爲更好的React開發人員。

經過聲明一個額外的靜態屬性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

這樣作以後,在控制檯纔會打印使人惱人冗長警告:

clipboard.png

不要認爲這是錯誤的提示,把它當成一件好事。 利用那些煩人的消息,這樣你就能夠修復那些浪費的從新渲染。

4. Create React App

你們都知道,Create React App是建立 React項目的最快方式(開箱即用)。

還有什麼比 npx create-react-app <name>更簡單的呢

我們還有些人可能不知道的是如何使用CRA建立TypeScript項目,這個也很簡單,只須要在末尾添加--typescript 便可:

npx create-react-app <name> — typescript

這樣能夠省去手動將TypeScript添加到CRA建立項目中的麻煩。

5. React Lifecycle Visualizer

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>
)

運行結果,以下所示:

clipboard.png

可是,其中一個缺點是它目前僅適用於類組件,所以尚不支持 Hook

6. Guppy

GuppyReact的一個友好且免費的應用程序管理器和任務運行器,它在桌面上運行且跨平臺的,你能夠放心用。

它爲開發人員常常面臨的許多典型任務(如建立新項目、執行任務和管理依賴項)提供了友好的圖形用戶界面。

Guppy 啓動後的的樣子

clipboard.png

7. react-testing-library

react-testing-library 是一個很棒的測試庫,編寫單元測試時,它會讓你感受很好。這個包提供了React DOM測試實用程序,鼓勵良好的測試實踐。

此解決方案旨在解決測試實現細節的問題,而不是測試React組件的輸入/輸出,就像用戶會看到它們同樣。

這是react-test -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))
})

8. React Developer Tools

React Developer Tools是一個擴展插件,容許在ChromeFirefox Developer Tools中檢查React的組件層次結構。

這是React開發中最多見的擴展插件,而且是React開發人員能夠用來調試其應用程序的最有用的工具之一。

9. Bit

經過Bit能夠看到數以千計的開源組件,並容許還可使用它們來構建項目。

圖片描述

列表中有不少不少React組件可供我們使用,包括選項卡,按鈕,圖表,表格,導航欄,下拉列表,加載微調器,日期選擇器,麪包屑,圖標,佈局等。

10. Storybook

Storybook 是一個輕鬆地構建UI組件的庫。該工具啓動一個實時開發服務器,支持開箱即用的熱重載,你能夠在其中獨立地實時開發React組件。

這足以做爲普通文檔頁面:

clipboard.png

11. React Sight

你有沒有想過你的應用程序在流程圖中的樣子? React Sight容許你經過展現整個應用程序的實時組件層次結構樹來可視化React應用程序。

它還支持react-routerRedux以及React Fiber

使用此工具,您能夠將鼠標懸停在節點上,這些節點是指向與樹中組件直接相關的組件的連接。

若是在查看結果時遇到問題,能夠在地址欄中輸入chrome:extensions ,查找「React Sight」框,而後單擊「Allow access to file URLs」開關,以下所示:

clipboard.png

你們都說簡歷沒項目寫,我就幫你們找了一個項目,還附贈【搭建教程】

12. React Cosmos

React Cosmos是一個用於建立可重用React組件的開發工具。

它掃描項目中的組件,並使你可以:

  • 經過 props,context和state任意組合來渲染組件。
  • 模擬每一個外部依賴項(API響應、localStorage等)。
  • 查看應用程序狀態在與運行實例交互時的實時演變。

13. CodeSandbox

CodeSandbox一個在線編輯器,能夠在上面建立Web應用程序並實行運行。

CodeSandbox 最初只在早期階段支持React,但它們如今已經擴展到VueAngular等庫的其餘入門模板。

他們還支持使用常見的靜態站點生成器(如GatsbyNext.js)建立項目來啓動React Web項目。

clipboard.png

14. React Bits

React Bits是一個React模式、技術、技巧和技巧的集合,全部這些都以相似於在線文檔的格式編寫,你能夠在同一個選項卡上快速訪問不一樣的設計模式和技術、反模式、樣式、UX變體以及其餘與React相關的有用材料。

GitHub repo,目前有10083顆星星。

clipboard.png

15. folderize

folderize是一個VS Code 擴展。 它容許您將組件文件轉換爲組件文件夾結構。 React 組件仍然是一個組件,只是轉換爲一個目錄。

例如,假設正在建立一個React組件,該組件將文件做爲props來顯示有用的信息,如元數據

元數據組件的邏輯佔用了大量的行,所以我們決定將其拆分爲單獨的文件。 可是,當這樣作時,我們就有兩個相互關聯的文件。

因此,就有有一個大概以下所示的目錄:

clipboard.png

我們可能想要將FileView.jsfilemetada.js抽象到目錄結構中,就像Apple同樣,尤爲是考慮添加更多與FileScanner.js等文件相關的組件時。

這就是folderize爲我們所作的,這樣組件們就能夠獲得一個相似的結構

clipboard.png

16. React Starter Projects

React starter projects 是一個依賴庫列表,能夠在上面快速你須要要的依賴庫的名稱並能夠跳轉對應的 github 上。

一旦看到一個你喜歡的入門項目,你就能夠簡單地克隆這個庫,並根據你的須要進行修改。

可是,並非全部的依賴庫都是經過克隆使用,由於其中一些庫須要經過安裝形式,才能成爲項目的依賴項。

clipboard.png

17. Highlight Updates

這多是開發工具包中最重要的工具。 Highlight UpdatesReact DevTools擴展的一個特性,能夠查看頁面中的哪些組件正在沒必要要地從新渲染。

圖片描述

它能夠幫助你在開發頁面時是更容易發現一些性能問題,由於它們會使用橙色或紅色對嚴重的從新渲染問題進行着色。

18. React Diff Viewer

React Diff Viewer是一個簡單而美觀的文本差別對比工具 這支持分割視圖,內嵌視圖,字符差別,線條突出顯示等功能。

clipboard.png

19. JS.coach

JS.coach 是我最經常使用來與 React 有須要的庫的網站。從這個頁面能夠找到須要的任何東西。

它快速、簡單、不斷更新,而且老是能給我全部項目所需的結果。最近還添加了React VR,很是棒。

20. Awesome React

Awesome React開源庫是一個與React相關的很棒的列表。

我可能會忘記其餘網站並單獨從這個連接學習React。 由於能夠在此找到批量有用的資源,這些資源確定會幫助咱們構建出色的React應用程序!

21. Proton Native

Proton Native爲我們提供了一個React環境來構建跨平臺的本機桌面應用程序。

它是Electron的替代產品,具備一些簡潔的功能,包括:

  • 與React Native語法相同。
  • 適用於現有的React庫,例如 Redux。
  • 兼容全部正常的 Node.js 包。

原文:https://medium.com/better-pro...

代碼部署後可能存在的BUG無法實時知道,過後爲了解決這些BUG,花了大量的時間進行log 調試,這邊順便給你們推薦一個好用的BUG監控工具 Fundebug


交流

文章每週持續更新,能夠微信搜索 【大遷世界 】 第一時間閱讀,回覆 【福利】 有多份前端視頻等着你,本文 GitHub https://github.com/qq449245884/xiaozhi 已經收錄,歡迎Star。

相關文章
相關標籤/搜索