跨平台技术栈
跨平臺(tái)技術(shù)棧可以做到多平臺(tái)支持,但是原理完全不同。
跨平臺(tái)技術(shù)棧的框架,都是使用自己的語(yǔ)法編寫頁(yè)面,不使用 Web 技術(shù),編譯的時(shí)候再將其轉(zhuǎn)為原生控件,或者使用自己的底層控件,生成原生 App。這樣就完全解決了 Web 頁(yè)面性能不佳的問(wèn)題。下面介紹三個(gè)這樣的框架。
React Native
(1)原理
2013年, Facebook 公司發(fā)布了 React 框架。這個(gè)框架是為網(wǎng)頁(yè)開(kāi)發(fā)設(shè)計(jì)的,核心思想是在網(wǎng)頁(yè)之上,建立一個(gè) UI 的抽象層,所有數(shù)據(jù)操作都在這個(gè)抽象層完成(即在內(nèi)存里面完成),然后再渲染成網(wǎng)頁(yè)的 DOM 結(jié)構(gòu),這樣就提升了性能。
很快,工程師們就意識(shí)到了,UI 抽象層本質(zhì)上是一種數(shù)據(jù)結(jié)構(gòu),與底層設(shè)備無(wú)關(guān),不僅可以渲染成網(wǎng)頁(yè),也可以渲染成手機(jī)的原生頁(yè)面。這樣的話,只要寫一次 React 頁(yè)面,就能分別編譯成 iOS 和安卓的原生 App。這就是 React Native 項(xiàng)目的由來(lái)。
注意,React Native 雖然也使用 JavaScript 語(yǔ)言,并且寫法看上去像 Web 頁(yè)面,但其實(shí)所有控件都是自己定義的,編譯時(shí)再一一翻譯為對(duì)應(yīng)的原生控件。舉例來(lái)說(shuō),React Native 的文本渲染控件是,翻譯成 iOS 控件為UIView,翻譯成安卓控件為TextView。這種做即保證了性能,又做到了跨平臺(tái)支持,所以一誕生就引起開(kāi)發(fā)者的關(guān)注,成了熱門技術(shù)。
Xamarin
Xamarin 是微軟公司的跨平臺(tái) App 開(kāi)發(fā)框架,原理跟 React Native 很相似,只不過(guò)它的語(yǔ)言是 C#。
Flutter
Flutter 是谷歌公司最新的跨平臺(tái)開(kāi)發(fā)框架。它為了解決 React Native 的平臺(tái)差異問(wèn)題,采用了一個(gè)完全不同的方案。
它自己實(shí)現(xiàn)了一套控件。打包的時(shí)候,會(huì)把這套控件打包進(jìn)每一個(gè) App,因此不存在調(diào)用原生控件的問(wèn)題。不管什么平臺(tái),都調(diào)用內(nèi)嵌的自己那套控件,就能做到 iOS 和安卓體驗(yàn)完全一致。
Flutter 歷史還不長(zhǎng),應(yīng)用還不廣泛,API 也沒(méi)穩(wěn)定下來(lái)。但是很值得關(guān)注。
總結(jié)
- 上一篇: 《git常用命令》
- 下一篇: 关于WebView 控件,你了解多少?