- 原文地址:Which Projects Need React? All Of Them!
- 原文做者:SACHA GREIF
- 譯文出自:掘金翻譯計劃
- 譯者:sunui
- 校對者:LeviDing、Shangbin Yang
項目何時須要 React 框架呢?這是 Chris Coyier 在最近一篇博文中提出的問題。我是 Chris 博客的粉絲,因此我好奇他要說什麼。javascript
簡而言之,Chris 提出了一系列使用 React(或其餘相似的當代 JavaScript 庫)的優點和劣勢。雖然我並不反對他的觀點,但我依然發現本身得出了不一樣的結論。css
因此今天我想說的是,對於「項目何時須要 React 框架」的答案不是「要看情況」,而是「任什麼時候候」。前端
首先,說點題外話:在他的文章中,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 使用了很是強大的組件概念。就像 CSS 鼓勵你考慮可重用的類和樣式同樣,React 帶來了一個靈活的模塊化前端架構,從簡單的靜態主頁到交互式後端儀表板,爲每個用例帶來好處。
咱們生存在 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 是任何項目的可行選擇的四個緣由:
因此 Chris,您以爲呢?個人觀點否足夠使人信服?仍是您依然保持懷疑?
那麼你呢,親愛的讀者?你以爲像 Chris 所說每個工具都有它的用處,仍是贊成個人觀點「錘子時間」就在眼前?評論起來讓我知道大家的觀點吧!
掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 Android、iOS、React、前端、後端、產品、設計 等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃。