精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
前端框架及組件庫選型分析

1 前言

隨著web技術(shù)的不斷發(fā)展,前端架構(gòu)框架、UI框架、構(gòu)建工具、CSS預(yù)處理等層出不窮,各有千秋。太多的框架在形成初期,都曾在web領(lǐng)域掀起過一場技術(shù)浪潮,可有些卻僅僅是曇花一現(xiàn)。隨著他們用戶量的逐漸減少,社區(qū)也越來越不活躍。如: meteor、backbone、ember、knockout。

目前,最受歡迎的前端框架主要有Angular、React和Vue,個個發(fā)展勢頭良好,有種三分天下的感覺。此次選型我們主要針對這三種框架及其各自的組件庫,選出適合公司開發(fā)的一種。

2 需求分析

3 框架分析

3.1 SPA和MPA

在開始之前,我們應(yīng)該明確是SPA還是MPA?

1 單頁web應(yīng)用(single page web application,SPA),只有一張web頁面的應(yīng)用,是加載單個HTML頁面并在用戶與應(yīng)用程序交互時動態(tài)更新該頁面的web應(yīng)用程序。

頁面跳轉(zhuǎn):JS渲染

優(yōu)點:頁面切換快

缺點:首屏加載時間稍慢,SEO差

2 多頁web應(yīng)用(multi page web application,MPA),每一次頁面跳轉(zhuǎn)的時候,后臺服務(wù)器都會返回一個新的HTML文檔,這種類型的網(wǎng)站也就是多頁網(wǎng)站。

頁面跳轉(zhuǎn):返回HTML

優(yōu)點:首屏加載時間快,SEO效果好

缺點:頁面切換慢

3 流程如下:

4 多頁和單頁應(yīng)用模式的對比


多頁應(yīng)用模式(MPA)

單頁應(yīng)用模式(SPA)

應(yīng)用組成

由多個完整頁面構(gòu)成

一個外殼頁面和多個頁面片段構(gòu)成

跳轉(zhuǎn)方式

頁面之間的跳轉(zhuǎn)時從一個頁面跳轉(zhuǎn)到另一個頁面

頁面片段之間的跳轉(zhuǎn)是把一個頁面片段刪除或隱藏,加載另一個頁面片段并顯示出來。這是片段之間的模擬跳轉(zhuǎn),并沒有離開殼頁面

刷新方式

整頁刷新

頁面片段局部刷新

跳轉(zhuǎn)后公共資源是否從新加載

URL模式

http://xxx/page1.html

http://xxx/page2.html

http://xxx/shell.html#page1

http://xxx/shell.html#page2

用戶體驗

頁面間切換加載慢,不流暢,用戶體驗差

頁面片段間的切換快,用戶體驗好

能否實現(xiàn)轉(zhuǎn)場動畫

無法實現(xiàn)

容易實現(xiàn)

頁面間傳遞數(shù)據(jù)

依賴URL、cookie或者local Storage,實現(xiàn)麻煩

因為在一個頁面內(nèi),頁面片段間傳遞數(shù)據(jù)很容易實現(xiàn)

搜索引擎優(yōu)化(SEO)

可以直接做

需要單獨方案做,比較麻煩

特別適用的范圍

需要對搜索引擎友好的網(wǎng)站

對體驗要求高的應(yīng)用,特別是移動應(yīng)用

開發(fā)難度

低一些,框架選擇容易

高一些,需要專門的框架來降低這種模式的開發(fā)難度

結(jié)論

單頁應(yīng)用模式由于由很多好處,已經(jīng)是web應(yīng)用開發(fā)的潮流,特別是移動應(yīng)用開發(fā)

3.2 框架背景

1 Angular是基于TypeScript的JavaScript框架。由Google進(jìn)行開發(fā)和維護(hù),它被描述為“超級厲害的JavaScript MVW框架”。Angular 1.x名為AngularJS,基于JavaScript。從Angular 2開始改名為Angular,不帶JS,基于TypeScript。最新版本已升至Angular7。Google、Vine、Wix、Udemy、weather.com、healthcare.gov和Forbes都使用Angular。

