欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

包含flutter優(yōu)勢(shì)的詞條

Flutter開發(fā)App和原生iOS開發(fā)App各有什么優(yōu)缺點(diǎn)?

自己寫flutter也有段時(shí)間了,這次來聊聊flutter開發(fā)App和原生iOS開發(fā)App各有什么優(yōu)缺點(diǎn).

10多年的偏關(guān)網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整偏關(guān)建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“偏關(guān)網(wǎng)站設(shè)計(jì)”,“偏關(guān)網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

不廢話,直奔主題????

Flutter動(dòng)態(tài)化方案調(diào)研

騰訊課堂14M

今日頭條3M

閑魚22M

百度貼吧13M

螞蟻財(cái)富56.8M

百度網(wǎng)盤14M

手機(jī)淘寶15M

貝殼找房8M

由粗粒度小組件動(dòng)態(tài)拼裝出頁面,Native端已經(jīng)有很多成熟的框架,如天貓的Tangram。

開發(fā)語言:iOS、Android

適用場(chǎng)景:快速迭代的活動(dòng)營(yíng)銷頁面

優(yōu)點(diǎn):無侵入,更新簡(jiǎn)單

缺點(diǎn):提前預(yù)埋,擴(kuò)展性差,靈活性差

以webview作為容器的app,歷史悠久,最早到2011年。

開發(fā)語言:HTML

適用場(chǎng)景:雙端嚴(yán)格一致的銀行類app,容器類的支付寶小程序等

優(yōu)點(diǎn):動(dòng)態(tài)更新,跨平臺(tái)

缺點(diǎn):性能,加載速度

UI用Xml+JS表達(dá),用Native View渲染。

開發(fā)語言:Xml+JS

適用場(chǎng)景:雙端嚴(yán)格一致的銀行類app,容器類的支付寶小程序等

優(yōu)點(diǎn):native組件,生態(tài)成熟

缺點(diǎn):三方庫crash,性能缺陷

UI用Dart表達(dá),用Dart engine渲染。

Flutter官方不支持動(dòng)態(tài)化。原因是Flutter在 Release 模式下構(gòu)建的是 AOT 編譯產(chǎn)物,在 Debug 模式下構(gòu)建的是 JIT ,AOT 依賴的 Dart VM 和 JIT 并不一樣, JIT Release 并不支持 iOS 設(shè)備。可行的方案是:AOT 需要一個(gè)編譯后的 “Dart VM”。抽離一份 DartVM 獨(dú)立編譯,再以動(dòng)態(tài)庫的形式引入項(xiàng)目。

開發(fā)語言:Dart

適用場(chǎng)景:iOS、Android、Web、Desktop、Embed

優(yōu)點(diǎn):性能最佳

缺點(diǎn):增大包體積 20MB+

大廠的主流方案。UI用JS表達(dá),用Dart engine渲染。

開發(fā)語言:JS、類JS

適用場(chǎng)景:iOS、Android

優(yōu)點(diǎn):性能最佳

缺點(diǎn):需要掌握J(rèn)S、Dart兩個(gè)語言和框架

大廠的主流方案。UI用Dart表達(dá),用Dart engineX渲染。

開發(fā)語言:Dart

適用場(chǎng)景:iOS、Android

優(yōu)點(diǎn):性能最佳

缺點(diǎn):需要改造Dart engine

1、 美團(tuán)外賣Flutter動(dòng)態(tài)化實(shí)踐

2、 攜程App 首頁動(dòng)態(tài)化探索

3、 Flutter 動(dòng)態(tài)化在最右 App 中的實(shí)踐

4、 Flutter 動(dòng)態(tài)化熱更新的思考與實(shí)踐

5、 NOW直播Flutter動(dòng)態(tài)搜索列表頁實(shí)現(xiàn)

6、 Flutter動(dòng)態(tài)化的方案對(duì)比及最佳實(shí)現(xiàn)-閑魚

7、 基于JavaScript 的MXFlutter

Flutter 與 iOS 原生 webView 對(duì)比

本文對(duì)比的是 UIWebView、WKWebView、flutter_webview_plugin(在iOS中使用的是WKWebView)的加載速度,內(nèi)存使用情況。

測(cè)試網(wǎng)頁打開的速度,只需要獲取 WebView 在開始加載網(wǎng)頁和網(wǎng)頁加載完成時(shí)的時(shí)間戳,時(shí)間戳的差即為打開網(wǎng)頁的時(shí)間

為了使差異更明顯,我們選擇較為復(fù)雜的 新浪首頁 進(jìn)行加載的對(duì)比,為了減小網(wǎng)絡(luò)對(duì)加載速度的影響,我們讓手機(jī)連接同一個(gè)網(wǎng)絡(luò),分別進(jìn)行 10 次測(cè)試然后取平均值,另外,我們需要關(guān)閉 WebView 的緩存,防止緩存對(duì)加載速度產(chǎn)生影響

下面使筆者進(jìn)行 10 次測(cè)試所得到的數(shù)據(jù)

