【回復(fù)“1024”,送你一個(gè)特別推送】
不知道大家都聽沒聽說過這句哈:前端的江湖總是不缺話題,且從沒有消停過!!!?你要說沒聽說過,那就對(duì)了,這句話是我剛剛說的。愛掏網(wǎng) - it200.com但是這句話想必大家都聽說過:鐵打的后臺(tái),流水的前端。愛掏網(wǎng) - it200.com
什么意思?就是后臺(tái)技術(shù)幾乎沒什么變天,前端技術(shù)一天一個(gè)樣,今天用這個(gè),明天用那個(gè)。愛掏網(wǎng) - it200.com變化多端的前端,讓我們前端程序員在爬坑的路上,顛簸流離。愛掏網(wǎng) - it200.com
我們今天就一起細(xì)數(shù)一下最近幾天發(fā)生的幾件大事。愛掏網(wǎng) - it200.com
一、Airbnb 棄用 RN,回歸原生
就在 6 月 20 日,Airbnb 技術(shù)團(tuán)隊(duì)在 Medium 上宣布,Airbnb 放棄使用 React Native,將回歸到使用基于原生技術(shù)的自有框架開發(fā) App。愛掏網(wǎng) - it200.com理由如下:
React Native 并不能真正實(shí)現(xiàn)完全的跨平臺(tái)抽象,有時(shí)候仍然需要針對(duì)特定平臺(tái)單獨(dú)編寫代碼來解決問題。愛掏網(wǎng) - it200.com這就間接要求他們的工程師必須熟悉三個(gè)平臺(tái)才能真正用好 React Native,然而絕大多數(shù)開發(fā)者只熟悉一兩個(gè)平臺(tái),久而久之便引發(fā)了一系列的問題。愛掏網(wǎng) - it200.com
說實(shí)話,相信使用 RN 的同學(xué)都很了解 Airbnb 描述的上述問題,確實(shí)由于平臺(tái)和交互的各種原因,RN 給個(gè)別一些組件在 Android 平臺(tái)和 iOS 平臺(tái)提供的使用方式和組件都是有差異的,導(dǎo)致對(duì)于一些界面需要我們單獨(dú)判斷編寫。愛掏網(wǎng) - it200.com確實(shí)需要開發(fā)人員同時(shí)都得了解 Android 和 iOS 的特性與異同,同時(shí)開發(fā)者還得了解 RN 技術(shù)。愛掏網(wǎng) - it200.com
RN 的坑確實(shí)很多,不知道現(xiàn)在有多少人還在坑里,或者在爬坑和填坑的路上,但是大家也不要?dú)怵H,因?yàn)榻酉聛磉@件事,可能會(huì)讓你在 RN 的路上看到一些希望。愛掏網(wǎng) - it200.com
二、Facebook 正在重構(gòu) RN
最近 React 的工程經(jīng)理 Sophie Alpert 在其官方博客上宣布,F(xiàn)acebook 要重構(gòu) React Native,讓它加更輕量、更靈活性、更適應(yīng) JavaScript 生態(tài)圈的發(fā)展。愛掏網(wǎng) - it200.com據(jù)說在過去的幾年里,他們發(fā)現(xiàn)最初的設(shè)計(jì)原則?成為 JavaScript 和原生應(yīng)用之間的橋梁,加大了某些特性的開發(fā)難度。愛掏網(wǎng) - it200.com比如:
異步橋接意味著不能直接將 JS 邏輯與很多原生 API 集成在一起,因?yàn)檫@些原生 API 是同步的。愛掏網(wǎng) - it200.com
另外,批量橋接意味著,RN 應(yīng)用程序調(diào)用原生實(shí)現(xiàn)的函數(shù)會(huì)更加困難。愛掏網(wǎng) - it200.com對(duì)于完全使用 RN 構(gòu)建的應(yīng)用程序,這些限制還是可以承受的,但對(duì)于在 RN 與現(xiàn)有應(yīng)用程序代碼之間進(jìn)行復(fù)雜集成的應(yīng)用程序,情況則變得相當(dāng)糟糕。愛掏網(wǎng) - it200.com
因此,F(xiàn)acebook 正在對(duì) React Native 進(jìn)行大規(guī)模重構(gòu),讓架構(gòu)變得更加靈活,并更好地與混合 JavaScript / 原生應(yīng)用開發(fā)中的原生基礎(chǔ)設(shè)施集成。愛掏網(wǎng) - it200.com
通過這個(gè)項(xiàng)目,他們將應(yīng)用在過去 5 年中學(xué)到的知識(shí),逐步讓架構(gòu)更現(xiàn)代化。愛掏網(wǎng) - it200.com他們正在對(duì) React Native 內(nèi)部進(jìn)行大量的重寫,當(dāng)然大部分工作都是在底層進(jìn)行的,所以現(xiàn)有的 React Native 應(yīng)用程序幾乎不需要做出更改。愛掏網(wǎng) - it200.com
為了使 RN 更輕量化并能更好地適應(yīng)現(xiàn)有的原生應(yīng)用,此次重構(gòu)主要從三個(gè)方面進(jìn)行:
-
首先,改變線程模型。愛掏網(wǎng) - it200.comUI 更新不再需要在三個(gè)不同的線程上執(zhí)行,而是可以在任意線程上同步調(diào)用 JavaScript 進(jìn)行優(yōu)先更新,同時(shí)將低優(yōu)先級(jí)工作推出主線程,以便保持對(duì) UI 的響應(yīng)
-
其次,將異步渲染功能引入 React Native 中,允許執(zhí)行多個(gè)渲染并簡化異步數(shù)據(jù)處理
-
最后,簡化橋接,讓它更快、更輕量。愛掏網(wǎng) - it200.com原生和 JavaScript 之間的直接調(diào)用效率更高,并且可以更輕松地構(gòu)建調(diào)試工具,如跨語言堆棧跟蹤
原文地址:https://facebook.github.io/react-native/blog/2024/06/14/state-of-react-native-2024
三、React 被 VUE 反超?
就在 Airbnb 在棄用 RN 之時(shí),React 的star 數(shù)也被 VUE 反超。愛掏網(wǎng) - it200.com就在近幾天,Vue.js 在 GitHub 上的 star 數(shù)量終于超過了 React.js 的 star 數(shù)量,并在不久之后雙雙破了 10W。愛掏網(wǎng) - it200.com
Vue.js 作為一個(gè)中國大神尤雨溪開發(fā)的前端框架,是在 2024 年 2 月份開源的,Vue.js 以其比 React 更簡單,更方便,非常的火爆。愛掏網(wǎng) - it200.com在過去的兩年中,Vue 的增長速度比其他任何主流的 JavaScript 框架都快,最近趕上了 Angular.js,并逐漸縮小了它與 Angular 和 React 之間的差距。愛掏網(wǎng) - it200.com
但是,star 數(shù)并不能代表一切,根據(jù) NPM 軟件包的下載量來衡量,React 仍然在實(shí)際使用方面占據(jù)主導(dǎo)地位。愛掏網(wǎng) - it200.com它即將超過每月 1000 萬的巨大下載量,并且還一直保持著高速的增長。愛掏網(wǎng) - it200.com
四、Flutter 發(fā)布首個(gè)預(yù)覽版
Flutter 是谷歌的移動(dòng) UI 框架,可以快速在 iOS 和 Android 上構(gòu)建高質(zhì)量的原生用戶界面。愛掏網(wǎng) - it200.com Flutter 可以與現(xiàn)有的代碼一起工作。愛掏網(wǎng) - it200.com在全世界,F(xiàn)lutter 正在被越來越多的開發(fā)者和組織使用,并且 Flutter 是完全免費(fèi)、開源的。愛掏網(wǎng) - it200.com
它也是構(gòu)建未來的 Google Fuchsia 應(yīng)用的主要方式。愛掏網(wǎng) - it200.com
框架特性可以說是:
1、快速開發(fā)
Flutter 的熱重載幫助你快捷方便的試驗(yàn)、重構(gòu) UI、添加特性和修復(fù) bug。愛掏網(wǎng) - it200.com在仿真器、模擬器和 ios、android 硬件上體驗(yàn)亞秒級(jí)的重載,而不會(huì)丟失狀態(tài)。愛掏網(wǎng) - it200.com
2、絢麗 UI
通過 Flutter 內(nèi)建的漂亮的質(zhì)感設(shè)計(jì)和 Cupertino(ios-flavor)小工具、豐富的動(dòng)畫 api,平滑的自然滾動(dòng)和平臺(tái)感知,讓用戶感到滿意。愛掏網(wǎng) - it200.com
3、響應(yīng)式框架
通過 Flutter 的現(xiàn)代響應(yīng)式 (Reactive) 框架和豐富的平臺(tái)布局和基礎(chǔ)組件輕松構(gòu)建您的用戶界面。愛掏網(wǎng) - it200.com用強(qiáng)大而靈活的 apis 解決 2D、動(dòng)畫、手勢(shì)、效果等難題。愛掏網(wǎng) - it200.com
4、訪問原生功能
通過平臺(tái) api、第三方 sdk 和原生代碼使您的應(yīng)用變得生動(dòng)起來。愛掏網(wǎng) - it200.comFlutter 讓您可以重用您現(xiàn)有的 java、swift 和 Objc 代碼,并在 iOS 和 Android 上訪問原生特性和 SDK。愛掏網(wǎng) - it200.com
Flutter 可以說是現(xiàn)在越來越到得重視,也有要火的趨勢(shì),但是其官方編程語言為 Dart,也是一門全新的語言。愛掏網(wǎng) - it200.com所以說,上手成本比較高,對(duì)于移動(dòng)端開發(fā)人員,語言以及框架都是全新的,整個(gè)技術(shù)棧的積累也都得從頭開始。愛掏網(wǎng) - it200.com
Flutter 對(duì)于移動(dòng)開發(fā)人員,最誘惑的能力是其完全的跨平臺(tái)特性,不同于 RN 這種一處學(xué)到處寫,它是一處寫到出跑。愛掏網(wǎng) - it200.com
另外 Flutter 不同于市面上的其他解決方案,之前我們最常見的無非就是兩類,一個(gè)就是:使用平臺(tái)支持的 Web 技術(shù),還一個(gè)就是本地跨平臺(tái),比如:RN、Weex 等。愛掏網(wǎng) - it200.com?但是 Flutter 跨平臺(tái)最核心的部分,是它的高性能渲染引擎(Flutter Engine)。愛掏網(wǎng) - it200.comFlutter 不使用瀏覽器技術(shù),也不使用 Native 的原生控件,它使用自己的渲染引擎來繪制 widget。愛掏網(wǎng) - it200.com
對(duì)于 Android 平臺(tái),F(xiàn)lutter 引擎的 C/C++ 代碼是由 NDK 編譯,在 iOS 平臺(tái),則是由 LLVM 編譯,兩個(gè)平臺(tái)的 Dart 代碼都是 AOT 編譯為本地代碼,F(xiàn)lutter 應(yīng)用程序使用本機(jī)指令集運(yùn)行。愛掏網(wǎng) - it200.com
Flutter 正是是通過使用相同的渲染器、框架和一組 widget,來同時(shí)構(gòu)建 iOS 和 Android 應(yīng)用,而無需維護(hù)兩套獨(dú)立的代碼庫。愛掏網(wǎng) - it200.com
最后
最后,看到這里,看到前端大事記之后,不知道你有什么想法?前端的變化多端,前端技術(shù)的層出不窮,是不是感覺前端技術(shù)變天比女人變臉還快?但是,其實(shí)也不用焦慮,也不用擔(dān)心,一個(gè)技術(shù)的成熟到完全流行起來,是需要時(shí)間的,是需要過程的,這段時(shí)間和過程,就是你提高自己的最好時(shí)機(jī)。愛掏網(wǎng) - it200.com
面對(duì)千變?nèi)f化的前端,我對(duì)大家只有一個(gè)忠告和建議:以不變應(yīng)萬變?,這個(gè)不變的就是學(xué)習(xí)。愛掏網(wǎng) - it200.com