web前端多端編程開(kāi)發(fā)框架結(jié)構(gòu)?
隨著我們對(duì)web前端編程開(kāi)發(fā)技術(shù)的掌握,越來(lái)越多的框架語(yǔ)言和架構(gòu)方式被我們所熟知。下面北京北大青鳥(niǎo)就一起來(lái)了解一下,web前端開(kāi)發(fā)的一些常見(jiàn)框架結(jié)構(gòu)。
1.全包型
這類框架大的特點(diǎn)就是從底層的渲染引擎、布局引擎,到中層的DSL,再到上層的框架全部由自己開(kāi)發(fā),代表框架是Qt和Flutter。這類框架優(yōu)點(diǎn)非常明顯:性能(的上限)高;各平臺(tái)渲染結(jié)果一致。缺點(diǎn)也非常明顯:需要完全重新學(xué)習(xí)DSL(QML/Dart),以及難以適配*特色的端:小程序。
這類框架是原始也是純正的的多端開(kāi)發(fā)框架,由于底層到上層每個(gè)環(huán)節(jié)都掌握在自己手里,也能大可能地去保證開(kāi)發(fā)和跨端體驗(yàn)一致。但它們的框架研發(fā)成本巨大,渲染引擎、布局引擎、DSL、上層框架每個(gè)部分都需要大量人力開(kāi)發(fā)維護(hù)。
2.Web技術(shù)型
這類框架把Web技術(shù)(,CSS)帶到移動(dòng)開(kāi)發(fā)中,自研布局引擎處理CSS,使用寫業(yè)務(wù)邏輯,使用流行的前端框架作為DSL,各端分別使用各自的原生組件渲染。代表框架是和Weex,這樣做的優(yōu)點(diǎn)有:
開(kāi)發(fā)迅速;
復(fù)用前端生態(tài);
易于學(xué)習(xí)上手,不管前端后端移動(dòng)端,多多少少都會(huì)一點(diǎn)JS、CSS。
缺點(diǎn)有:
1.交互復(fù)雜時(shí)難以寫出高性能的代碼,這類框架的設(shè)計(jì)就必然導(dǎo)致JS和Native之間需要通信,類似于手勢(shì)操作這樣頻繁地觸發(fā)通信就很可能使得UI無(wú)法在16ms內(nèi)及時(shí)繪制。有一些聲明式的組件可以避免這個(gè)問(wèn)題,但聲明式的寫法很難滿足復(fù)雜交互的需求。
2.由于沒(méi)有渲染引擎,使用各端的原生組件渲染,相同代碼渲染的一致性沒(méi)有一種高。
3.編譯型
這類框架就是我們這篇文章的主角們:Taro、WePY、uni-app、mpvue、chameleon,它們的原理也都大同小異:先以作為基礎(chǔ)選定一個(gè)DSL框架,以這個(gè)DSL框架為標(biāo)準(zhǔn)在各端分別編譯為不同的代碼,各端分別有一個(gè)運(yùn)行時(shí)框架或兼容組件庫(kù)保證代碼正確運(yùn)行。
web前端主流框架主要有哪些
1、Bootstrap
Twitter出品的Bootstrap在業(yè)界是非常受歡迎的,以至于有很多前端框架都在其基礎(chǔ)上開(kāi)發(fā),如我們熟悉的WeX5就是在Bootstrap源碼基礎(chǔ)上優(yōu)化而來(lái)的。我相信大多數(shù)接觸過(guò)前端開(kāi)發(fā)的同學(xué)多少都了解過(guò)這個(gè)優(yōu)秀的前端框架。Bootstrap是基于HTML、CSS和的,它簡(jiǎn)潔靈活,可以使得Web開(kāi)發(fā)更加敏捷。
它提供優(yōu)雅的HTML和CSS規(guī)范,在jQuery的基礎(chǔ)上進(jìn)行更加個(gè)性化和人性化的完善。兼容大部分jQuery插件,并包含了豐富的Web組件,如下拉菜單、按鈕式下拉菜單、導(dǎo)航條、按鈕組、分頁(yè)、縮略圖、進(jìn)度條和媒體對(duì)象等。自帶了13個(gè)jQuery插件,其中有模式對(duì)話框、標(biāo)簽頁(yè)、滾動(dòng)條和彈出框等。
2、框架
框架總體來(lái)看要比Bootstrap略顯高大上一點(diǎn),但他們倆的設(shè)計(jì)理念都是非常清楚的,Bootstrap有引導(dǎo)的意思,它嘗試處理你項(xiàng)目中的一切所需。有基礎(chǔ)、地基及支柱的意思,給你項(xiàng)目中強(qiáng)有力的創(chuàng)造與支持。相對(duì)于Bootstrap豐富的組件及插件,僅提供了有限的幾種元素,其目標(biāo)是,即使你使用預(yù)定義的UI元素,也不應(yīng)該與大家的網(wǎng)站長(zhǎng)得太像。
而B(niǎo)ootstrap則致力于提供所有定義好的元素,這樣使得看起來(lái)許多網(wǎng)站都差不多。默認(rèn)不帶圖標(biāo)集,它推薦使用開(kāi)源字體圖標(biāo)。與Bootstrap一樣,使用網(wǎng)格流式布局將網(wǎng)頁(yè)劃分為12列,針對(duì)不同的設(shè)備顯示不同的列數(shù),實(shí)現(xiàn)響應(yīng)式布局。但不支持舊版本瀏覽器。其他特性如有興趣可進(jìn)一步了解。
3、Curl
Curl 是一個(gè)命令行工具,用于通過(guò) HTTP(s)、FTP 和數(shù)十種其它協(xié)議進(jìn)行請(qǐng)求。使用Curl可以進(jìn)行文件下載、檢查響應(yīng)標(biāo)題和自由訪問(wèn)遠(yuǎn)程數(shù)據(jù)。
在 Web 開(kāi)發(fā)中,Curl 經(jīng)常和 RESTful API 一起使用,用于測(cè)試連接。
# Fetch the headers of a URL.curl -I 302 -Control: -Type: text/html; charset=UTF-8Referrer-Policy: no-: 258Date: Wed, 09 Aug 2021 11:24:01 GMT# Make a GET request to a remote API.curl is the number of days it takes Saturn to orbit the Sun.
Curl 命令可能比上述代碼更復(fù)雜。有許多選項(xiàng)用于控制 headers、Cookie、身份驗(yàn)證等。了解更多,請(qǐng)閱讀 curl。
4、Tree
Tree 是一個(gè)小型的命令行實(shí)用程序,它將目錄中的文件以可視化的方式進(jìn)行顯示。它采用遞歸運(yùn)行的方式,遍歷每個(gè)級(jí)別的嵌套并繪制所有內(nèi)容的格式樹(shù)。這樣就能快速的瀏覽并查找需要的文件。
tree.├── css│ ├── bootstrap.css│ ├── bootstrap.min.css├── fonts│ ├── -halflings-regular.eot│ ├── -halflings-regular.svg│ ├── -halflings-regular.ttf│ ├── -halflings-regular.woff│ └── -halflings-regular.woff2└── js ├── bootstrap.js └── bootstrap.min.js
還可以使用簡(jiǎn)單的 regEx 模式來(lái)過(guò)濾結(jié)果:
tree -P '*.min.*'.├── css│ ├── bootstrap.min.css├── fonts└── js └── bootstrap.min.js
5、Tmux
根據(jù)維基的解釋,Tmux 是一個(gè)終端復(fù)用器。通俗的說(shuō),它是一個(gè)能將多個(gè)終端連接到單個(gè)終端會(huì)話的工具。
Tmux允許用戶在終端中的程序之間切換,添加屏幕窗格,并將多個(gè)終端連接到同一個(gè)會(huì)話,使其保持同步。在遠(yuǎn)程服務(wù)器上工作時(shí),Tmux 特別有用,因?yàn)樗试S用戶創(chuàng)建新的選項(xiàng)卡,而無(wú)需再次登錄。
6、du
du命令用于生成關(guān)于文件和目錄的空間使用情況的報(bào)告。du很容易使用,可以遞歸地運(yùn)行,遍歷每個(gè)子目錄并返回每個(gè)文件的大小。
du 的常見(jiàn)用例是:當(dāng)某個(gè)驅(qū)動(dòng)器的空間不足,用戶不清楚每個(gè)存儲(chǔ)器的大小。使用此命令可以快速查看每個(gè)文件夾所占用的存儲(chǔ)空間,從而找到占用*空間的存儲(chǔ)器。
7、AUI
AUI是最近流行起來(lái)的,作者聲稱是專為APIClound設(shè)計(jì)的一套框架,解決了許多移動(dòng)端開(kāi)發(fā)實(shí)際中遇到的許多問(wèn)題,是一個(gè)純CSS框架。使用容器+布局+模塊的構(gòu)建方式,JS輔助,更自由更靈活更易于擴(kuò)展使用。遵循Google Material設(shè)計(jì)規(guī)范,完美適配各個(gè)機(jī)型。面向HTML5,使用CSS3實(shí)現(xiàn)動(dòng)畫交互,輕量級(jí)高性能。AUI是使用MIT License授權(quán),你可以復(fù)制、出售。目前*版本2.0。
8、Amaze UI
這是稱為妹子UI的開(kāi)源框架,據(jù)稱是**開(kāi)源HTML5跨屏前端框架。妹子UI以移動(dòng)優(yōu)先為理念,從小屏逐漸到大屏,實(shí)現(xiàn)響應(yīng)式網(wǎng)頁(yè)。Amaze UI包含20+個(gè)CSS組件、20+個(gè)JS組件,更有多個(gè)包含不同主題的Web組件。相比國(guó)外框架,妹子UI關(guān)注中文排版提供本地化支持。面向HTML5開(kāi)發(fā),使用CSS3來(lái)實(shí)現(xiàn)動(dòng)畫交互,輕量級(jí)高性能。
9、Frozen UI
Frozen UI是一款開(kāi)源,簡(jiǎn)單易用,輕量敏捷的移動(dòng)端框架?;谑諵樣式規(guī)范,目前全面應(yīng)用于企鵝手Q增值業(yè)務(wù)中。基礎(chǔ)樣式效果簡(jiǎn)單色調(diào)清爽,社區(qū)活躍,組件自然不少。包括按鈕、列表、表單、通知、提示條、彈出框、選項(xiàng)卡等等常用組件。還包括一個(gè)FrozenJs的JS組件庫(kù)??梢栽谥髁鞯腁ndroid和IOS上應(yīng)用?;緲邮绞褂秒x線包的方式減少請(qǐng)求提供快速接入方案。當(dāng)然,根據(jù)網(wǎng)友反映,也存在大大小小的bug。不過(guò)總體來(lái)說(shuō),還是值得一用的。奇怪的是,Github上顯示的*更新時(shí)間是一年前,難道已經(jīng)沒(méi)人維護(hù)了嗎?
# Running this will show the space usage of each folder in the current directory.# The -h option makes the report easier to read.# -s prevents and shows the total size of a folder.# The star wildcard (*) will run du on each file/folder in current directory.du -sh *1.2G Desktop4.0K .0K Music4.9M Public4.0K .9M Videos
還有一個(gè)相似的命令 df(Disk Free),使用df會(huì)返回有關(guān)可用磁盤空間的各種信息。
Web前端開(kāi)發(fā)必備的開(kāi)源框架有哪些
今天小編要跟大家分享的文章是關(guān)于Web前端開(kāi)發(fā)必備的開(kāi)源框架有哪些。大多數(shù)人想到Web開(kāi)發(fā)時(shí),通常會(huì)想到HTML或,往往忽略了CSS,根據(jù)Wikipedia的說(shuō)法,CSS既是網(wǎng)頁(yè)中最重要也是最常被遺忘的部分之一,盡管它是萬(wàn)維網(wǎng)的三大基礎(chǔ)技術(shù)之一。
今天就和大家分享9個(gè)流行的、強(qiáng)大的前端開(kāi)源框架,幫助你輕松構(gòu)建漂亮的網(wǎng)站前端。下面來(lái)和小編一起看一看吧!
1、Bootstrap
Bootstrap無(wú)疑是*的CSS框架,它是最早的Web前端框架,由Twitter開(kāi)發(fā)。Bootstrap還提供了許多示例來(lái)幫助你入門。
使用Bootstrap,你可以將不同的組件和布局組合在一起,從而創(chuàng)建有趣的頁(yè)面設(shè)計(jì)。它還提供了大量詳細(xì)的文檔。目前在Github上已經(jīng)有1100多個(gè)貢獻(xiàn)者,19000多個(gè)提交。(Github地址:
前端開(kāi)發(fā)是創(chuàng)建web頁(yè)面或app等前端界面呈現(xiàn)給用戶的過(guò)程。通過(guò)html、css、js以及衍生出來(lái)的各種技術(shù)、框架、解決方案來(lái)實(shí)現(xiàn)互聯(lián)網(wǎng)產(chǎn)品的用戶交互界面。
Web前端框架有:Bootstrap 框架、React 框架、Vue 框架、Angular 框架、 框架、 框架。
1、Bootstrap 框架
Bootstrap 是當(dāng)今可用的前端框架中*的,它具有直觀,時(shí)尚的界面而且功能強(qiáng)大可以更快更輕松地實(shí)現(xiàn) web 開(kāi)發(fā)而且不需要捆綁。附件就可以使用許多第三方插件,大多數(shù)瀏覽器都支持它,而且它提供了比其他前端框架更多的組合資源。
2、React 框架
React 框架引入了許多自定義的(在創(chuàng)建時(shí))前端 Web 開(kāi)發(fā)的方法。要使用 React,首先需要掌握組件的體系結(jié)構(gòu),JSX 和單向數(shù)據(jù)流等,React 框架的出現(xiàn)促使開(kāi)發(fā)了大量額外工具用來(lái)實(shí)現(xiàn)高度靈活性。雖然靈活性是其主要優(yōu)勢(shì),但 React 因其靈活性也存在一些問(wèn)題。比如在使用 React 時(shí)會(huì)面臨選擇的問(wèn)題,而且它沒(méi)有可靠的開(kāi)發(fā)工作流程。我們必須使用 React 構(gòu)建自己的工作流程。這比使用其他 JS 框架更困難,因?yàn)闃?gòu)建到框架中需要大量的開(kāi)發(fā)工具。
3、Vue 框架
Vue 是一套用于構(gòu)建用戶界面的漸進(jìn)式框架。與其它大型框架不同的是,Vue 被設(shè)計(jì)為可以自底向上逐層應(yīng)用。Vue 的核心庫(kù)只關(guān)注視圖層,不僅易于上手,還便于與第三方庫(kù)或既有項(xiàng)目整合。另一方面,當(dāng)與現(xiàn)代化的工具鏈以及各種支持類庫(kù)結(jié)合使用時(shí),Vue 也完全能夠?yàn)閺?fù)雜的單頁(yè)應(yīng)用提供驅(qū)動(dòng)。
4、Angular 框架
Angular.js 通常被稱為 MVW(模型 – 視圖 – 隨意)框架,其中包括:快速代碼生成,輕松測(cè)試任何應(yīng)用程序部分和雙向數(shù)據(jù)綁定(后端的更改會(huì)立即反映在 UI 上)。自發(fā)布以來(lái),它成為開(kāi)發(fā)的最常用的 JS 框架。對(duì)于基于企業(yè)的應(yīng)用程序或具有高標(biāo)準(zhǔn)代碼可讀性的嚴(yán)格編程環(huán)境,Angular-s 都是更好的選擇。
5、 框架
是由網(wǎng)頁(yè)設(shè)計(jì)公司 Zurb 創(chuàng)建的,是一個(gè)非常先進(jìn)的企業(yè)級(jí)前端框架,非常適合開(kāi)發(fā)靈活,響應(yīng)迅速的網(wǎng)站。但是使用它也相當(dāng)復(fù)雜,所以不適合剛?cè)腴T的學(xué)習(xí)者,這個(gè)功能豐富的框架支持 GPU 加速,可實(shí)現(xiàn)流暢,閃電般快速的動(dòng)畫,F(xiàn)astclick.js 可在移動(dòng)設(shè)備上快速渲染。它在 Sass 預(yù)處理器上運(yùn)行,并包含 開(kāi)發(fā)的數(shù)據(jù)交換屬性,該屬性允許您為移動(dòng)設(shè)備加載輕量級(jí) HTML 部分,為較大屏幕加載“較重”HTML 部分。
6、 框架
是由微軟開(kāi)發(fā)的自由和開(kāi)源的編程語(yǔ)言, 類型的超集,它可以編譯成純 。 可以在任何瀏覽器、任何計(jì)算機(jī)和任何操作系統(tǒng)上運(yùn)行,并且是開(kāi)源的。
2021年的前端框架選擇 Angular vs React vs Vue
每個(gè)前端開(kāi)發(fā)人員都聽(tīng)說(shuō)過(guò)三個(gè)用于構(gòu)建 Web 應(yīng)用程序的框架:React、Vue.js和Angular。
React 是一個(gè) UI 庫(kù),Angular 是一個(gè)成熟的前端框架,而 Vue.js 是一個(gè)漸進(jìn)式框架。
它們幾乎可以互換使用來(lái)構(gòu)建前端應(yīng)用程序,但它們并非 * 相同,因此比較它們并了解它們的差異是有意義的。
每個(gè)框架都是基于組件的,并允許快速創(chuàng)建 UI 功能。
然而,它們都有不同的結(jié)構(gòu)和架構(gòu)——所以首先,我們將研究它們的架構(gòu)差異以了解它們背 后的哲學(xué)。
React 不強(qiáng)制執(zhí)行特定的項(xiàng)目結(jié)構(gòu),正如您從下面的官方“Hello World”示例中看到的那樣,您只需幾行代碼即可開(kāi)始使用 React。
React 可以用作 UI 庫(kù)來(lái)渲染元素,而無(wú)需強(qiáng)制執(zhí)行特定的項(xiàng)目結(jié)構(gòu),這就是它不是嚴(yán)格意義上的框架的原因。
React Elements是 React 應(yīng)用程序的最小構(gòu)建塊。它們比 DOM 元素更強(qiáng)大,因?yàn)?React DOM 確保在發(fā)生變化時(shí)有效地更新它們。
組件是更大的構(gòu)建塊,定義了在整個(gè)應(yīng)用程序中使用的獨(dú)立且可重用的部分。它們接受稱為 props 的輸入并生成元素,然后顯示給用戶。
React 基于 ,但它主要與JSX ( XML)結(jié)合,這是一種語(yǔ)法擴(kuò)展,允許您創(chuàng)建同時(shí)包含 HTML 和 的元素。
您使用 JSX 創(chuàng)建的任何內(nèi)容也可以使用 React API 創(chuàng)建,但大多數(shù)開(kāi)發(fā)人員更喜歡 JSX,因?yàn)樗庇^。
Vue.js 核心庫(kù)只關(guān)注視圖層。之所以稱為漸進(jìn)式框架,是因?yàn)槟梢允褂霉俜胶偷谌桨ɡ鏥ue Router或Vuex )擴(kuò)展其功能,將其轉(zhuǎn)變?yōu)閷?shí)際框架。
雖然 Vue 與 MVVM(Model-View-ViewModel)模式?jīng)]有嚴(yán)格關(guān)聯(lián),但它的設(shè)計(jì)部分受到了它的啟發(fā)。使用 Vue,您將主要在 ViewModel 層上工作,以確保以允許框架呈現(xiàn)*視圖的方式處理應(yīng)用程序數(shù)據(jù)。
Vue 的模板語(yǔ)法讓您可以創(chuàng)建 View 組件,并將熟悉的 HTML 與特殊指令和功能相結(jié)合。這種模板語(yǔ)法是*,即使原始 和 JSX 也受支持。
Vue 中的組件很小,是自包含的,并且可以在整個(gè)應(yīng)用程序中重復(fù)使用。帶有擴(kuò)展名的單文件組件(SFC).vue包含 HTML、CSS 和 ,因此所有相關(guān)代碼都位于一個(gè)文件中。
SFC 是在 Vue.js 項(xiàng)目中組織代碼的推薦方式,尤其是大型項(xiàng)目。需要使用 Webpack 或 等工具將 SFC 轉(zhuǎn)換為可用的 代碼。
在本文中,我討論的是 Angular 2,而不是現(xiàn)在稱為 AngularJS 的框架的*個(gè)版本。
AngularJS,原始框架,是一個(gè)MVC(模型-視圖-控制器)框架。但是在Angular 2 中,與 MV*-patterns 沒(méi)有嚴(yán)格的關(guān)聯(lián),因?yàn)樗彩腔诮M件的。
Angular 中的項(xiàng)目被組織成模塊、組件和服務(wù)。每個(gè) Angular 應(yīng)用程序至少有一個(gè)根組件和一個(gè)根模塊。
Angular 中的每個(gè)組件都包含一個(gè)模板、一個(gè)定義應(yīng)用程序邏輯的類和元數(shù)據(jù)(裝飾器)。組件的元數(shù)據(jù)告訴 Angular 在哪里可以找到創(chuàng)建和呈現(xiàn)其視圖所需的構(gòu)建塊。
Angular 模板是用 HTML 編寫的,但也可以包含帶有特殊指令的Angular 模板語(yǔ)法,以輸出反應(yīng)性數(shù)據(jù)和呈現(xiàn)多個(gè)元素等。
組件使用 Angular 中的服務(wù)來(lái)委托業(yè)務(wù)邏輯任務(wù),例如獲取數(shù)據(jù)或驗(yàn)證輸入。它們是 Angular 應(yīng)用程序的獨(dú)特部分。雖然 Angular 不強(qiáng)制使用它們,但強(qiáng)烈建議將應(yīng)用程序構(gòu)建為一組可以重用的不同服務(wù)。
Angular 內(nèi)置于 中,因此建議使用它以獲得最無(wú)縫的體驗(yàn),但也支持純 。
React 是*的 項(xiàng)目之一,在 GitHub 上擁有 16 萬(wàn)顆星。它由 Facebook 開(kāi)發(fā)和維護(hù),并在他們的許多項(xiàng)目?jī)?nèi)部使用。此外,根據(jù)BuiltWith的使用統(tǒng)計(jì)數(shù)據(jù),它為超過(guò) 200 萬(wàn)個(gè)網(wǎng)站提供支持。
在三個(gè)框架中,Vue在 GitHub上的 star 數(shù)最多,有 176k。該項(xiàng)目由前 Google 員工 Evan You 開(kāi)發(fā)和領(lǐng)導(dǎo)。據(jù)BuiltWith 稱,這是開(kāi)源社區(qū)中一個(gè)非常強(qiáng)大的獨(dú)立項(xiàng)目,被超過(guò) 100 萬(wàn)個(gè)網(wǎng)站使用。
Angular 是由 Google 開(kāi)發(fā)的,但令人驚訝的是它并沒(méi)有用于他們的一些旗艦產(chǎn)品,例如搜索或 Youtube。它經(jīng)常用于企業(yè)項(xiàng)目,并基于BuiltWith的數(shù)據(jù)為超過(guò) 97,000 個(gè)網(wǎng)站提供支持。
它是三個(gè)框架中星數(shù)最少的,在 GitHub 上有 68k 星。然而,當(dāng)從 Angular 1 切換到 Angular 2 時(shí),他們創(chuàng)建了一個(gè)全新的代碼庫(kù),而不是繼續(xù)AngularJS項(xiàng)目,該項(xiàng)目也有 59k 星。
在開(kāi)發(fā)應(yīng)用程序時(shí),開(kāi)源包可以為您節(jié)省寶貴的時(shí)間。不僅如此,它們通常比定制組件和封裝更好,因?yàn)樗鼈兘?jīng)過(guò)了實(shí)戰(zhàn)測(cè)試。
查看可幫助您更輕松地創(chuàng)建新功能的現(xiàn)成組件、主題和其他工具的可用性非常重要。
許多前端應(yīng)用程序依賴全局狀態(tài)管理來(lái)存儲(chǔ)信息,例如誰(shuí)登錄和其他用戶設(shè)置。
*的 狀態(tài)管理項(xiàng)目是Redux。大多數(shù)開(kāi)發(fā)人員使用Redux的官方 React 綁定,這些綁定由 Redux 團(tuán)隊(duì)維護(hù)。
由于 React 的流行,查找輸入組件和現(xiàn)成的元素非常容易。它們都只是在 Google 或 GitHub 上搜索即可。
React 生態(tài)系統(tǒng)還包括React Native,它允許您從用 React 編寫的單個(gè)代碼庫(kù)構(gòu)建原生 iOS 和 Android 應(yīng)用程序。因此,React 也可以成為使用 Web 技術(shù)構(gòu)建移動(dòng)應(yīng)用程序的絕佳選擇。
React 是 MERN 堆棧的一部分,其中包含 MongoDB、ExpressJS、React 和 NodeJS。這種組合的偉大之處在于,單一語(yǔ)言————為整個(gè)應(yīng)用程序提供動(dòng)力。
盡管 Redux 可以在 Vue 中使用,但沒(méi)有官方綁定。但這不應(yīng)該讓您擔(dān)心,因?yàn)閂uex是專門為 Vue 應(yīng)用程序制作的官方狀態(tài)管理庫(kù)。除了與 Vue 很好地集成之外,使用 Vue 的開(kāi)發(fā)人員工具進(jìn)行調(diào)試也很容易。
在 Vue 的早期,很難找到現(xiàn)成的組件。隨著社區(qū)的發(fā)展,您可以使用各種輸入組件和高級(jí)元素來(lái)加快開(kāi)發(fā)速度。
對(duì)于移動(dòng)應(yīng)用程序開(kāi)發(fā),有一個(gè)名為Weex 的新興項(xiàng)目。Weex 由阿里巴巴開(kāi)發(fā)和使用,但不如 React Native 成熟和強(qiáng)大。更重要的是,由于該項(xiàng)目在*開(kāi)發(fā)和使用較多,因此很難找到英文文檔和解決問(wèn)題的方法。
Vue 與 Laravel 集成得很好,這就是為什么它們經(jīng)常一起使用。Laravel 提供完整的 和 CSS 腳手架,以支持在新項(xiàng)目中使用 Vue。
對(duì)于 Angular 中的狀態(tài)管理,您可以使用NgRx項(xiàng)目。它的靈感來(lái)自 Redux,但它是專門為 Angular 創(chuàng)建的。
與 Vue 和 React 的情況一樣,您可以將許多現(xiàn)成的組件導(dǎo)入到您的項(xiàng)目中。與 Angular 略有不同的是,Angular Material項(xiàng)目中有許多官方組件。這是 Google 的一個(gè)官方項(xiàng)目,為 Angular 應(yīng)用程序提供 Material Design 組件。
您可以使用在 Angular 中構(gòu)建跨平臺(tái)移動(dòng)應(yīng)用程序。它也支持 Vue,但 Angular 支持更成熟。
Angular 是著名的 MEAN 堆棧的一部分,它將 Angular 與 MongoDB、ExpressJS 和 NodeJS 相結(jié)合。與 MERN 堆棧類似,它的前端和后端都完全依賴 。
Angular、React 和 Vue 都可用于開(kāi)發(fā)漸進(jìn)式 Web 應(yīng)用程序,也稱為 PWA。
PWA 不是移動(dòng)應(yīng)用程序,而是 Web 應(yīng)用程序,智能手機(jī)用戶可以將其添加為主屏幕的快捷方式,并提供類似于原生移動(dòng)應(yīng)用程序的外觀和感覺(jué)。
您還可以為每個(gè)框架找到高級(jí)模板和預(yù)制應(yīng)用程序,但 Angular 和 React 比 Vue 提供更多高級(jí)選項(xiàng)。
在選擇框架或庫(kù)時(shí),您還需要考慮性能。
在許多情況下,您不必?fù)?dān)心性能,尤其是在構(gòu)建小型項(xiàng)目時(shí)。然而,項(xiàng)目的范圍和復(fù)雜性越大,性能就會(huì)(并且將會(huì))成為一個(gè)問(wèn)題。
重要的是要注意,在 Web 性能方面,開(kāi)發(fā)質(zhì)量和遵循*實(shí)踐比框架的選擇更重要。
但由于存在一些性能指標(biāo)和差異,我將研究它們并解釋每個(gè)指標(biāo)如何影響您的開(kāi)發(fā)工作。
JS 框架基準(zhǔn)測(cè)試的結(jié)果表明,它們?cè)诖蠖鄶?shù)基準(zhǔn)測(cè)試中都表現(xiàn)得相當(dāng)好,例如在表中創(chuàng)建或附加行。
正如你在上面看到的,Vue 在選擇行時(shí)比 Angular 和 React 慢得多。另一方面,Angular 和 React 在交換行方面效率不高。
這些是渲染基準(zhǔn)中*的實(shí)質(zhì)性差異 - 在大多數(shù)情況下,不會(huì)產(chǎn)生明顯的結(jié)果。由于選擇行是比交換行更常見(jiàn)的功能,我想說(shuō)這個(gè)基準(zhǔn)測(cè)試將 Vue 排在第三位,僅次于 Angular 和 React 并列*。
在內(nèi)存和啟動(dòng)時(shí)間方面,React 和 Vue 得分很好,但 Angular 稍慢。Angular 啟動(dòng)一個(gè)基本腳本可能需要 150 毫秒,并且需要更多內(nèi)存才能運(yùn)行。
谷歌 Chrome 實(shí)驗(yàn)室的Perf Track顯示了來(lái)自數(shù)千個(gè)網(wǎng)站的生產(chǎn)數(shù)據(jù)。這些統(tǒng)計(jì)數(shù)據(jù)受許多其他因素的影響,而不僅僅是選擇的框架,讓我們看看數(shù)字。
與 Angular 相比,Vue 和 React 網(wǎng)站在這個(gè)指標(biāo)上的排名更高,Angular 需要更多時(shí)間來(lái)啟動(dòng)并向用戶呈現(xiàn)內(nèi)容。
在渲染完整頁(yè)面的三個(gè)框架中,Angular 也是最慢的,只有 27% 的 Angular 網(wǎng)站得分在可接受的范圍內(nèi)。
對(duì)于所有三個(gè)框架,超過(guò) 80% 的網(wǎng)站都在*次輸入延遲的可接受范圍內(nèi),這顯示了用戶可以與頁(yè)面交互所需的時(shí)間。
迄今為止,最輕量級(jí)的應(yīng)用程序是使用 Vue 開(kāi)發(fā)的應(yīng)用程序,68% 的 Vue 應(yīng)用程序加載的 不到 1MB。另一方面,Angular 和 React 應(yīng)用程序往往具有更大的代碼大小。
您可以從這些數(shù)字中看到趨勢(shì),但您不應(yīng)該太快得出結(jié)論。例如,對(duì)于*一張圖,可以解釋為 Vue 用于開(kāi)發(fā)更輕量級(jí)的應(yīng)用程序,而 Angular 用于更大的項(xiàng)目。
統(tǒng)計(jì)數(shù)據(jù)可以幫助指導(dǎo)您做出正確的決定,但您不能使用它們來(lái)證明一個(gè)框架比另一個(gè)更快或更好。
對(duì)于更高級(jí)的應(yīng)用程序,使用的前端框架應(yīng)該能夠執(zhí)行一些提高性能并且可以更好地?cái)U(kuò)展的任務(wù)。
兩項(xiàng)關(guān)鍵技術(shù)是服務(wù)器端渲染 (SSR) 和虛擬化。
React 支持使用官方包進(jìn)行服務(wù)器端渲染。對(duì)于虛擬化,您可以使用名為React 的流行第三方工具。
Vue 中也支持服務(wù)器端渲染以及官方的SSR 包。此外,您還可以使用基于 Vue 構(gòu)建并支持 SSR的Nuxt.js框架。
不幸的是,Vue 中的虛擬化選項(xiàng)并不是那么強(qiáng)大。在我看來(lái),Vue Virtual Scroll List是虛擬滾動(dòng)的*解決方案,但它有點(diǎn)問(wèn)題,不如 React 和 Angular 的選項(xiàng)穩(wěn)定。
Angular 擁有SSR的官方Angular Universal包,以及用于虛擬滾動(dòng)和高效渲染大型列表的官方組件。
學(xué)習(xí)這些框架有多容易?
要回答這個(gè)問(wèn)題,我們需要查看每個(gè)框架的復(fù)雜性及其引入的概念。
在最基本的用例中,React 是三個(gè)框架中最不復(fù)雜的。那是因?yàn)槟阒恍枰獙?dǎo)入庫(kù),然后你就可以用幾行代碼開(kāi)始編寫你的 React 應(yīng)用程序。
但是除了 Hello World 示例之外,大多數(shù) React 應(yīng)用程序都是基于組件的,而不僅僅是在頁(yè)面上呈現(xiàn)一些元素。
一些開(kāi)發(fā)人員對(duì) React 感到奇怪或困難的一件事是,學(xué)習(xí) JSX 是一條單行道。您也可以使用原始 ,但由于大多數(shù) React 開(kāi)發(fā)人員使用 JSX,學(xué)習(xí)它幾乎是不可避免的。
這是使 React 的學(xué)習(xí)曲線變得更陡峭的主要因素,但除此之外,對(duì)于了解 并理解 Web 開(kāi)發(fā)概念的開(kāi)發(fā)人員來(lái)說(shuō),它是一個(gè)易于學(xué)習(xí)的庫(kù)。
Vue 的設(shè)置比 React 稍微復(fù)雜一些。你可以將它用作一個(gè)庫(kù)來(lái)定義你可以在整個(gè) HTML 中使用的組件——但與 React 類似,這不是大多數(shù)項(xiàng)目的構(gòu)建方式。
大多數(shù) Vue 項(xiàng)目都有一個(gè)命名的根組件App.vue和一些用于顯示各種內(nèi)容的子組件。
說(shuō)到語(yǔ)法,你*需要學(xué)習(xí)的新東西就是 Vue 的模板語(yǔ)法,如果你了解 HTML,這很容易掌握?;镜闹噶?,如v-if和v-for有條件的渲染和列表的渲染,很容易理解即使是初學(xué)者。
此外,Vue 的單文件組件將所有前端代碼保存在一個(gè)地方,便于組織新項(xiàng)目。
在我看來(lái),Vue 是最容易學(xué)習(xí)的,因?yàn)樗暮?jiǎn)單和直觀的語(yǔ)法。
Angular 擁有三者中最復(fù)雜的項(xiàng)目結(jié)構(gòu),而且由于它是一個(gè)成熟的前端框架,因此它依賴的概念更多。
除了組件,Angular 還支持模塊和服務(wù)。它希望您以特定的方式編寫和設(shè)計(jì)代碼庫(kù),從而使您的項(xiàng)目在擴(kuò)展時(shí)更易于維護(hù)。
至于語(yǔ)法,由于 Angular 最適合與 配合使用,因此在構(gòu)建 Angular 項(xiàng)目時(shí)了解 非常重要。
與 Vue 一樣,您還必須熟悉類似 HTML 的語(yǔ)法,以便您可以開(kāi)始使用 Angular 編寫新的 UI 功能。
在我看來(lái),Angular 對(duì)于普通開(kāi)發(fā)者來(lái)說(shuō)是最難學(xué)的,因?yàn)樗鼜?fù)雜并且依賴于 。
許多開(kāi)源項(xiàng)目和框架逐漸被遺忘并無(wú)人維護(hù)。您是否應(yīng)該擔(dān)心我們?cè)谶@里討論的任何框架?
盡管我們無(wú)法完全預(yù)測(cè)會(huì)發(fā)生什么,但正在進(jìn)行的開(kāi)發(fā)工作是這些項(xiàng)目 健康 狀況的良好指標(biāo)。人氣和增長(zhǎng)也是預(yù)測(cè)項(xiàng)目壽命的重要指標(biāo),所以讓我們來(lái)看看每個(gè)框架。
React v17.0已經(jīng)發(fā)布,但令人驚訝的是,它沒(méi)有為開(kāi)發(fā)人員提供任何新功能。
主要的變化是這個(gè)新版本可以更容易地升級(jí) React 本身。您可以將 React 的某些部分從舊版本升級(jí)到新版本,而無(wú)需升級(jí)整個(gè)項(xiàng)目。
如果您的應(yīng)用程序依賴于隨新版本更改或棄用的功能,您可以保留舊版本以保持此功能有效。此更新使 React 成為一個(gè)很好的長(zhǎng)期選擇,因?yàn)樗梢愿p松地與新版本保持同步。
React 的每周 npm 下載量自去年以來(lái)增長(zhǎng)了 44% 。從絕對(duì)數(shù)量來(lái)看,它仍然是三個(gè)項(xiàng)目中下載量*的。
Vue 3 已于2021 年 9 月發(fā)布,它解決了 Vue 2 在大型項(xiàng)目中存在的許多嚴(yán)重問(wèn)題。它引入了受React Hooks啟發(fā)的 API,可以更輕松地跨組件重用邏輯。
整個(gè)項(xiàng)目用 重寫,提高了新 Vue 項(xiàng)目對(duì) 的支持,同時(shí)也使項(xiàng)目更易于維護(hù)。
Vue 3 是一個(gè)急需的升級(jí),使 Vue 更適合大型項(xiàng)目。
Vue 的每周下載量自去年以來(lái)增長(zhǎng)了 87%,使 Vue 成為相對(duì)而言增長(zhǎng)最快的框架。如果 Vue 能夠保持這種增長(zhǎng)速度,那么它肯定會(huì)很快超過(guò) Angular。
Angular 最近推出了Ivy 編譯器。它減少了構(gòu)建時(shí)間,優(yōu)化了資產(chǎn),允許更快的測(cè)試,并總體上改善了開(kāi)發(fā)人員的體驗(yàn)。
Angular 團(tuán)隊(duì)每年發(fā)布兩次重大更新,其中可能包含新功能,或者只是讓框架跟上新瀏覽器版本的速度。
自去年以來(lái),Angular 的每周下載量增長(zhǎng)了約 50% ,因此它仍然是一個(gè)受歡迎的項(xiàng)目。
Angular、React 和 Vue 都處于非常活躍的開(kāi)發(fā)階段。他們定期發(fā)布新版本并維護(hù)現(xiàn)有版本。由于在每種情況下當(dāng)前的支持水平都很高,因此您可以安全地使用這些框架中的任何一個(gè)。
需要注意的是,Angular 的增長(zhǎng)沒(méi)有以前那么快,而 Vue—— 盡管它是最近開(kāi)始的——似乎增長(zhǎng)了很多。
如前所述,我們無(wú)法預(yù)測(cè)哪些框架會(huì)長(zhǎng)期保持相關(guān)性,但每個(gè)項(xiàng)目背后都有一個(gè)偉大的社區(qū),并且在不斷發(fā)展。
我這篇文章的目標(biāo)是解釋架構(gòu)差異,分解每個(gè)框架的優(yōu)點(diǎn)和缺點(diǎn),并在適用的地方進(jìn)行比較。
在進(jìn)入一個(gè)新框架之前,有幾件事情需要考慮。
首先,在選擇新技術(shù)時(shí),您團(tuán)隊(duì)的經(jīng)驗(yàn)可能是一個(gè)決定性因素。
同樣,您必須考慮您所在地區(qū)可用的人才,以便您可以為您的項(xiàng)目聘請(qǐng)開(kāi)發(fā)人員。
*,當(dāng)涉及到項(xiàng)目本身時(shí),復(fù)雜性和范圍也會(huì)影響您對(duì)框架的選擇。
通過(guò)考慮所有關(guān)鍵差異,我希望您可以決定哪個(gè)是最適合您的目標(biāo)和需求的前端框架。
(本文由聞數(shù)起舞翻譯自Aris Pattakos的文章《Angular vs React vs Vue 2021》,轉(zhuǎn)載請(qǐng)注明出處,原文鏈接: 特點(diǎn)很多,、JSX、Diff算法等,支持ES6語(yǔ)法,采用函數(shù)式編程,門檻稍高,但也更靈活,能讓開(kāi)發(fā)具有更多可能性。
Vue
Vue作為*推出的框架(2014年),借鑒了前輩angular和react的特點(diǎn)(如、雙向數(shù)據(jù)綁定、diff算法、響應(yīng)式屬性、組件化開(kāi)發(fā)等)并做了相關(guān)優(yōu)化,使其使用起來(lái)更加方便,更容易上手,比較少適合初學(xué)者。網(wǎng)上有很多人說(shuō)Vue不適合做大型項(xiàng)目,純屬扯淡,Vue在這方面已經(jīng)優(yōu)化得很好,當(dāng)然,大量的響應(yīng)式屬性(監(jiān)聽(tīng)屬性)也許會(huì)用一定的性能損耗,但在硬件、網(wǎng)絡(luò)大力發(fā)展的今天,這些細(xì)微的性能差異幾乎感覺(jué)不到。