結(jié)果讓我有點(diǎn)驚訝,一直以為 WKWebView 會(huì)是個(gè)王者。結(jié)果看,速度上 WKWebView 略慢一點(diǎn),不過總體差異不大(該結(jié)果僅僅是測(cè)試新浪的結(jié)果,僅供參考啦)

在這里,筆者又加了一個(gè)測(cè)試,嘗試記錄從 viewController 的 viewDidLoad 到 webview 的 didFinish 時(shí)間,測(cè)試了新浪的數(shù)據(jù),如下:

UIWebViewA : 4970、3808、3815、4250、3556 avg(4079.8) (加載完所有頁面)

UIWebViewB : 4103、3124、3070、3256、2835 avg(3277.6)(加載sina完畢)

WKWebView : 3672、3032、2892、2912、2739 avg(3049.4)

flutter_webView : 4532、3901、4310、3496、3378 avg(3923.4)

其中可以看到,webView 有兩行,UIWebViewB 的數(shù)據(jù)就是加載 sina 主站的時(shí)間;UIWebViewA 的數(shù)據(jù)是因?yàn)樵诩虞d完 sina 主站之后,新浪又加載了一個(gè) ,所以導(dǎo)致總時(shí)間延長(zhǎng),不過即使按照 UIWebViewB 的數(shù)據(jù)來比較,也是 wkWebView 略勝一籌。

此處可以看出 flutter_webView 使用的是 wkwebView,所以它吃虧的主要原因是 flutter 包了一層。

結(jié)論:

速度(didStart - didFinish) UIWebView flutter_webview WKWebView

速度(viewDidLoad - didFinish)WKWebView UIWebView flutter_webview

這里查看內(nèi)存使用的是 xcode 的 debug session 中的 memory。

首先看之前測(cè)試時(shí),連續(xù)打開十次新浪的內(nèi)存情況

接著我們?cè)诳匆幌麓蜷_淘寶首頁的內(nèi)存情況

從圖上可以看出,WKWebView 在內(nèi)存方面有很大的優(yōu)勢(shì)啊,UIWebView 的內(nèi)存是真的傷啊,然后 debug 看了一下 flutter_webView,他使用的就是原生的 webView 。

他相比較原生 WKWebView 的內(nèi)存開銷稍大一點(diǎn),從測(cè)試表現(xiàn)來看,一般大個(gè) 30 MB 左右。

結(jié)論:內(nèi)存 WKWebView flutter_webview UIWebView

可以在 html5test 中對(duì)瀏覽器的兼容性進(jìn)行評(píng)分,通過測(cè)試發(fā)現(xiàn)得分分別如下

因?yàn)?flutter 里使用的就是 WK,所以和原生的 WKWebView 一樣都是 444 分,比 UIWebView 的 437 略勝一籌

結(jié)論:兼容性 WKWebView = flutter_webview UIWebView

UIWebView : 速度相比較 WKWebView 稍快一點(diǎn),但是內(nèi)存是一大硬傷,所以只要條件允許,就不推薦使用了

WKWebView : 速度略慢一點(diǎn),不過差別不大,總體可以接受。是比UIWebView更好的選擇,推薦使用。

flutter_webView_plugin :在iOS中使用的就是原生的WKWebView,所以總體和 native WKWebView 表現(xiàn)差不多。如果是混編項(xiàng)目中,因?yàn)樗话艘粚樱皂撁婕虞d上存在一定的劣勢(shì),所以混編項(xiàng)目中仍然推薦使用 WKWebView。不過如果從多端考慮、以及項(xiàng)目可遷移等,那么使用也未嘗不可,就是維護(hù)成本要增加一些,需要維護(hù)兩套 webView。這個(gè)就需要根據(jù)自己的情況自己取舍了。

跨平臺(tái)技術(shù);H5和Flutter誰是未來?

前言

為什么跨平臺(tái)是發(fā)展趨勢(shì)?

同一個(gè)應(yīng)用,各個(gè)“端”獨(dú)立開發(fā),不僅開發(fā)周期長(zhǎng),而且人員成本高。同時(shí),作為技術(shù)人員,也不應(yīng)該滿足于這種重復(fù)、低能的工作狀態(tài)。在這樣的形勢(shì)下,跨平臺(tái)的技術(shù)方案也受到越來越多人和企業(yè)的關(guān)注。

本篇文章我將從原理、優(yōu)缺點(diǎn)等方面為大家分享跨平臺(tái)技術(shù)

一. H5

說到跨平臺(tái),沒人不知道H5。不管是在Mac、Windows、Linux、iOS、Android還是其他平臺(tái),只要給一個(gè)瀏覽器,連“月球”上它都能跑。

1.瀏覽器架構(gòu)

下面,我們來看看讓H5如此橫行霸道的瀏覽器的架構(gòu):

瀏覽器由以上7個(gè)部分組成,而“渲染引擎”是性能優(yōu)化的重中之重,一起了解其中的渲染原理。

2.渲染引擎原理

不同的瀏覽器內(nèi)核不同,渲染過程會(huì)不太一樣,但主要流程還是一致的。

分為下面6步驟:

從以上6步,我們可以總結(jié)渲染優(yōu)化的要點(diǎn):

