爲什麼我會選擇React+Next.js,而不是Vue或Angular?

本文的目的不是要對 React、Vue 和 Angular 三者進行比較,已經有許多人對這個話題進行了比較深入的探討。每個人都有自己的偏好。與其他庫和框架相比,我更喜歡使用 React 構建用戶界面。在我解釋了爲什麼之後,也許你也會切換到 React,如果你現在還沒有用它的話。

幾個月前,我正在尋找一個用於 React 的樣板文件生成器或是初學者工具包。我向往簡單可靠的東西。經過長時間的搜索,我找到了自己想要的東西。那就是名爲 Next.js 的框架。它在 GitHub 上獲得了大量的 star 數,這在我看來是一大優勢。這意味着這個項目的未來可期,而且如果需要,你可以向社區尋求幫助。在 readme 文件的頂端,有一個指向 learnnextjs.com 的鏈接。一個大約 1 小時的短教程,教你如何使用 Next.js。我不是說簡介,而是讓你可以真正地開始構建應用。真的很棒!

Next.js

我發現,Next.js 比其他可選的方案要簡單的多,也更有效率。

Create React App 在 GitHub 上的星數更多,而且承諾零構建配置。但是,它不像看上去那麼簡單。你需要學習客戶端路由、頁面佈局等等,更不用說服務器端渲染了。

而對於 Next.js,你只要幾個小時就可以用它進行開發了。越來越多的人喜歡 Vue,即使它在某些方面仍然比不上 React 和 Angular。因爲它簡單,你可以用最少的時間完成最多的事情。在我看來,Next.js 填補了 React 和 Vue 之間的空白,使 React 一飛沖天。

Vue 似乎是一個不錯的選擇,Angular 呢?
這兩個都是排名很靠前的框架,提供了出色的支持、性能,而且未來可期。但是,在和 Next.js 搭配使用時,我只會選擇 React,而不是它倆中的一個。

Vue

我一直將 Vue 視爲入門級應用和網站的最佳選擇。我以前甚至還寫過幾篇文章,但是,React 與 Next.js 的搭配是最省力的。有人可能會說這是孩子的遊戲。

公平地講,React 入門並沒有那麼難。它的學習曲線稍微有點陡峭,但你最終會得到回報。

考慮到這一點,React 就佔了上風。它更成熟、更可靠,有更大的社區和 Facebook 的支持。

Angular

在我的印象中,Angular 一直是一個重要而成熟的框架,但是,我不會選擇它。因爲我不喜歡它。

雖然 TypeScript 也是一個選項,但你似乎是被迫在使用它。整個框架看上去過於複雜,而且沒有明確的理由。最糟糕的是,我似乎找不到任何值得我經歷這些麻煩去使用它的地方。

Next.js 的特性

下面是 learnnextjs 上列出的一些很棒的 Next.js 特性:

默認服務器端渲染;

爲加速頁面加載,自動進行代碼分割;

簡化客戶端路由(基於頁面);

基於 Webpack 的開發環境,支持熱模塊更換
(https://webpack.js.org/concep...(HMR);

可以通過 Express 或任何其他 Node.js HTTP 服務器實現;

可以通過你自己的 Babel 和 Webpack 配置進行定製;

讓我稍微解釋下這些特性。

應用被分成塊在服務器端渲染,加載時間非常短。甚至,對於不支持客戶端渲染的搜索引擎,SEO 都沒有意義。

路由解決方案和 Webpack 都有了很好的支持。然後是熱模塊更換(HMR)可以爲你節省寶貴的開發時間,因爲只需上傳變化的代碼就可以。最後,它提升了開發者體驗(DX)。

它是如何使我的工作變得更輕鬆的?
每當我開始創建一個新項目時,我必須建立一堆依賴關係和腳本,使一切正常運行。我不得不做一些事情,如安裝 node-sas、設置監控、編寫 npm 腳本等。

甚至在我真正地開始應用開發的前夕,我還得管理幾十個依賴項。Next.js 使我可以跳過這些我每次都會遇到的繁瑣工作。它使我可以在幾分鐘內開始任意一個項目。

樣式

Next.js 提供了內置的 CSS 支持,稱爲 styled-jsx。我必須承認,我直到最近才使用它,因爲它還無法與其他類似的解決方案相比,如 styled-components 或 JSS。但是,最近他們發佈了版本 2,比第一個版本有了很大的改進,並且有很大的潛力。

以下是他們列出的一些特性:

完全支持 CSS,沒有電量方面的權衡;

運行時大小僅有 3KB(從 12KB 經 gzip 壓縮);

選擇器、動畫、關鍵幀完全隔離;

內置 CSS“瀏覽器引擎前綴(vendor prefixing)” ;

最低限度的轉譯快速而高效;

非服務器端渲染時的高性能運行時 CSS 注入;

未來可期:與服務器端可渲染的“Shadow CSS”相當;

“源映射(Source maps)” 支持;

支持動態樣式和主題;

基於插件的 CSS 預處理。

你需要知道的是,它非常快、非常靈活,最重要的是,它與 JSX 以及 React 的思想一致。你不需要設置任何東西,什麼都爲你準備好了。

不過,如果你仍然希望使用以前的 CSS 預處理器,你也可以使用。關於 LESS、SASS、PostCSS 和 CSS-Modules,我都有點忘了,但如果你還喜歡它們,當然就可以使用它們。

作爲 styled-jsx 的替代方案,我推薦 Material-UI-Next。這是一個不怎麼有名的 React 組件,實現了谷歌的 Material Design。它使用了前面提到的 JSS,適應性強且未來可期。

我現在正在一個新項目中使用它,目前爲止,我很喜歡他。

Webpack

你聲明的每一個導入都是針對每個頁面自動打包並提供。也就是說,頁面永遠不會加載不必要的代碼。

你甚至可以分析打包好的文件,藉助延遲加載模塊進一步優化加載時間。

路由

路由簡單而直觀,你可以選擇預取頁面來獲得最好的性能。你不需要爲了讓路由器發揮作用而安裝任何依賴。

開始的時候,習慣使用 React Router 或其他類似路由器的人們可能會遇到一點困難,但它確實很簡單,只是方法不同。但在我看來,這種方法非常容易掌握。

你不需要指定路由和所有與路由相關的內容,而只要將一個頁面添加到 pages 目錄,從而使頁面 URL 可用。這非常簡單,但是如果你想要更復雜的東西呢?

安裝一個服務器,最好是 Express,在服務器配置中指定自定義路由。通過這種方式,你可以得到你想要的各種路由和簡潔的 URL。

部署

只要不需要在運行時生成動態頁面,Next.js 就允許你將應用導出成靜態 HTML。相當不錯,不是嗎?

應用程序部署非常令人愉快;這不僅是因爲你最終會達到目標,還因爲你的實現方式。你可以使用一個命令構建整個應用程序,並使用另一個命令將其部署到全球的主機。

如果你的主機上有 ZEIT now,你就多了一個選項。如果你計劃使用 Next.js,我建議你使用這個部署工具,因爲它會使部署變得極其簡單。

總 結

有許多細節我沒有提及。我只是大致介紹了在我看來最重要的內容。 在我發現 Next.js 之前,我從來沒有像現在這樣喜歡 React。把 React 和 Next 一起使用,看起來很自然。

一開始就應該是這樣的。 對我來說,這是構建用戶界面唯一正確的方法,它讓我愛上了 React。

這裏推薦一下我的學習交流q-u-n-:731771211,裏面都是學習前端的,希望能幫助你更瞭解前端,學習前端

點擊:加入

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章