2 React被描述為“用于構(gòu)建用戶界面的JavaScript”庫。React最初于2013年3月發(fā)布,由Facebook進(jìn)行開發(fā)和維護(hù),F(xiàn)acebook在多個頁面上使用React組件。據(jù)統(tǒng)計,React在Facebook上的使用遠(yuǎn)遠(yuǎn)多于Angular在Google上的使用。最新版本為React16。React還被Airbnb、Uber、Netflix、Twitter、Pinterest、Reddit、Udemy、Wix、PayPal、Imgur、Feedly、Stripe、Tumblr、Walmart等使用。

3 Vue是近兩年發(fā)展最為迅速的JS框架之一。Vue將自己描述為一款“用于構(gòu)建直觀,快速和組件化交互式界面的MVVM框架”。它于2014年2月首次由Google前員工尤雨溪發(fā)布。于2016年發(fā)布版本2。Vue被阿里巴巴、百度、Expedia、任天堂、GitLab等使用。

3.3 人氣和市場趨勢

在GitHub上,截止目前,Angular有44.5K的star和822名貢獻(xiàn)者;React有120K的star和1272名貢獻(xiàn)者;Vue有126K的star和253名貢獻(xiàn)者,以下為Paul Henschel提供的 npm 趨勢。Npm趨勢顯示了npm包的下載次數(shù)。

下圖為GitHub上三者的數(shù)據(jù)對比:

3.4 特性和優(yōu)缺點比較

3.4.1 Angular

Angular特性:

1 良好的應(yīng)用程序結(jié)構(gòu)

2 雙向數(shù)據(jù)綁定

3 指令

4 HTML模板

5 可嵌入、注入和測試

優(yōu)點:

1 模板功能強大豐富,自帶了極其豐富的angular指令。

2 是一個比較完善的前端框架,包含服務(wù),模板,數(shù)據(jù)雙向綁定,模塊化,路由,過濾器,依賴注入等所有功能。

3 自定義指令,自定義指令后可以在項目中多次使用。

4 ng模塊化比較大膽的引入了Java的一些東西(依賴注入),能夠很容易的寫出可復(fù)用的代碼。

5 angular由Google開發(fā),意味著它有一個堅實的基礎(chǔ)和社區(qū)支持。

缺點:

1 angular入門很容易,但深入后概念很多,學(xué)習(xí)中較難理解。

2 文檔例子非常少,官方文檔基本只寫了API,一個例子都沒有。

3 對IE6/7兼容不是很好。

4 DI依賴注入如果代碼壓縮需要顯示聲明。

3.4.2 React

React特性:

1 聲明式設(shè)計:React采用聲明式設(shè)計,可以輕松描述應(yīng)用。

2 高效:React通過對DOM的模擬,最大限度地減少與DOM的交互。

3 靈活:React可以與已知的庫或框架很好的配合。

優(yōu)點:

1 速度快:在UI渲染過程中,React通過在虛擬DOM中的微操作來實現(xiàn)對實際DOM的局部更新。

2 跨瀏覽器兼容:虛擬DOM幫助我們解決了跨瀏覽器問題,它為我們提供了標(biāo)準(zhǔn)化的API,甚至在IE8中都是沒問題的。

3 模塊化:為你程序編寫?yīng)毩⒌哪K化UI組件,這樣當(dāng)某個或某些組件出現(xiàn)問題時,可以方便地進(jìn)行隔離。

4 單向數(shù)據(jù)流:Flux是一個用于在JavaScript應(yīng)用中創(chuàng)建單向數(shù)據(jù)層的架構(gòu),它隨著React視圖庫的開發(fā)而被Facebook概念化。

5 同構(gòu)、純粹的JavaScript:因為搜索引擎的爬蟲程序依賴的是服務(wù)端響應(yīng)而不是JavaScript的執(zhí)行,預(yù)渲染你的應(yīng)用有助于搜索引擎優(yōu)化。

6 兼容性好:比如使用requireJS來加載和打包,而Browserity和webpack適用于構(gòu)建大型應(yīng)用。

缺點:

1 React本身只是一個View,并不是一個完整的框架,如果是大型項目想要一套完整的框架的話,需要加上ReactRouter和Flux才能寫大型應(yīng)用。

3.4.3 Vue

Vue特性:

1 輕量級的框架

2 雙向數(shù)據(jù)綁定

3 指令

4 插件化

優(yōu)點:

1 簡單:官方文檔清晰,比Angular和React易學(xué)。

2 快速:異步批處理方式更新DOM。

3 組合:用解耦的、可復(fù)用的組件組合你的應(yīng)用程序。

4 緊湊:~18kb min+gzip,且無依賴。

5 強大:表達(dá)式&無需聲明依賴的可推導(dǎo)屬性(computed properties)。

6 對模塊友好。

缺點:

1 Vue沒有Angular那么成熟。

2 不支持IE8。

3.5 單向數(shù)據(jù)綁定與雙向數(shù)據(jù)綁定

在React中使用單向數(shù)據(jù)綁定,而在Angular和Vue中使用的是雙向數(shù)據(jù)綁定。

3.5.1 單向數(shù)據(jù)綁定

單向數(shù)據(jù)綁定指的是我們先把模板寫好,然后把模板和數(shù)據(jù)(數(shù)據(jù)可能來自后臺)整合到一起形成HTML代碼,然后把這段HTML代碼插入到文檔流里面。

單向綁定的優(yōu)點是:相應(yīng)的可以帶來單向數(shù)據(jù)流,這樣做的好處是所有的狀態(tài)變化都可以被記錄、跟蹤,狀態(tài)變化通過手動調(diào)用通知,煙頭易追溯,沒有“暗箱操作”。同時組件數(shù)據(jù)只有唯一的入口和出口,使得程序更直觀更容易理解,有利于應(yīng)用的可維護(hù)性。

單向綁定的缺點是:HTML代碼一旦生成完以后,就沒有辦法再變了,如果有新的數(shù)據(jù)來了,就必須把之前的HTML代碼去掉,再重新把新的數(shù)據(jù)和模板一起整合后插入文檔流中。所以代碼量會相應(yīng)的上升,數(shù)據(jù)的流轉(zhuǎn)過程變長,從而出現(xiàn)很多類似的樣板代碼。同時由于對應(yīng)用狀態(tài)獨立管理的嚴(yán)格要求(單一的全局store),在處理局部狀態(tài)較多的場景時(如用戶輸入交互較多的“富表單型”應(yīng)用),會顯得啰嗦及繁瑣。

3.5.2 雙向數(shù)據(jù)綁定

雙向數(shù)據(jù)綁定=單向數(shù)據(jù)綁定+UI事件監(jiān)聽。即數(shù)據(jù)模型(Module)和視圖(View)之間的雙向綁定。用戶在視圖上的修改會自動同步到數(shù)據(jù)模型中去,同樣的,如果數(shù)據(jù)模型中的值發(fā)生了變化,也會立刻同步到視圖中去。

雙向數(shù)據(jù)綁定的優(yōu)點:無需進(jìn)行和單項綁定的那些CRUD(Create,Retrieve,Update,Delete)操作。在表單交互較多的場景下,會簡化大量業(yè)務(wù)無關(guān)的代碼。

雙向數(shù)據(jù)綁定的缺點:由于都是“暗箱操作”,我們無法追蹤局部狀態(tài)的變化,潛在的行為太多也增加了出錯時debug的難度。

3.5.3 Angular雙向綁定實現(xiàn)

Angular的雙向綁定主要是digest循環(huán)和dirty-checking(臟數(shù)據(jù)檢查),包括watch,digest和apply。

