新聞中心
北大青鳥java培訓:web前端多端編程開發(fā)框架結構?
隨著我們對web前端編程開發(fā)技術的掌握,越來越多的框架語言和架構方式被我們所熟知。

成都網站設計、成都做網站的開發(fā),更需要了解用戶,從用戶角度來建設網站,獲得較好的用戶體驗。創(chuàng)新互聯(lián)建站多年互聯(lián)網經驗,見的多,溝通容易、能幫助客戶提出的運營建議。作為成都一家網絡公司,打造的就是網站建設產品直銷的概念。選擇創(chuàng)新互聯(lián)建站,不只是建站,我們把建站作為產品,不斷的更新、完善,讓每位來訪用戶感受到浩方產品的價值服務。
下面貴陽北大青鳥就一起來了解一下,web前端開發(fā)的一些常見框架結構。
1.全包型這類框架大的特點就是從底層的渲染引擎、布局引擎,到中層的DSL,再到上層的框架全部由自己開發(fā),代表框架是Qt和Flutter。
這類框架優(yōu)點非常明顯:性能(的上限)高;各平臺渲染結果一致。
缺點也非常明顯:需要完全重新學習DSL(QML/Dart),以及難以適配中國特色的端:小程序。
這類框架是原始也是純正的的多端開發(fā)框架,由于底層到上層每個環(huán)節(jié)都掌握在自己手里,也能大可能地去保證開發(fā)和跨端體驗一致。
但它們的框架研發(fā)成本巨大,渲染引擎、布局引擎、DSL、上層框架每個部分都需要大量人力開發(fā)維護。
2.Web技術型這類框架把Web技術(JavaScript,CSS)帶到移動開發(fā)中,自研布局引擎處理CSS,使用JavaScript寫業(yè)務邏輯,使用流行的前端框架作為DSL,各端分別使用各自的原生組件渲染。
代表框架是ReactNative和Weex,這樣做的優(yōu)點有:開發(fā)迅速;復用前端生態(tài);易于學習上手,不管前端后端移動端,多多少少都會一點JS、CSS。
缺點有:1.交互復雜時難以寫出高性能的代碼,這類框架的設計就必然導致JS和Native之間需要通信,類似于手勢操作這樣頻繁地觸發(fā)通信就很可能使得UI無法在16ms內及時繪制。
ReactNative有一些聲明式的組件可以避免這個問題,但聲明式的寫法很難滿足復雜交互的需求。
2.由于沒有渲染引擎,使用各端的原生組件渲染,相同代碼渲染的一致性沒有一種高。
3.JavaScript編譯型這類框架就是我們這篇文章的主角們:Taro、WePY、uni-app、mpvue、chameleon,它們的原理也都大同小異:先以JavaScript作為基礎選定一個DSL框架,以這個DSL框架為標準在各端分別編譯為不同的代碼,各端分別有一個運行時框架或兼容組件庫保證代碼正確運行。
跨平臺桌面開發(fā),Electron還是WebView2 (中篇)
這一周繼續(xù)聊跨平臺桌面開發(fā)這個事情。
在這篇文章中,我暫時會放下Electron與WebView2的一個對比,而聊一聊跨平臺這個對于程序員群體來說不陌生的詞。
一個趨勢是:跨平臺開發(fā)幾乎是在各個技術方向都會持續(xù)發(fā)展的
跨平臺這個詞,對于程序員來說,應該是不陌生的。因為這個概念不只在某一端存在,后端,前端,移動端,桌面端幾乎所有方向都對跨平臺有需求。
在后端,Java是跨平臺的,當你用Java來編寫后端服務時,并不需要考慮操作系統(tǒng),因為它幾乎支持主流的操作系統(tǒng)。現(xiàn)在,編寫一個后端服務,選用Java仍是主流。雖然可能它的跨平臺特性已經不是程序員最在意的點了。
而在移動端,類似React Native,F(xiàn)lutter也是非常有名的跨平臺移動開發(fā),它們與移動原生開發(fā)方式之間一直是競爭與共存。
而前端因為依托于瀏覽器,天然就是跨平臺的。事實上,很多應用或服務早期紛紛選擇從原生應用遷移至前端WEB方式的一個非常重要的原因就在于它是跨平臺的。
桌面操作系統(tǒng)很長一段時間一直是Windows一家獨大,所以桌面開發(fā)一直是Windows獨占,直至現(xiàn)在為止,很多專業(yè)級的軟件仍然是Windows獨占的。
而Linux桌面操作系統(tǒng)與MacOS桌面操作系統(tǒng),早些年幾乎可以忽略不計,壓根不需要考慮這兩種系統(tǒng)。但隨著近些年它們的慢慢流行,特別是蘋果的MacOS的以其杰出的工藝,流暢的體驗,疊加蘋果手機的流行,其市場份額增長非常之快,在特定的諸如編程,設計等行業(yè)人群中使用范圍較廣,這使得開發(fā)支持MacOS系統(tǒng)這個點變得越來越重要。
所以,在桌面開發(fā)領域,跨平臺的需求也越來越高。
這也是Electron及早期的NW.js能迅速發(fā)展起來并得到非常廣應用的原因所在。
無論是哪一端,跨平臺技術之所以頻繁出現(xiàn)與不斷發(fā)展,其根本原因就在于編程的一個重要痛點在于:
為了讓同一個服務能在所有設備上運行,程序員不得不編寫與維護非常多不同版本的程序
每一個程序或軟件后面的服務,都有一個非常迫切的需求,就是期望它的用戶無論何時,無論何地,無論使用任何設備,都能方便友好的使用這個服務。
也是因為這個原因,Web發(fā)展起來了,因為Web的優(yōu)勢就在這,只要你的設備上有瀏覽器,就能訪問。
但Web畢竟性能有限,且瀏覽器這種形式并不利于用戶忠誠度的培養(yǎng),它存在天然的弱點。一些簡單的操作服務使用Web并無問題,但稍微有點要求的,Web可能就并不是非常適合。
所以,一種趨勢不可避免地流行起來:
對不同設備或系統(tǒng)進行抽象,基于某一種特定的編程語言,編寫出能與原生程序相媲美的,又能跨平臺的技術便層出不窮了
對吧,Java是使用JVM來抽象不同的操作系統(tǒng),React Native則是使用虛擬DOM以及轉換成原生控件的方式來實現(xiàn)跨平臺,而Electron則是通過性能較好的Chrome內核+NodeJS原生調用能力的搭配來實現(xiàn)跨平臺桌面開發(fā)。
總而言之,這種跨平臺的技術不會消亡,只會有新的技術層出不窮,而它們與原生開發(fā)一定是相互競爭,配合與共存的。相互之間無法取代。
那再回到跨平臺技術上來說,一個良好的跨平臺開發(fā)的技術或框架,重點是什么。
或者換種方式說,哪些特性使得它更易于流行起來?
我個人認為有以下的幾個點:
跨平臺開發(fā)技術能不能流行起來的一個非常重要的點就在于,使用了什么樣的編程語言。
以移動端跨平臺開發(fā)技術來說明,一個React Native,一個Flutter,這兩個是比較知名主流的跨平臺移動開發(fā)技術。React Native使用的是前端React技術,而Flutter則是Google的D語言。
顯而易見的是,雖然Flutter是使用skia引擎在底層重繪一套UI,其性能相比React Native這種模式更佳,但React Native更易于被接受。
在流行度上,React Native始終比Flutter更流行,一個最重要的原因也在于:
使用已熟知的前端編程語言,比起重新學習一個D語言更易于被接受,維護成本更可控。
這個問題在跨平臺桌面開發(fā)中也是類似,跨平臺桌面開發(fā)技術也不是Electron最開始出現(xiàn),比如著名的QT很早就有了,但比起Electron這種使用前端編程技術來說,顯然在編程語言的門檻上和程序員群體上都存在困難,這也是Electron能后來居上的原因所在。
因為,大多數(shù)程序員群體,相比較另外學習一門什么語言去做什么,使用自己熟悉的語言來做什么是更容易,意愿也更高。
而從公司或團隊的考量上看,選擇偏門的小眾語言存在成本上的顧慮,比如人員招聘是否容易?
跨平臺技術在嘗試解決不同平臺不一致,它或多或少會損耗性能。這也決定了幾乎沒有任何一個跨平臺技術能取代原生開發(fā)。
這是一個取舍的問題,對于一個程序來說,究竟性能有多重要。對于比較看重性能的程序來說,原生開發(fā)可能是最優(yōu)選擇。
但跨平臺的性能損耗也有高低之分,并不在同一水平線上。
其實,無論是Electron,或是WebView2,都是基于瀏覽器內核+前端技術的跨平臺桌面解決方案,這也是為什么要把它們放在一起聊的原因。
Electron是先行者(當然,嚴格說來,NW.js出現(xiàn)的更早,但今天它的流行度已遠遠落后于Electron了),而WebView2則是后來者。
那做為后來者的WebView2究竟做了哪些改進?它又有多大的能力來挑戰(zhàn)Electron呢?
下一篇,繼續(xù)聊。
flutter和vuejs那個容易學
flutter更容易學,
Flutter 是 Google 開源的 UI 工具包,幫助開發(fā)者通過一套代碼庫高效構建多平臺精美應用,支持移動、Web、桌面和嵌入式平臺。Flutter 開源、免費,擁有寬松的開源協(xié)議,適合商業(yè)項目。
[img]本文名稱:flutter和qt對比,Flutter缺點
分享鏈接:http://www.dlmjj.cn/article/dsopscc.html


咨詢
建站咨詢
