[譯] 哪些項目須要 React?都須要!

項目何時須要 React 框架呢?這是 Chris Coyier 在最近一篇博文中提出的問題。我是 Chris 博客的粉絲,因此我好奇他要說什麼。javascript

簡而言之,Chris 提出了一系列使用 React(或其餘相似的當代 JavaScript 庫)的優點和劣勢。雖然我並不反對他的觀點,但我依然發現本身得出了不一樣的結論。css

因此今天我想說的是,對於「項目何時須要 React 框架」的答案不是「要看情況」,而是「任什麼時候候」。前端

React vs Vue vs Angular vs…

首先,說點題外話:在他的文章中,Chris 選擇 React 做爲通常意義上「前端庫」的表明,那麼我也同樣。何況 React 是我維護的倉庫 VulcanJS(一個 React 和 GraphQL 框架)中最熟悉的東西。vue

話雖如此,個人觀點也適用於任何提供 React 相同特性的其餘庫。java

錘子的力量

若是你手裏只有一把錘子, 全部東西看上去都像釘子。react

這則諺語長久以來都被用於譴責一刀切看問題的人。android

但咱們假設有一段時間,你的確生活在佈滿釘子的世界(聽起來有點起雞皮疙瘩),那麼你信任的錘子可以解決你遇到的任何問題。ios

想一想每次重複使用相同工具的好處:git

  • 無需花時間決定使用哪個工具。
  • 花更少的時間學習新工具。
  • 擁有更多的時間來更好地揮舞你選擇的工具。

因此 React 會是這種工具嗎?我以爲它多是的!程序員

複雜度譜

首先,咱們來看看最多見的反對「一切皆 React」的觀點。我直接引用 Chris 原話:

舉個例子,一個博客也許沒什麼複雜的邏輯,一點也不符合應該使用 React 框架的狀況。既然在這種狀況下 React 框架不是很合適,那麼在這用 React 框架就不是好的選擇。由於這麼作引入了複雜的技術,依賴了不少根本沒用到的東西。

說的很在理。一個簡單的博客不須要 React。畢竟即便你須要一點 Javascript 處理註冊表單,你也能夠僅僅使用 jQuery。

什麼?你須要在不一樣頁面的多個地方使用那個表單?還要只在某些條件下才顯示?也要加上動畫?等等,打住…

我用這個小情景想表達的主旨就是複雜性並非一個或是或非的問題,現代網站生活在一個連續的頻譜上,從靜態頁面一直到豐富的單頁應用。

因此可能如今你的項目正舒服地生活在「簡單」的這一頭,但這一路下去六個月後呢?與其陷入鴿子洞式的糟糕實踐,選擇一種留有成長空間的技術豈不更好?

React 的優點

過早優化是萬惡之源。

這是程序員中流行的另外一則言語。畢竟,當膠帶就能作的很好的時候,誰會須要錘子和釘子呢!

但這裏作了一個假設就是「過早優化」是一個長期的少有成效的艱難過程。而且我以爲這個不適於 React。

雖然 React 須要一些時間來習慣,但一旦瞭解了其基本概念,您就能像使用傳統的前端工具同樣快速上手。

事實上,也許更多的是由於 React 使用了很是強大的組件概念。就像 CSS 鼓勵你考慮可重用的類和樣式同樣,React 帶來了一個靈活的模塊化前端架構,從簡單的靜態主頁到交互式後端儀表板,爲每個用例帶來好處。

JavaScript, 隨處都是 JavaScript

咱們生存在 JavaScript 的世界。就像 Chris 所說:

你經過 Node.js 構建服務端,也有不少項目能夠經過 JavaScript 處理 CSS。如今經過 React 框架,你還能夠在 JavaScript 裏寫 HTML。

萬物歸於 JavaScript!JavaScript 萬歲!

Chris 不是很相信,但我相信。JavaScript 自己並不必定完美,但可以訪問整個現代 NPM 生態系統太棒了。

過去安裝一個 jQuery 插件要找到它的官網,下載下來,拷貝到你的項目目錄,加一個 <script> 標籤,而後指望記得每過幾個月檢查一下新版本。如今,安裝和 React 包一樣的插件只是 npm install 命令的問題。

使用像 styled-components 這樣的新庫,甚至 CSS 如今也被連帶着尖叫着進入將來。

相信我,一旦你習慣了那種全世界都在說的語言,那就很難再回歸到之前的方式了。

不會有人想到用戶!

我知道你在想什麼:目前爲止我一直在推銷 React 給開發者帶來的好處,卻當心翼翼的說起終端用戶的體驗。

而且這仍然是反對使用當代庫的關鍵論點:緩慢臃腫的 JavaScript 站點卻只是爲了顯示單個「奇蹟淫巧」的廣告。

此外還有一個小祕密:你能夠徹底不引用 JavaScript 而得到 React 的全部優點

我想說的是在服務端渲染 React。事實上, 像 Gatsby(還有 Next.js 等等)這樣的工具能夠把你的 React 組建編譯進靜態 HTML 文件中,這樣你能夠託管在 GitHub pages 上面。

舉個例子,我本身的我的站點 就是一個 Gatsby-generated React 應用,沒有加載任何的 JavaScript(除了一個 Google Analytics 片斷)。 我在開發中發揮了 React 的全部優點(全 JavaScript,擁抱 NPM 生態,styled-components 等),而最終獲得了純 HTML 和 CSS 的最終產品。

總結

歸納一下,這是我認爲 React 是任何項目的可行選擇的四個緣由:

  • 即便是最簡單的網站,也很難保證你永遠不會須要交互功能,如標籤、表單等。
  • React 基於組件的方式即便相比於基於內容的靜態站,也有巨大的優點。
  • 擁抱現代 JavaScript 生態系統是又一個巨大的優點。
  • 現代服務端渲染工具能夠消除終端用戶使用 React 的劣勢。

因此 Chris,您以爲呢?個人觀點否足夠使人信服?仍是您依然保持懷疑?

那麼你呢,親愛的讀者?你以爲像 Chris 所說每個工具都有它的用處,仍是贊成個人觀點「錘子時間」就在眼前?評論起來讓我知道大家的觀點吧!


掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 AndroidiOSReact前端後端產品設計 等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃

相關文章
相關標籤/搜索