1 Angular在瀏覽器循環(huán)監(jiān)聽事件中添加了自己的digest循環(huán)事件(核心)

瀏覽器一直在監(jiān)聽頁面上的事件,當(dāng)你點擊一個按鈕等等,操作觸發(fā)之后,回調(diào)函數(shù)就會執(zhí)行,然后你就可以做任何DOM操作,等回調(diào)+函數(shù)執(zhí)行完成,瀏覽器就會相應(yīng)更新DOM。Angular往里面加了監(jiān)聽事件。

2 watch隊列

每次你綁定一些東西到你的UI界面時,就會往watch隊列里插入一條watch。Watch:監(jiān)聽一個model,當(dāng)一個model每次改變時,都會觸發(fā)第二個函數(shù)。當(dāng)我們的模板加載完畢時,Angular解釋器會尋找每一個directive(指令),然后生成每個需要的watch。

3 digest循環(huán)

當(dāng)瀏覽器接收到可以被angular context處理的事件時,digest循環(huán)就會觸發(fā),這個循環(huán)包括了兩個更小的循環(huán),一個是處理evalAsync隊列,另一個是watch隊列。其實就是digest會遍歷我們的watch,然后問它有沒有屬性和值發(fā)生變化了,直到所有的watch隊列全部都檢查過,一旦有watch改變了,那就要循環(huán)重新觸發(fā),直到所有的watch都沒有變化,這樣才能保證所有的model都已經(jīng)不會再變化了。但是如果循環(huán)超過10次的話,那么它將拋出一個異常,這是為了防止無限循環(huán),當(dāng)digest循環(huán)結(jié)束時,DOM進(jìn)行相應(yīng)的變化,這就時dirty-checking臟數(shù)據(jù)檢查。

4 最后由apply來確定是否要進(jìn)入到angular context實踐中,調(diào)用了就進(jìn)入,不調(diào)用就不用進(jìn)入。

3.5.4 Vue雙向綁定實現(xiàn)

Vue采用數(shù)據(jù)劫持(通過Object.defineProperty劫持各個屬性)結(jié)合發(fā)布-訂閱模式來實現(xiàn)雙向綁定。

1 設(shè)置一個監(jiān)聽器,也就是Observe(發(fā)布者),用來監(jiān)聽所有的屬性。Observe就是Object.defineProperty()方法,由于屬性值一般都比較多,所以采用遞歸的方式遍歷所有的屬性值,從而達(dá)到監(jiān)聽所有屬性的功能。

2 指令解析器Compile,對頁面上的每個元素節(jié)點的指令進(jìn)行掃描和解析,根據(jù)指令模板替換數(shù)據(jù),以及綁定相應(yīng)的更新函數(shù)。

3  Watcher(訂閱者)時連接Observe和compile的橋梁,它可以收到每個屬性變化的通知,也就是說Observe一旦監(jiān)聽到屬性有了變動,就需要去通知watcher,watcher收到屬性變化然后去通知compile并執(zhí)行相應(yīng)的更新函數(shù),然后更新界面。

總結(jié):當(dāng)數(shù)據(jù)data改變時,Angular采用的時apply調(diào)用的方法,而Vue是通過Object.defineProperty()堆屬性設(shè)置一個set函數(shù),當(dāng)數(shù)據(jù)改變了就會觸發(fā)這個函數(shù)的方式。兩個進(jìn)行對比來說,因為angular的數(shù)據(jù)綁定是臟數(shù)據(jù)檢測,簡單的說就是檢測新值和舊值有沒有變化,這樣就要定時去檢測,而Vue只是觸發(fā)set方法,因此兩者這一塊的性能消耗上Vue要比Angular更加優(yōu)秀。

3.6 依賴標(biāo)準(zhǔn)

React專注于使用JavaScript ES6,Vue使用JavaScript ES5或ES6。

Angular依賴于typescript。這也引入了像裝飾器和靜態(tài)類型的概念。

