自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

掘力計(jì)劃第 20 期:崔紅保-跨端框架性能優(yōu)化實(shí)踐

企業(yè)動(dòng)態(tài)
近些年,跨平臺(tái)開發(fā)早已是大家熟知的一種開發(fā)范式,但跨平臺(tái)開發(fā)依然常被開發(fā)者詬病?原因何在?如何改進(jìn)解決?本次演講,崔紅保重點(diǎn)介紹 App 平臺(tái)的性能堵點(diǎn)及解決方案,并將介紹 UTS 這種新的開發(fā)范式。UTS 采用類 TS 的 DSL,通過 Rust 編譯成 swift/Kotlin,獲得純正原生 App,在徹底解決傳統(tǒng) Hybrid App 性能頑疾的前提下,借助 web 生態(tài),解放生產(chǎn)力,快速交

在掘力計(jì)劃系列活動(dòng)第20場, uni-app 跨端框架負(fù)責(zé)人、DCloud CTO、跨平臺(tái)開發(fā)老兵崔紅保分享了跨端框架性能優(yōu)化實(shí)踐。

直播摘要:

近些年,跨平臺(tái)開發(fā)早已是大家熟知的一種開發(fā)范式,但跨平臺(tái)開發(fā)依然常被開發(fā)者詬???原因何在?如何改進(jìn)解決?本次演講,崔紅保重點(diǎn)介紹 App 平臺(tái)的性能堵點(diǎn)及解決方案,并將介紹 UTS 這種新的開發(fā)范式。UTS 采用類 TS 的 DSL,通過 Rust 編譯成 swift/Kotlin,獲得純正原生 App,在徹底解決傳統(tǒng) Hybrid App 性能頑疾的前提下,借助 web 生態(tài),解放生產(chǎn)力,快速交付。

一、跨端框架設(shè)計(jì)的核心要素

選擇跨端框架時(shí),要考量的要素包括:

  1. 功能性:需要支持的終端類型和功能模塊,如小程序、APP 等。
  2. 擴(kuò)展性:能否支持新增平臺(tái)和功能,如新增小紅書小程序。
  3. 性能:評測報(bào)告中的交互體驗(yàn),如長列表滑動(dòng)流暢度。
  4. 生態(tài):開發(fā)者熟悉度,以及可復(fù)用組件的豐富度。
  5. 開發(fā)體驗(yàn):現(xiàn)代 web 開發(fā)體驗(yàn)、清晰明確的錯(cuò)誤提示、熱重載等。
  6. 工程化:是否支持 CI/CD、自動(dòng)化測試等。

二、跨端框架在性能維度的共性問題

大部分類小程序的跨端框架采用 JavaScript 邏輯層 與渲染層分離的架構(gòu)。JavaScript 運(yùn)行在獨(dú)立環(huán)境中,通過橋接與原生通信。這種架構(gòu)因 web 渲染引擎,常有一些性能問題:

  1. 白屏?xí)r間長,頁面切換卡頓。
  2. 這是因?yàn)樾枰葮?gòu)建 DOM 樹和 CSSOM 樹,才能完成頁面布局和渲染。
  3. 手勢操作不流暢,如地圖縮放抖動(dòng)。
  4. 無法達(dá)到每秒 60 幀的效果,交互體驗(yàn)不佳。
  5. 缺乏某些組件的深度定制能力,如鍵盤。
  6. 不同的輸入場景需要不同彈出動(dòng)畫或形態(tài)的鍵盤。

為改進(jìn)此問題,多采用混合渲染方案,關(guān)鍵組件使用原生實(shí)現(xiàn),而非 Web 渲染。但又帶來了新的問題:

  1. 原生組件層級永遠(yuǎn)最頂,無法調(diào)整。導(dǎo)致覆蓋關(guān)系錯(cuò)亂。
  2. 頻繁的層間通信依然存在,如頁面滾動(dòng)時(shí)需高頻通知原生組件移動(dòng)位置。
  3. 字體風(fēng)格不統(tǒng)一,原生組件字體隨系統(tǒng)變化,Web 組件字體受頁面 CSS 影響,UI 風(fēng)格不協(xié)調(diào)。

完全使用原生渲染可以避免視圖層問題,但進(jìn)程之間的通信依然存在,會(huì) block 渲染線程。業(yè)內(nèi)使用方案如 React Native 也無法根本解決。

通訊組賽在各個(gè)框架都存在一些問題

三、UTS:純原生跨平臺(tái)開發(fā)框架

UTS 的工作原理是,使用 TypeScript 編寫代碼邏輯,通過編譯器轉(zhuǎn)換為 Kotlin/Swift 源碼,并注入響應(yīng)系統(tǒng),最終編譯生成跨平臺(tái)原生 App。

具體實(shí)現(xiàn)要點(diǎn)是:

  1. 仍基于 Web 技術(shù)棧,以便利用豐富的生態(tài)。

  1. 使用原生渲染,擯棄 Web 渲染缺陷。

  1. 消滅 JS 進(jìn)程,使視圖和邏輯在同一線程,避免通信阻塞。
  2. 編譯器分析 TS 語法樹,轉(zhuǎn)換為目標(biāo)語言,解決兩種語言的語法差異。
  3. 通過屬性攔截等方式注入 Runtime,實(shí)現(xiàn)原生版的 Vue-runtime。

通過此種手段,在 iOS 和 Android 平臺(tái)都可以獲得高性能的原生應(yīng)用。

四、云端一體,跨端之上的最佳實(shí)踐

云端一體,是在跨端之上引入 serverless 的開發(fā)模式,這是一種更為高效的開發(fā)模式:

  1. 云端一體,改變了傳統(tǒng)的前后端分離的協(xié)作模式,將應(yīng)用程序的部分邏輯放到前端,讓前端工程師直接參與后端業(yè)務(wù)邏輯,無需等待后端團(tuán)隊(duì)開發(fā)接口,節(jié)省溝通成本、人力成本,加快應(yīng)用上線交付效率。
  2. 前端組件可直接關(guān)聯(lián)數(shù)據(jù)庫,大幅簡化 CRUD 場景開發(fā)。
  3. 云對象的模式,簡化傳統(tǒng)的 Ajax 請求,像 ES6 中的 import/export 一樣,前端直接引入云端的接口對象。
  4. 云端一體,可基于業(yè)務(wù)場景制造更高效的組件輪子,改變傳統(tǒng)前后端分離導(dǎo)致的輪子割裂

綜上所述,云端一體,可以幫助開發(fā)者專注業(yè)務(wù)、聚焦商業(yè)、節(jié)省人力、提高效率,是一種基于跨端框架之上的最佳實(shí)踐。

責(zé)任編輯:鳶瑋 來源: 掘金社區(qū)
相關(guān)推薦

2023-08-04 10:46:57

掘力計(jì)劃前端Pake

2023-08-02 10:42:00

Flutter掘力計(jì)劃

2023-08-03 10:25:49

Flutter

2023-08-18 17:25:45

掘力計(jì)劃大語言模型

2023-08-18 17:24:09

掘力計(jì)劃大語言模型

2023-08-16 18:23:28

掘力計(jì)劃網(wǎng)易有道大模型

2023-08-17 10:29:28

掘力計(jì)劃大語言模型

2016-08-28 08:16:44

Dcloud崔紅保Web AP

2019-10-25 10:42:51

框架Web開發(fā)

2020-12-21 06:20:34

內(nèi)存優(yōu)化跨端

2018-05-31 23:36:30

vue小程序App

2017-05-19 22:46:36

多維后臺(tái)性能優(yōu)化手段

2017-05-21 22:32:39

報(bào)表性能優(yōu)化

2020-03-23 15:15:57

MySQL性能優(yōu)化數(shù)據(jù)庫

2023-05-04 07:39:33

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號