在目前的網路開發生態系統中,JavaScript框架是幾乎每個網路開發人員都在使用的東西,以使他們的開發過程更容易、更有成效。但是,隨著我們使用的技術不斷改進,框架也在不斷髮展,更好、更簡單、有時甚至更復雜的框架被髮布。
有了這麼多的選擇,要選擇一個最好的框架來滿足你的需求就變得非常困難。
在這篇文章中,我們將討論目前最大的兩個JavaScript框架:Svelte與React。我們將正面比較它們,並列出每個框架的優點和缺點,以幫助你選擇其中之一。
什麼是Svelte?
Svelte是一個用於構建快速、靈活和網路化的網路應用的框架。它也被稱為 “最受喜愛的JavaScript框架” 和 “最滿意的開發器“,在GitHub倉庫中擁有超過60,000顆星。
Svelte應用程式和元件是在.svelte檔案中定義的,這些檔案是用類似於JSX的模板語法擴充套件的HTML檔案。
歷史
Svelte起源於Ractive.js,它是由Svelte的建立者自己開發的。Rich Harris。Svelte的設計是為了繼承Ractive。2016年釋出的Svelte的第一個版本基本上是Ractive,但有一個編譯器。
Svelte “這個名字是由Rich Harris和他在《衛報》的同事們選擇的。隨著時間的推移,越來越多的開發者開始瞭解Svelte並對其產生興趣。到2019年,Svelte已經成為一個成熟的工具,可以構建具有TypeScript支援的開箱即用的Web應用程式。
SvelteKit網路框架於2020年公佈,並在2021年進入測試階段。
主要特點
Svelte是構建使用者介面的一種激進的新方法。像React和Vue這樣的傳統框架在瀏覽器中完成了大部分工作,而Svelte將這些工作轉移到了編譯步驟中,在你構建應用程式時發生。
Svelte在構建時將你的應用轉換為理想的JavaScript,而不是在執行時解釋你的應用程式碼。這意味著你不需要支付框架抽象的效能成本,也不會在你的應用第一次載入時產生懲罰。
你可以用Svelte構建你的整個應用,也可以將其逐步新增到現有程式碼庫中。你也可以將元件作為獨立的包,在任何地方工作,而不需要依賴傳統框架的開銷。
Svelte的優點和缺點
與任何框架一樣,Svelte既有好處也有壞處。在投身於Svelte與React的競爭之前,瞭解其全貌是很重要的。
讓我們來看看Svelte為開發者提供的優點和缺點。
Svelte的優點
以下是使用Svelte的一些主要優點:
- 沒有虛擬DOM:Svelte是一個編譯器,不使用虛擬DOM,Svelte是一個編譯器,在構建時就知道你的應用程式中的東西可能會發生變化,而不是等待在執行時做這些工作。這是Svelte相對於其他任何Web框架的一個非常重要的優勢。
- 更少的模板:減少你必須編寫的程式碼量是Svelte的一個明確目標。Svelte幫助你以最小的代價構建使用者介面,通過實現更好的反應性、繫結和頂層元素等,提高了程式碼的可讀性,我們將在本文後面討論這些問題。
- 真正的響應性:Svelte本身就是一種語言,並且預設啟用了響應性。不需要特別的程式碼行來使你的程式碼具有響應性,你宣告的每個變數都是預設的響應性。Svelte還支援派生宣告和在狀態變化時進行計算的語句。
- 更容易學習:Svelte提供了一種混合語言,由vanilla HTML、CSS和JavaScript/TypeScript組成。不需要學習新的概念或像JJSX那樣的特殊語法來學習,這使得它更容易學習。Svelte的文件非常容易理解,並有詳細的內建教程。
Svelte的缺點
這些是使用Svelte的主要缺點:
- 生態系統相對較小:作為一個新的框架,與React等框架相比,Svelte還沒有一個非常大的生態系統,這意味著你不會像React那樣找到很多與Svelte相關的庫和工具。
- 獨特的使用者體驗:儘管Svelte使用HTML、CSS和JavaScript/TypeScript,但它引入了獨特的元素,與大多數其他框架的工作方式不同。如果你已經習慣了JSX,並試圖轉向Svelte,你可能會發現一些奇怪的現象,比如匯出關鍵詞的使用方式不同,以及使用
on:click
而不是onClick
。
什麼是React?
React是JavaScript生態系統中最早和最古老的網路框架之一,是當今最流行和最廣泛使用的網路框架。它提供了一種輕鬆有效地製作互動式UI的方法。
React利用JSX來建立應用程式,並有大量的庫圍繞它而建,這使它成為一個非常可靠的框架。
歷史
React由Meta公司於2013年建立,是為各種網站建立動態介面的工具。虛擬DOM,即用React元件構建的DOM元素的代表,是React的基礎。
從那時起,它已經發展到包括大量的新功能,使整個JavaScript社羣的網路開發更容易。
主要特點
現在你對React有了一個很好的瞭解,讓我們來看看使它如此受歡迎的一些關鍵功能。
JSX
React的開發理念是:渲染邏輯應該與其他UI邏輯(事件、狀態管理)結合起來,並且應該一起管理。出於這個原因,React使用JSX(JavaScript XML),而不是將技術分開(HTML和JavaScript分為獨立的檔案)。 使用JSX,你可以在JavaScript中編寫標記,為你提供了一種超級能力,可以在一個.jsx檔案中編寫元件的邏輯和標記。
基於元件的
在React中,我們建立封裝的元件,管理它們自己的狀態,然後將它們組合起來,形成複雜的UI。由於元件的邏輯是用JavaScript寫的,而不是用模板寫的,所以我們可以很容易地通過我們的應用程式傳遞豐富的資料,並保持狀態不在DOM中。
宣告性
React使建立互動式UI變得不費力。我們可以為我們的應用程式中的每個狀態設計簡單的檢視,當我們的資料發生變化時,React會有效地更新和渲染正確的元件。
React的優點和缺點
React和Svelte一樣,都有一些優點和缺點,在選擇它作為你的框架之前,你應該注意到這些缺點。
React的優點
以下是使用React的最大好處:
- 程式碼可重用性:React利用元件進行開發,這些元件大多是可重複使用的,可以根據我們的需要使用道具進行修改。
- 高效的SEO優化: 一般來說,搜尋引擎在閱讀重度JavaScript應用程式時有困難。React克服了這個問題,這對開發者在各種搜尋引擎上輕鬆導航是有幫助的。React應用程式可以在伺服器上執行,虛擬DOM將被渲染並作為一個普通頁面返回給瀏覽器。
- 龐大的生態系統:作為最古老的網路框架之一,與較新的框架相比,React有一個非常大的生態系統。這意味著有很多資源可供React使用者使用,同時還有很多與開發有關的幫助。
- 庫:由於React有一個龐大的生態系統,這也意味著有很多開發者圍繞React構建工具和庫。這個社羣不斷地釋出很棒的專案,這些專案被數百萬React開發者定期使用。
React的缺點
React的一些缺點包括:
- 困難的學習曲線:正如我們前面所看到的,React使用了JSX–一種非常新的技術,是為剛剛開始使用React的新開發者而製作的。許多開發者不喜歡使用JSX,因為它的學習曲線比較陡峭,比較困難。
- 作為一個庫的侷限性:React是一個庫,而不是一個真正的網路框架,這意味著它沒有預先包裝好必要的功能和開箱即用的重要開發工具。此外,這使應用程式面臨安全和一致性問題,開發人員需要依靠外部庫的連續性來確保他們的React應用程式在任何時候都能正常執行。
- 糟糕的文件:React沒有適當的文件,因為React環境中不斷有更新,可能會變得難以追蹤。正因為如此,對於初學者來說,要想開始使用React是很困難的。
Svelte與React對比
現在我們知道了這兩個網路框架的基本特徵、優點和缺點,我們可以對它們進行比較,以得出結論,哪一個更好,你應該使用哪一個。
受歡迎程度
說到受歡迎程度,現在沒有其他框架能超過React。截至 2023 年,React 依然是最受歡迎的 Web 框架工具,與 Svelte 相比,這是相當合理的,因為 React 自2013年以來一直在 JavaScript 生態系統中存在,使其比 Svelte 這樣的新開發的框架更有優勢。
React 在該領域佔據主導地位,在使用和採用方面領先於其他框架。事實上,State of JS 2023 調查發現,84% 的開發人員使用 React,這證明了它的受歡迎程度和有效性。
w3techs 的使用統計資料也顯示,許多網路開發人員都使用 React。這種廣泛採用帶來了廣泛的支援網路和許多工作機會。
Svelte 沒有那麼多使用者,只有 0.1% 的網站使用它。不過,它的增長速度很快。
State of JS 2023 調查發現,20% 的 JavaScript 開發人員現在使用 Svelte,68% 的使用者希望學習它,這表明人們對它的興趣越來越大。未來幾年,除非有更好的選擇釋出,否則 Svelte 可能會成為一個主要框架。就目前而言,開發人員非常欣賞它的簡潔、快速和較小的捆綁大小。
可伸縮性和可擴充套件性
Svelte和React都是可擴充套件且穩定的面向生產的框架。但是當涉及到可擴充套件性時,React可能比Svelte更有優勢,這要歸功於它龐大的生態系統和圍繞它工作的社羣。
正如我們在上面看到的,有大量的外部庫和工具為React而生,這使得React比Svelte及其相對較小的生態系統更具可擴充套件性。
速度和效能
當涉及到效能和速度時,Svelte在任何方面都無法超越React。正如我們已經看到的,Svelte在編譯步驟中做了大部分的工作,而不是像React那樣在瀏覽器中做這些工作。這極大地提高了效能,並促進了伺服器的啟動時間。
接下來給Svelte帶來效能提升的是它不使用虛擬DOM的事實。根據Svelte的說法,Virtual DOM可能比Real DOM快,但它很慢。Svelte在他們的網站上也有一篇關於這個問題的詳細文章,你可能想看一下。
語法和學習曲線
Svelte和React都遵循基於元件的開發架構,但區別在於React使用JSX,而Svelte本身就是一種由三種標準語言組成的語言。HTML、CSS和JavaScript。
此外,Svelte程式碼更容易閱讀,沒有多餘的程式碼。Svelte預設是真正的反應式,這使它在這方面比React更有優勢。
談到易學性,Svelte又比React更有優勢–原因是大多數開發者在開始使用框架之前就已經精通HTML、CSS和JavaScript了。由於React使用JSX,許多開發者發現它過於複雜,更難掌握。
庫的大小
Svelte 預設建立較小的捆綁包。為此,它在編譯過程中努力工作,將 Svelte 程式碼轉換為高度優化的 vanilla JavaScript。一個典型的 Svelte 應用程式的壓縮包只有 2.6 KB。
React 使用執行時庫,您需要將其包含在捆綁包中。這意味著一個 React 應用程式(包括 ReactDOM 庫)的壓縮包大小大約為 44.5 KB,比 Svelte 的壓縮包大得多。
這些公式基於對實際專案的分析,顯示了隨著 Svelte 或 React 應用程式的增長,捆綁包大小會發生怎樣的變化:
- Svelte:捆綁位元組數 = 0.493 * 原始碼大小 + 2811
- React:捆綁位元組數 = 0.153 * 原始碼大小 + 43503
- Svelte 的捆綁大小增加 0.493 位元組。
- React 的捆綁大小增加 0.153 位元組。
不過,Svelte 的起始基本大小要小得多,只有 2,811 位元組。React 開始時的基本大小為 43,503 位元組。
隨著應用程式的增長,React 的捆綁大小會變得比 Svelte 小,這就是拐點。根據上述公式,當應用程式的元件原始碼約為 120 KB 時,就會出現拐點。
換句話說,對於元件原始碼少於 120 KB 的應用程式(大多數應用程式都是這種情況),Svelte 生成的捆綁包通常比 React 小。這將加快載入速度並提高效能。
生態系統、文件和社羣
我們已經看到,React有一個比Svelte大得多的生態系統,因為它是JavaScript生態系統中最古老的網路框架之一。這意味著在使用React時,獲得支援、程式碼幫助和尋找資源要比使用Svelte容易得多。
不過在文件方面,Svelte比React更出色。Svelte文件是學習Svelte的最好的獨立資源–甚至還有一個內建的互動教程。
另一方面,React的文件相對較差,而且他們的文件也不是互動的。然而,React團隊正在努力釋出新的文件,這些文件現在處於測試階段,很快就會公開。
在社羣方面,React subreddit 就有 41 萬成員。
您可以在這裡找到許多教程、文章和論壇,幫助您學習 React,甚至解決您無法解決的問題。
社羣支援還能幫助您及時瞭解最佳實踐和新趨勢。2023 年 Stack Overflow 調查發現,React 是最受喜愛的 Web 框架。42.87%的專業開發人員選擇了它。
Svelte 是一個較新的框架,因此其生態系統和社羣相比之下要小得多。不過,開發人員喜歡它的簡潔性和效能,而且 Svelte 社羣的發展也相當迅速。
SvelteJS 子論壇目前僅有 37k 名成員。雖然這個數字不小,但還不到 ReactJS 子論壇的 1/10。
Svelte 的工具和庫可能也不如 React 多。但是,即使在今天,您可以使用的工具也足以幫助您構建完整的應用程式。
就業機會
根據The State of JavaScript 2021,React在認知度和使用率的排名中都位列第一,而Svelte則排名第四。
我們可以清楚地看到,React和Svelte在這裡有很大的差距,這也意味著React的工作機會比Svelte多。
如果你是一個新的開發者,我們建議你從React開始,以增加你被錄用的機會。
動態樣式設計
React和Svelte都支援動態樣式設計,但區別在於React通過JSX支援內聯樣式設計。在Svelte中,我們把樣式放在元件檔案中獨立的 <style></style>
塊中。
小結
React和Svelte都是構建優秀使用者介面的頂級框架–這取決於使用情況–而且每一個框架都有自己的優點和缺點。你應該能夠根據我們在這裡所做的比較來決定哪一個最適合你的需求。
如果你是一個只想提高技能的初學者,你肯定應該給Svelte一個嘗試。當涉及到效能和滿意度時,Svelte在各方面都優於React。
但如果你是一個有經驗的開發者,並且已經站穩腳跟,React將是你最好的選擇,因為它有一個龐大的生態系統,在其中尋找資源和獲得支援會容易得多。對於一個以就業為第一要務的開發者來說,React是最好的選擇,從初級開發到高階開發,都有源源不斷的職位空缺。
在Svelte和React之間,你接下來打算使用哪一個,你打算建立什麼?我們很想聽聽你的意見! 請在下面的評論區分享。
評論留言