由于JS沒有靜態(tài)類型檢測,有些變量類型相關(guān)的問題只能在運行階段暴漏出來,為了解決這個問題,因此有了Flow等工具庫。

Flow 是Facebook開發(fā)和發(fā)布的一個開源的靜態(tài)類型檢查庫,它允許你逐漸地向你JavaScript代碼中添加類型。可以在代碼階段就檢測出對變量地不恰當(dāng)引用。避免【undefined is not a function】之類的錯誤。而且由于類型固定了,在V8上的執(zhí)行效率會更高。

TypeScript是微軟出品的,一個會編譯為JavaScript的超集。這意味著,它用起來感覺和JavaScript很像,并不難上手。因為typescript提供了很多強類型語言的功能,所以可以使得代碼更健壯,編譯后的代碼也是針對V8等JS引擎優(yōu)化過的,所以執(zhí)行效率也不會太慢。

3.7 模板——JSX or HTML

React使用JSX模板,JSX是一個類似HTML語法的可選預(yù)處理器,并隨后在JavaScript中進(jìn)行編譯。JSX對于開發(fā)來說是一個很大的優(yōu)勢,因為代碼寫在同一個地方,可以在代碼完成和編譯時更好地檢查工作成果。當(dāng)你在JSX中輸入錯誤時,React將不會編譯,并打印輸出錯誤地行號。而Angular2在運行時則靜默失敗。

Angular模板使用特殊的Angular語法(比如ngIf或者ngFor)來增強HTML。雖然React需要JavaScript的知識,單Angular會迫使你學(xué)習(xí)Angular特有的語法。

Vue具有“單個文件組件”。相比來說,JSX更容易調(diào)試,因為Vue不會顯示不規(guī)范HTML的語法錯誤。

3.8 生態(tài)圈

關(guān)于開源框架很重要的事情是圍繞它而衍生出的工具數(shù)量。有時候,那些工具甚至比框架本身更有用。

3.8.1 Angular

Angular是一個框架而不是一個庫,因為它提供了關(guān)于如何構(gòu)建應(yīng)用程序的強有力的約束,并且還提供了更多開箱即用的功能。Angular是一個“完整的解決檔案”,功能齊全,我們不需要研究庫、路由解決方案或類似的東西。

1 Angular命令行工具

現(xiàn)代框架的流行趨勢時通過一個命令行工具來幫助初始化項目,而不必親自配置。Angular的工具叫Angular CLI。它允許通過一系列的命令來生成和啟動項目。所有與創(chuàng)建應(yīng)用、啟開發(fā)環(huán)境、跑測試有關(guān)的腳本都被巧妙地隱藏在一個教node_modules的文件夾中。你也能在開發(fā)期間通過它生成新的代碼,這使得創(chuàng)建新項目十分的簡單。

3.8.2 React

1 Create react app

Create-react-app 是用于快速構(gòu)建React項目的命令行工具,跟Angular CLI相似,它允許生成一個新項目,啟動開發(fā)服務(wù)和打包。它用Jest 做單元測試(一款來自Facebook的比較新的測試工具,本身有一些好的特性)。它也支持通過環(huán)境變量做靈活的應(yīng)用分析、本地環(huán)境的后端代理、Flow和其他特性。

2 Next.js

Next.js 是用于React應(yīng)用在服務(wù)端渲染的框架。它提供了一個靈活的方式在服務(wù)端全部或部分渲染應(yīng)用,返回結(jié)果給客戶端并繼續(xù)保持在瀏覽器中。他嘗試完成一項復(fù)雜的任務(wù),盡可能簡單的創(chuàng)建一個通用應(yīng)用,所以設(shè)置也被設(shè)計的盡可能簡單。

3 Flux