以上就是瀏覽器端的內(nèi)容。但H5作為跨平臺(tái)技術(shù)的載體,是如何與不同平臺(tái)的App進(jìn)行交互的呢?這時(shí)候JSBridge就該出場(chǎng)了。

3.JSBridge原理

JSBridge,顧名思義,是JS和Native之間的橋梁,用來進(jìn)行JS和Native之間的通信。

通信分為以下兩個(gè)維度:

那么App內(nèi)加載H5的過程是什么樣的呢?

4.App打開H5過程

打開H5分為4個(gè)階段:

這四步,對(duì)應(yīng)的過程如上圖所以,我們可以針對(duì)性的做性能優(yōu)化。

5.優(yōu)缺點(diǎn)分析

下面,我們進(jìn)行H5的優(yōu)缺點(diǎn)分析:

優(yōu)點(diǎn)

缺點(diǎn)

雖然H5目前還存在不足,但隨著PWA、WebAssembly等技術(shù)的進(jìn)步,相信H5在未來能夠得到越來也好的發(fā)展。

二.小程序

2018年是微信小程序飛速發(fā)展的一年,19年,各大廠商快速跟進(jìn),已經(jīng)有了很大的影響力。下面,我們以微信小程序?yàn)槔治鲂〕绦虻募夹g(shù)架構(gòu)。

小程序跟H5一樣,也是基于Webview實(shí)現(xiàn)。但它包含View視圖層、App Service邏輯層兩部分,分別獨(dú)立運(yùn)行在各自的WebView線程中。

1.View

可以理解為h5的頁面,提供UI渲染。由WAWebview.js來提供底層的功能,具體如下:

每個(gè)窗口都有一個(gè)獨(dú)立的WebView進(jìn)程,因此微信限制不能打開超過5個(gè)層級(jí)的頁面來保障用戶體驗(yàn)。

2. App Service

提供邏輯處理、數(shù)據(jù)請(qǐng)求、接口調(diào)用。由WAService.js來提供底層的功能,具體如下:

運(yùn)行環(huán)境:

僅有一個(gè)WebView進(jìn)程

3.View App Service通信

視圖層和邏輯層通過系統(tǒng)層的JSBridage進(jìn)行通信,邏輯層把數(shù)據(jù)變化通知到視圖層,觸發(fā)視圖層頁面更新,視圖層將觸發(fā)的事件通知到邏輯層進(jìn)行業(yè)務(wù)處理。

4. 優(yōu)缺點(diǎn)分析

優(yōu)點(diǎn)

缺點(diǎn)

既然WebView性能不佳,那有沒有更好的方案呢?下面我們看看React Native。

三.React Native

RN的理念是在不同平臺(tái)上編寫基于React的代碼,實(shí)現(xiàn)Learn once, write anywhere。

Virtual DOM在內(nèi)存中,可以通過不同的渲染引擎生成不同平臺(tái)下的UI,JS和Native之間通過Bridge通信

1.React Native 工作原理

在 React 框架中,JSX 源碼通過 React 框架最終渲染到了瀏覽器的真實(shí) DOM 中,而在 React Native 框架中,JSX 源碼通過 React Native 框架編譯后,與Native原生的UI組件進(jìn)行映射,用原生代替DOM元素來渲染,在UI渲染上非常接近Native App。

2.React Native 與Native平臺(tái)通信

3.優(yōu)缺點(diǎn)分析

優(yōu)點(diǎn)

缺點(diǎn)

4.RN展望

雖然RN還存在不足,但RN新版本已經(jīng)做了如下改進(jìn),并且RN團(tuán)隊(duì)也在積極準(zhǔn)備大版本重構(gòu),能否成為開發(fā)者們所信賴的跨平臺(tái)方案,讓我們拭目以待。

既然React Native在渲染方面還擺脫不了原生,那有沒有一種方案是直接操控GPU,自制引擎渲染呢,我們終于迎來了Flutter!

四.Flutter

Flutter是Google開發(fā)的一套全新的跨平臺(tái)、開源UI框架,支持iOS、Android系統(tǒng)開發(fā),并且是未來新操作系統(tǒng)Fuchsia的默認(rèn)開發(fā)套件。渲染引擎依靠跨平臺(tái)的Skia圖形庫來實(shí)現(xiàn),依賴系統(tǒng)的只有圖形繪制相關(guān)的接口,可以在最大程度上保證不同平臺(tái)、不同設(shè)備的體驗(yàn)一致性,邏輯處理使用支持AOT的Dart語言,執(zhí)行效率也比JavaScript高得多。

1.Flutter架構(gòu)原理

2.Dart優(yōu)勢(shì)

很多人會(huì)好奇,為什么Flutter要用Dart,而不是用JavaScript開發(fā),這里列下Dart的優(yōu)勢(shì)

3.優(yōu)缺點(diǎn)分析

優(yōu)點(diǎn)

缺點(diǎn)

新聞名稱:包含flutter優(yōu)勢(shì)的詞條
本文地址:http://chinadenli.net/article39/dsgphsh.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣移動(dòng)網(wǎng)站建設(shè)網(wǎng)站設(shè)計(jì)網(wǎng)站排名營(yíng)銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化