React,Angular和Vue的15种绝佳替代品
“音樂之聲”可能會(huì)說:“讓我們從頭開始,這是一個(gè)很好的起點(diǎn)。” 但是幾乎每個(gè)開發(fā)人員都知道這是一個(gè)愚蠢的計(jì)劃。 正確的起點(diǎn)是由一支偉大的開源開發(fā)人員團(tuán)隊(duì)建立的堅(jiān)實(shí)基礎(chǔ)。 克隆他們的辛苦工作,然后添加足夠的代碼以使其成為您自己的代碼。 無需重復(fù)每個(gè)人以前所做的事情。
這是一個(gè)簡單的計(jì)劃-只要您選擇即可。 不幸的是,選擇該基礎(chǔ)幾乎像剛開始一樣困難。 Web框架世界是一個(gè)非常活躍的開發(fā)領(lǐng)域,可能會(huì)有許多優(yōu)秀的開源項(xiàng)目對(duì)您的項(xiàng)目來說是一個(gè)很好的開端。
更糟糕的是,創(chuàng)建這些不同項(xiàng)目的不同團(tuán)隊(duì)在不同的道路上出發(fā),因?yàn)樗麄兣c其他選擇在理念上存在嚴(yán)重分歧。 他們研究了其他框架,并決定可以做得更好。 換句話說,他們這樣做是有原因的,您可能同意也可能不同意。
下面列出的好地方列表有意讓市場領(lǐng)導(dǎo)者React,Angular和Vue離開,只是為了使事情變得更簡單。 這并不意味著三巨頭都不好。 它們可能仍然是您的正確選擇。 只是他們經(jīng)常被談?wù)?#xff0c;而這些討論卻忽略了其他一些不錯(cuò)的選擇。
有很多充分的理由選擇最受歡迎的。 您穿鞋的許多人環(huán)顧四周,其中許多人有充分的理由選擇React , Angular或Vue 。 但是那是那時(shí)。 同時(shí),一些聰明的人已經(jīng)創(chuàng)建了更新的框架,這些框架更快,更簡單,更強(qiáng)大,或者是任何最高級(jí)的框架。
在下面的大多數(shù)情況下,這些團(tuán)隊(duì)通過重新構(gòu)想框架的本質(zhì)來創(chuàng)建有趣而強(qiáng)大的功能。 這是一種花哨的說法,他們最終刪除了一個(gè)功能,從而使框架更加高效,從而減少了所需的內(nèi)存量,加快了啟動(dòng)時(shí)間,或者通常使它更加靈活。 或者在某些情況下,他們添加了新的想法,這些想法將來可能會(huì)成為標(biāo)準(zhǔn)。
如果您有時(shí)間進(jìn)行投資,這里列出了其他一些有趣的選擇。 它們不一定適合某些人,也不是所有人的最佳選擇,但對(duì)于您來說可能是更好的選擇。 您的工作(如果選擇接受)是為Web應(yīng)用程序創(chuàng)建一個(gè)完整的描述,寫下有關(guān)不同用例的相對(duì)牢固的描述,然后牢記這些工具進(jìn)行評(píng)估。
也許您喜歡一種設(shè)計(jì)代碼的特殊方法。 也許您的應(yīng)用程序不需要胖的,更流行的框架中的某些功能。 有許多其他理由可以選擇其中一條途徑進(jìn)行投資。 您可能會(huì)發(fā)現(xiàn)其中之一為您的應(yīng)用程序創(chuàng)造了奇跡。
小DOM
如果您喜歡虛擬DOM的想法,但是您不希望采用React,Vue或其他大牌框架的人們的思維方式帶來的所有限制,那么Petit DOM是解決之道。 您將獲得少量的代碼,這些代碼將使您可以操縱標(biāo)簽的虛擬集合,然后將其遷移到真實(shí)的DOM。 有關(guān)組件結(jié)構(gòu)和渲染的所有其他事情都由您決定。 如果您的組件很簡單,或者要?jiǎng)?chuàng)建僅由您自己創(chuàng)建的一些超級(jí)復(fù)雜的呈現(xiàn)層次結(jié)構(gòu),那么這可能是您的基礎(chǔ),因?yàn)樗峁┑娜恐皇怯糜谔摂M化DOM的工具。
剩余
虛擬DOM可能并不適合所有人。 它占用空間,因此,如果您的操作不太復(fù)雜,則最好將指令直接傳遞到官方DOM。 剩余庫就是這樣做的。 它采用了每個(gè)人都喜歡的標(biāo)記JSX,并將其編譯為一些將操縱真實(shí)DOM的代碼。 正如他們?cè)趶V告業(yè)務(wù)中所說的那樣,它削減了中間商。 沒有差別。 沒有秘密的額外層。 只是對(duì)真實(shí)DOM的純粹操縱。 如果您的代碼簡單而直接,足以對(duì)DOM做幾件事,那么為什么還要打擾虛擬的注意力呢?
RE:DOM
對(duì)于那些不想在虛擬Dom中投入任何內(nèi)存的人來說,另一個(gè)選擇是一個(gè)名為RE:DOM的小型庫(2KB)。 RE:DOM包含一些基本例程,使您可以通過一些簡單JavaScript調(diào)用來創(chuàng)建所有標(biāo)記和組件。 語法更接近CSS,因此您只需幾次擊鍵就可以指定帶有ID和類的相當(dāng)復(fù)雜的標(biāo)簽。 您的“小于”(<)和“大于”(>)鍵將表示感謝。
秘銀
并非所有替代方案都是微小且極簡的。 在這種情況下, 秘銀可能被稱為“中型”框架,盡管它的大小只有8KB左右。 所有這些代碼都使用其他有效代碼來構(gòu)建具有有效更新機(jī)制的虛擬DOM,但同時(shí)還提供了一套標(biāo)準(zhǔn)化的工具來應(yīng)對(duì)許多標(biāo)準(zhǔn)挑戰(zhàn),例如路由和XMLHttpRequest調(diào)用。 項(xiàng)目設(shè)計(jì)者希望Mithril項(xiàng)目相對(duì)標(biāo)準(zhǔn)化,他們認(rèn)為將此代碼添加到主庫中可以提高標(biāo)準(zhǔn)化程度。 如果這還不夠的話,他們還會(huì)推出一些標(biāo)準(zhǔn)格式和慣用結(jié)構(gòu)。
鮑勃里爾
如果您喜歡React的虛擬DOM和有狀態(tài)組件,并且喜歡使用TypeScript進(jìn)行編程,那么Bobril或它的對(duì)Angular友好的表親ngBobril可能只是門票。 在某些基準(zhǔn)測試中,該框架始終比React或Angular快得多,這可能是因?yàn)閐iff算法更快并且缺乏對(duì)同構(gòu)JavaScript的支持。 如果需要,還有一些CSS操作的速記功能和一個(gè)完整的狀態(tài)管理層BobX 。
馬可
如果您一直在花時(shí)間競標(biāo)Pez分配器或其他收藏品,那么您會(huì)體驗(yàn)到Marko的強(qiáng)大功能。Marko是一個(gè)纖巧,快速的框架,eBay通過開放源代碼許可證共享了該框架。 最好的部分可能是非常輕量級(jí)的模板語法,該語法巧妙地從HTML中刪除了大多數(shù)多余的脂肪,因此該結(jié)構(gòu)是由縮進(jìn)定義的,而沒有其他內(nèi)容。 而且渲染引擎非常快速,能夠驅(qū)動(dòng)更新速度超過60fps的精致舞蹈DIV星座。
斯維爾特
您的標(biāo)準(zhǔn)Web框架附帶一個(gè)編譯器和一個(gè)下載的庫,該庫在運(yùn)行時(shí)處理編譯器生成的內(nèi)容。 這個(gè)分兩步的過程允許編寫非常復(fù)雜的代碼,但要以每次打開頁面時(shí)等待下載和解析運(yùn)行時(shí)庫為代價(jià)。 Svelte編譯器通過吐出幾乎可以獨(dú)立運(yùn)行的純JavaScript來擺脫這種復(fù)雜性,盡管它僅在某些較新的瀏覽器(例如Chrome,Firefox,Opera和IE10)中運(yùn)行。 這是一個(gè)聰明的建筑技巧,可以產(chǎn)生占用很少內(nèi)存的非常輕量級(jí)的網(wǎng)站。
地獄
Inferno是另一個(gè)框架,旨在執(zhí)行React的大部分工作,但下載量較小,運(yùn)行時(shí)間更快。 它通過放棄復(fù)雜的綜合事件機(jī)制,而只專注于最基本的事件(如onClick)來實(shí)現(xiàn)上述目標(biāo) 。 該API的許多其他部分都是相似的(如果不是相同的話),如果不需要事件優(yōu)化層,則使代碼移入相對(duì)簡單。
事前
最小的React后代之一是Preact ,它提供了大多數(shù)最有價(jià)值的功能,例如虛擬DOM和復(fù)雜的組件,但剝奪了合成事件處理程序和一些props繼承。 盡管Inferno嘗試僅實(shí)現(xiàn)最重要的事件(如onClick ,但Preact不會(huì)嘗試對(duì)事件做任何事情,而使您只能依賴瀏覽器的本機(jī)addEventListener 。 排除功能并沒有增加太多(他們認(rèn)為)的是如何使下載量變得更小。 這有點(diǎn)折衷,因?yàn)榛鶞?zhǔn)測試表明Preact比Inferno慢一些。 當(dāng)然,您的應(yīng)用程序可能會(huì)有所不同,并且里程可能會(huì)有所不同。 如果您確實(shí)需要與React的純粹兼容性,甚至還有一個(gè)庫( preact-compat )可以解決構(gòu)建期間的大多數(shù)問題。
哈皮
許多框架合而為一。 Hapi不僅是插件的集合,還包含幾十個(gè)代碼位,您可以根據(jù)需要將其混合到堆棧中。 身份驗(yàn)證,授權(quán)和日志記錄是繁瑣的工作,可以通過許多選項(xiàng)解決。 如果您要構(gòu)建一個(gè)包含API的微服務(wù)架構(gòu),那么標(biāo)準(zhǔn)化的Swagger插件將自動(dòng)從您的基本代碼生成Swagger文檔。
考阿
有時(shí),您需要一個(gè)相當(dāng)復(fù)雜的例程集合,這些例程可以處理傳入的請(qǐng)求并將其轉(zhuǎn)換為多個(gè)更改,其中一些操作很復(fù)雜。 Koa旨在使所有這些工作的組織變得更加簡單。 它的秘密在于,它將通常控制JavaScript的回調(diào)函數(shù)轉(zhuǎn)變?yōu)橐唤M異步函數(shù),這些異步函數(shù)將在適當(dāng)?shù)臅r(shí)候觸發(fā)。 嵌套的意大利面條回調(diào)堆棧變成了更干凈的東西。
巢
降低服務(wù)器復(fù)雜性的另一種選擇來自Nest團(tuán)隊(duì),他們提供了一種架構(gòu),其中填充了控制器,管道和提供程序,并提供了一些防護(hù),攔截器和異常過濾器以保持秩序。 該框架是現(xiàn)代的,隨時(shí)可以從一開始就處理GraphQL和微服務(wù)請(qǐng)求。
Drupal,WordPress和Rails
這些天來,用JavaScript內(nèi)置并在Node.js之上運(yùn)行的框架充斥著Web開發(fā)世界的心理中心。 但是,如果忽略上一代基于PHP的上一代,這可能是一個(gè)錯(cuò)誤,該基礎(chǔ)比以往任何時(shí)候都快,而且還具有像JavaScript這樣的即時(shí)編譯器。 Ruby及其Rails框架繼續(xù)充當(dāng)堅(jiān)如磐石的網(wǎng)站的基石。
經(jīng)過十多年的不斷發(fā)展和努力,上一代人備受打擊,并且經(jīng)受了考驗(yàn)。 有經(jīng)驗(yàn)豐富的設(shè)計(jì)師可以為應(yīng)用程序制作主題和外觀。 很有可能有人已經(jīng)用您需要的功能構(gòu)建了模塊。 因此,在探索一個(gè)聰明的Node.js框架之前,請(qǐng)考慮其中一項(xiàng)舊有的東西是否已經(jīng)可以做很多甚至不需要的事情。
香草JS
您可能會(huì)認(rèn)為這是對(duì)“皇帝的新裝”的刻薄挖掘或諷刺,但很難與它的成功爭論。 Vanilla JS是一個(gè)自吹自that的網(wǎng)站,其網(wǎng)站使用的網(wǎng)站數(shù)量超過了“ jQuery,Prototype JS,MooTools,YUI和Google Web Toolkit的總和 。” 考慮到j(luò)Query的泛濫,這可能是正確的,也可能不是正確的,但讓我們笑一笑。 該站點(diǎn)還帶有一個(gè)可愛的小選擇器,使您可以將不同組件的自定義歸檔捆綁在一起,例如Math,DOM,閉包或正則表達(dá)式。 無論您選擇什么,結(jié)果都是令人難以置信的零字節(jié)長。 嘗試擊敗那個(gè)!
開玩笑的意思是,有時(shí)僅使用JavaScript中的一些標(biāo)準(zhǔn)元素并跳過多余的部分是有道理的。 諸如jQuery或React之類的庫和框架之所以開始,部分是由于瀏覽器之間的瘋狂差異。 由于標(biāo)準(zhǔn)化,許多差異已經(jīng)消失了。
當(dāng)然,香草JS支持者不會(huì)面對(duì)這樣的事實(shí): $()類的速記函數(shù)不僅方便,而且還節(jié)省了我們自己代碼中的空間。 但是,如果您只是偶爾使用document.getElementById ,則可能無關(guān)緊要。 如果您只是要在網(wǎng)頁上添加一些功能,而這些功能將做一些基本的事情,那么純凈的原始JavaScript可能是您最快的框架。
From: https://www.infoworld.com/article/3300156/15-great-alternatives-to-react-angular-and-vue.html
總結(jié)
以上是生活随笔為你收集整理的React,Angular和Vue的15种绝佳替代品的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hx711基准电压_hx711中文资料汇
- 下一篇: 一套皮包公司财务记账程序的基本流程搭建