Flux 是Facebook開發(fā)的用于構(gòu)建客戶端web應(yīng)用程序的應(yīng)用程序架構(gòu)。它通過利用單向數(shù)據(jù)流來補充React的可組合視圖組件。框架如下:

  • Actions: 驅(qū)動Dispatcher發(fā)起改變

  • Dispatcher: 負(fù)責(zé)分發(fā)動作(事件)

  • Store: 儲存數(shù)據(jù),處理數(shù)據(jù)

  • View: 視圖部分

4 Redux

Redux 是JavaScript應(yīng)用程序的可預(yù)測狀態(tài)容器。是基于Flux理念的一種解決方式。

Flux的缺點為:

1 一個應(yīng)用可以擁有多個store,多個store直接可能有依賴關(guān)系(相互引用);

2 store封裝了數(shù)據(jù)和處理數(shù)據(jù)的邏輯。

相比Flux,Redux有如下兩個特點:

1 在整個應(yīng)用只提供一個store,它是一個扁平的樹形結(jié)構(gòu),一個節(jié)點狀態(tài)應(yīng)該只屬于一個組件。

2 不允許修改數(shù)據(jù)。即不能修改老狀態(tài),只能返回一個新狀態(tài)。

Redux數(shù)據(jù)流如下:

3.8.3 Vue

1 Vue CLI

Vue CLI 是一個基于Vue.js進(jìn)行快速開發(fā)的完整系統(tǒng),提供:

  • 通過 @vue/cli 搭建交互式的項目腳手架。

  • 通過 @vue/cli + @vue/cli-service-global 快速開始零配置原型開發(fā)。

  • 一個運行時依賴 (@vue/cli-service),該依賴:

    • 可升級;

    • 基于 webpack 構(gòu)建,并帶有合理的默認(rèn)配置;

    • 可以通過項目內(nèi)的配置文件進(jìn)行配置;

    • 可以通過插件進(jìn)行擴(kuò)展。

  • 一個豐富的官方插件集合,集成了前端生態(tài)中最好的工具。

  • 一套完全圖形化的創(chuàng)建和管理 Vue.js 項目的用戶界面。

Vue CLI 致力于將 Vue 生態(tài)中的工具基礎(chǔ)標(biāo)準(zhǔn)化。它確保了各種構(gòu)建工具能夠基于智能的默認(rèn)配置即可平穩(wěn)銜接,這樣你可以專注在撰寫應(yīng)用上,而不必花好幾天去糾結(jié)配置的問題。

2 Vuex

Vuex 是一個專為Vue.js應(yīng)用程序開發(fā)的狀態(tài)管理模式,它采用集中式存儲管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測的方式發(fā)生改變。Vuex也集成到Vue的官方調(diào)試工具 devtools extension,提供了諸如零配置的time-travel調(diào)試、狀態(tài)快照導(dǎo)出等高級調(diào)試工具。

3 Vue router

Vue Router 是Vue.js官方的路由管理器。他和Vue.js的核心深度集成,讓構(gòu)建單頁面應(yīng)用變得易如反掌。包含的功能有:

  • 嵌套的路由/視圖表

  • 模塊化的、基于組件的路由配置

  • 路由參數(shù)、查詢、通配符

  • 基于 Vue.js 過渡系統(tǒng)的視圖過渡效果

  • 細(xì)粒度的導(dǎo)航控制

  • 帶有自動激活的 CSS class 的鏈接

  • HTML5 歷史模式或 hash 模式,在 IE9 中自動降級

  • 自定義的滾動條行為

4 Vue Resource

Vue Resource 插件提供了使用XMLHttpRequest或JSONP發(fā)出web請求和處理響應(yīng)的服務(wù)。特點如下:

1 體積小:vue-resource非常小巧,在壓縮以后只有大約12KB,服務(wù)端啟用gzip壓縮后只有4.5KB大小,這遠(yuǎn)比jQuery的體積要小得多。

2 支持主流瀏覽器:和Vue.js一樣,vue-resource除了不支持IE 9以下的瀏覽器,其他主流的瀏覽器都支持

3 支持Promise API和URI Templates: Promise是ES6的特性,Promise的中文含義為“先知”,Promise對象用于異步計算。 URI Templates表示URI模板,有些類似于ASP.NET MVC的路由模板

4 支持?jǐn)r截器:攔截器是全局的,攔截器可以在請求發(fā)送前和發(fā)送請求后做一些處理。 攔截器在一些場景下會非常有用,比如請求發(fā)送前在headers中設(shè)置access_token,或者在請求失敗時,提供共通的處理方式。

4 UI 組件分析

4.1 Angular UI組件

4.1.1 NGX-bootstrap

NGX-bootstrap 是由Valor Software的ng團(tuán)隊設(shè)計和構(gòu)建的Angular UI組件庫。支持Bootstrap3或者Bootstrap4。在GitHub上有4.5k個star以及222個貢獻(xiàn)者。需要哪個組件引入哪個組件。支持現(xiàn)代瀏覽器和IE9+。

4.1.2 NG-bootstrap

NG-bootstrap 是由ng-bootstrap團(tuán)隊設(shè)計和構(gòu)建的Angular UI組件庫,在GitHub上有6.5k個star以及91個貢獻(xiàn)者。和NGX-bootstrap區(qū)別在于只支持Bootstrap4。只需引入ngbModule,任何組件都可以使用。支持現(xiàn)代瀏覽器和IE10+。

4.1.3 NG-ZORRO

NG-ZORRO 是阿里設(shè)計和構(gòu)建的Angular 組件庫,繼承了Ant Design風(fēng)格,主要用來開發(fā)和服務(wù)于企業(yè)級后臺產(chǎn)品。在GitHub上有4.3k個star以及60個貢獻(xiàn)者。

文檔清晰,上手友好,每周都會發(fā)布一個BUG優(yōu)化的小版本,常用組件也比較多,但相比于PrimeNG少了一些。支持Angular7版本。支持現(xiàn)代瀏覽器和IE11+。

適用場景:后臺管理系統(tǒng)

4.1.4 Material

Material 是由Google官方開發(fā)的一款A(yù)ngular組件庫,在GitHub上有17K個star以及338個貢獻(xiàn)者。輕量級,組件不多功能也不算特別豐富,樣式和動畫做的比較好,繼承了Google的material design。有強大的官方背景,但是因為過度追求完美反而插件的量上不去,相關(guān)資料也比較少。很多組件比較初級。支持所有主流瀏覽器的最新兩個版本(IE11+)。

適用場景:輕量級,需要快速啟動的SPA應(yīng)用。

4.1.5 NGX-admin

NGX-admin 是由AKVEO設(shè)計和構(gòu)建Angular組件庫,在GitHub上有15k個star以及27個貢獻(xiàn)者。基于Angular7+,Bootstrap4。包含40+組件,60+用法示例,以及三個主題樣式模板。提供地圖和圖表組件。

4.1.6 PrimeNG

PrimeNG 是由Prime設(shè)計和構(gòu)建的Angular UI組件庫。在GitHub上有4.9k個star以及234個貢獻(xiàn)者。PrimeNG是一個大而全的組件庫,提供了超過80種的組件和多種主題供開發(fā)者選擇,能夠應(yīng)付大部分的業(yè)務(wù)場景。但是靈活性比較差,在對樣式細(xì)節(jié)要求比較高的場景下,組件的樣式修改會顯得非常麻煩,并且對數(shù)據(jù)格式要求嚴(yán)格,對定制個人的組件不友好。官方對一些BUG修復(fù)的比較慢?,F(xiàn)在趨于一個比較穩(wěn)定的狀態(tài),部分組件如table的坑比較多。

適用場景:業(yè)務(wù)需求比較明確,對樣式自定義要求不高,能在PrimeNG中找到對應(yīng)組件且直接使用就能滿足業(yè)務(wù)要求的不需要功能拓展的場景。

4.2 React UI組件

4.2.1 Material-UI

Material-UI 是由Google官方開發(fā)的組件庫,在GitHub上有43.8k個star以及1097個貢獻(xiàn)者。瀏覽器支持如下:

4.2.2 Elemental-UI

Elemental-UI 是由Thinkmill開發(fā)的UI組件庫。在GitHub上有4.2k 個star以及29個貢獻(xiàn)者。最新提交在2017年1月23日。支持現(xiàn)代瀏覽器和IE10+。

4.2.3 Antd

Antd 是由螞蟻金服開發(fā)的React UI組件庫,在GitHub上有41.5k個star以及719個貢獻(xiàn)者。遵循Ant設(shè)計規(guī)范,其中包含一組高質(zhì)量的組件和演示,用于構(gòu)建豐富的交互式用戶界面。使用TypeScript編寫。支持現(xiàn)代瀏覽器和IE9+。

4.2.4 React-bootstrap

React-bootstrap 是可重用的前端組件庫,在GitHub上有15k個star以及224個貢獻(xiàn)者。React-bootstrap的樣式組件依賴于bootstrap。目前針對于bootstrap3。支持IE9+。

4.3 Vue UI組件

4.3.1 Element

Elemental 是餓了嗎前端開源維護(hù)的Vue UI 組件庫,在GitHub上有35k個star以及409個貢獻(xiàn)者。更新頻率高,組件齊全,基本涵蓋后臺所需的所有組件,文檔講解詳細(xì),例子也很豐富。支持現(xiàn)代瀏覽器和IE10+。

4.3.2 Ant-design-vue

Ant-design-vue 是Ant Dsign的Vue實現(xiàn),開發(fā)和服務(wù)于企業(yè)級后臺產(chǎn)品。在GitHub上有3.9k個star和19個貢獻(xiàn)者。包含55個組件,支持現(xiàn)代瀏覽器和IE9+。

4.3.3 iView

iView 是一套基于Vue.js的開源UI組件庫,主要服務(wù)于PC界面的中后臺產(chǎn)品。在GitHub上有19.5k個star以及124個貢獻(xiàn)者。組件齊全,更新很快,文檔也很詳細(xì),有公司團(tuán)隊維護(hù),是比較可靠的Vue UI組件框架。目前iView已經(jīng)應(yīng)用在阿里巴巴、百度、騰訊、今日頭條、京東等大型公司的產(chǎn)品中。大多數(shù)組件和和功能支持IE9+,某些組件和功能不支持IE。

5 總結(jié)

搭建大型復(fù)雜應(yīng)用:Angular(React)

開發(fā)人員少:Vue(或React)

學(xué)習(xí)路線長度:Angular>React>Vue

成熟的生態(tài)系統(tǒng):Angular(或React)

一方面來說,TypeScript的用戶群依然不大,Angular使用TypeScript存在一定的風(fēng)險,誰也不知道TypeScript能不能一直持續(xù)發(fā)展下去。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
9個適用于React,Vue,Angular的Bootstrap UI組件庫
Angular vs React vs Vue 三個框架的比較
Vue和React大比拼,你pick誰?
影響了一代代前端人的 21 個里程碑式的頂級開源項目!
優(yōu)秀的Web前端工程師應(yīng)該具備這些條件,你都會嗎?
別再學(xué)那些落后的Web 開發(fā)技術(shù)了 !
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服

主站蜘蛛池模板: 习水县| 巴东县| 阜平县| 宣恩县| 错那县| 康马县| 颍上县| 喀喇沁旗| 习水县| 丰台区| 古田县| 县级市| 尼勒克县| 怀化市| 田阳县| 甘德县| 阳曲县| 桐庐县| 湖口县| 会理县| 共和县| 泽库县| 达州市| 靖边县| 白朗县| 兰州市| 长寿区| 营山县| 惠州市| 辰溪县| 双城市| 阿城市| 延长县| 留坝县| 宜城市| 普格县| 茌平县| 富阳市| 桃园市| 三穗县| 桂东县|