摘要:水一篇,在之染是什么問題中長答案的整理簡單講就是可以讓你用豐富的前端經(jīng)驗寫移動應(yīng)用的東西。第二個是上用于使一個對象可以在中被訪問,并調(diào)用其方法。但網(wǎng)頁界面的性能就沒什么好辦法了至少我沒有。。。
水一篇,在 黒之染:Cordova是什么? 問題中長答案的整理:
簡單講就是可以讓你用豐富的前端經(jīng)驗寫移動應(yīng)用的東西。
它不會把你的前端頁面變成 ios 原生的 objective-c 或者 android 的 java 代碼,你的界面還是網(wǎng)頁呈現(xiàn)的,渲染在 android 的 android.webkit.WebView 或 iOS 的 UIWebView 中。
不太像殼,更像是膠水,因為它不像框架一樣團(tuán)團(tuán)包住你寫的那部分內(nèi)容,只是在運行在 WebView 中的 javascript 代碼和原生代碼之間建了一座溝通的橋梁, Ionic 這種東西才更像是殼。這個橋怎么搭下面寫。
不是前端框架, bootstrap、angularjs、jqueryUI 這些是前端框架,可以和 Cordova 協(xié)作,但都不必要。
Cordova 原理給兩個鏈接:
- webView:shouldStartLoadWithRequest:navigationType:
public void addJavascriptInterface (Object object, String name)
第一個是 Cordova 在 iOS 上的原理,第二個是在 Android 上的原理。(不知道現(xiàn)在還是不是,我之前看的資料版本有點低)
第一個是 iOS 上 UIWebView 將要開始跳轉(zhuǎn)地址的時候被調(diào)用,進(jìn)而根據(jù)傳入的地址作出反映。第二個是 Android 上用于使一個 Java 對象可以在 JS 中被訪問,并調(diào)用其方法。
這就開啟了兩個平臺上 JS 和原生代碼之間的溝通窗口,這就是原理。 Cordova 在這個基礎(chǔ)上構(gòu)建了完善的一套體系,讓我們可以以一種簡單標(biāo)準(zhǔn)的流程寫 Hybird 應(yīng)用,它來負(fù)責(zé)這個 JS 與原生代碼的溝通工作。
到這看得出,其實 原生代碼是避不開的 ,想要利用系統(tǒng)的各項功能必須要寫對應(yīng)不同系統(tǒng)支持的不同語言的原生代碼。但有很多寫 Cordova 的程序員不懂這些也能寫出東西來,靠的就是 豐富的插件 。
隨便找一個 Cordova 插件,目錄結(jié)構(gòu)打開,大致是這樣:
xxx@xxx:~/.../cordova-plugin-device > tree . ├── README.md ├── package.json ├── plugin.xml ├── src │?? ├── android │?? │?? └── Device.java │?? ├── ios │?? │?? ├── CDVDevice.h │?? │?? └── CDVDevice.m │ ├── ... │?? └── wp │?? └── Device.cs └── www └── device.js
看到 src 文件夾底下的 ios、android、wp 這些文件夾了么,里面裝的就是各個平臺上的原生代碼。用打包工具 build 的時候,就會對應(yīng)的幫你復(fù)制到各個平臺的項目文件夾去,并做好配置。
比如我寫一個調(diào)用攝像頭拍照片的插件,支持 android 與 iOS 兩個平臺,我就要針對這兩個平臺編寫 兩份 完成同樣功能的原生代碼,然后給一個統(tǒng)一的 JS 接口,由 Cordova 把這個接口暴露給寫 Cordova 應(yīng)用的人。他們就可以只用 JS 完成我寫的插件承諾能夠做到的功能,也就是拍一張照片。
也就是說 Cordova 寫的應(yīng)用理論上可以做到任何原生應(yīng)用能做到的功能,而不是很多人誤解的“局限很大”,確實是有局限,但不是局限在可能性上。
只用上面提到的兩個“窗口”足以讓你做到這里說的使用 JS 調(diào)用原生平臺功能,但 Cordova 把這個過程簡化、標(biāo)準(zhǔn)化,甚至生態(tài)化了。豐富的插件、活躍的社區(qū)還有詳盡的文檔,這些都極大方便了 Hybird 應(yīng)用的開發(fā)過程。就好像只用 1010 可以構(gòu)建整個互聯(lián)網(wǎng),但我們?nèi)匀恍枰僮飨到y(tǒng)一樣。
所以真要一句話說到點上的話。。。就是可以讓你用前端經(jīng)驗寫移動應(yīng)用的東西。
性能問題界面部分是渲染在webview中的網(wǎng)頁,通常來說應(yīng)用邏輯也是js編寫。性能是個大問題,但跨平臺開發(fā)的便捷性又是個大優(yōu)勢。
好像為了追求性能,桌面應(yīng)用可以用匯編編寫核心代碼一樣,Cordova應(yīng)用如果有哪部分成為了性能瓶頸也可以針對性用原生重寫。
所以只要團(tuán)隊開發(fā)資源足夠,邏輯代碼部分的性能不是主要問題。但網(wǎng)頁界面的性能就沒什么好辦法了(至少我沒有。。。)
很多花哨的網(wǎng)站界面,普通點的電腦帶著都費勁。對于移動設(shè)備上性能堪憂的webview來說,多加一個css的陰影可能都是得斤斤計較的支出了,這些遺憾只能看app需求自行權(quán)衡
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/78892.html
摘要:很久之前就想寫這篇博客,但是一直沒有時間,今天抽空來整理一下,總結(jié)一下的創(chuàng)建打包簽名。 很久之前就想寫這篇博客,但是一直沒有時間,今天抽空來整理一下,總結(jié)一下cordova的創(chuàng)建、打包、簽名apk。對于cordova所需的打包環(huán)境,如node,cordova的安裝,這里就不再多說,度娘上有很多... 1.cordova命令創(chuàng)建一個項目 cordova create testApp co...
摘要:本文源碼為版本。的代碼結(jié)構(gòu)也是一個很經(jīng)典的定義結(jié)構(gòu)構(gòu)造函數(shù)實例修改函數(shù)原型共享實例方法,它提供事件通道上事件的訂閱撤消訂閱調(diào)用。 前言 cordova(PhoneGap) 是一個優(yōu)秀的經(jīng)典的中間件框架,網(wǎng)上對其源代碼解讀的文章確實不多,本系列文章試著解讀一下,以便對cordova 框架的原理理解得更深入。本文源碼為cordova android版本6.1.2。 源碼結(jié)構(gòu) 我們使用IDE...
摘要:搭建環(huán)境一配置環(huán)境變量安裝選擇安裝目錄安裝過程中會出現(xiàn)兩次安裝提示。建議兩個都安裝在同一個文件夾中的不同文件夾中。系統(tǒng)變量新建變量。設(shè)置環(huán)境變量變量名變量值在中加入注意要有分號。雙擊存檔以公開內(nèi)容。 cordova搭建環(huán)境 一、配置java環(huán)境變量 1.安裝JDK 選擇安裝目錄 安裝過程中會出現(xiàn)兩次 安裝提示 。第一次是安裝 jdk ,第二次是安裝 jre 。建議兩個都安裝在同一個j...
摘要:任何初始化任務(wù)應(yīng)該在文件中的事件的事件處理函數(shù)中。這個配置文件有幾個地方很關(guān)鍵,一開始沒有認(rèn)真看,將插件導(dǎo)進(jìn)工程跑的時候各種問題,十分頭痛,不得不重新認(rèn)真看看文檔。 前言 來新公司的第一個任務(wù),研究hybrid App中間層實現(xiàn)原理,做中間層插件開發(fā)。這個任務(wù)挺有意思,也很有挑戰(zhàn)性,之前在DCloud雖然做過5+ App開發(fā),但是中間層的東西確實涉及不多。本系列文章屬于系列開篇cord...
閱讀 2378·2021-11-18 10:07
閱讀 2335·2021-09-22 15:59
閱讀 3089·2021-08-23 09:42
閱讀 2293·2019-08-30 15:44
閱讀 1204·2019-08-29 15:06
閱讀 2330·2019-08-29 13:27
閱讀 1225·2019-08-29 13:21
閱讀 1428·2019-08-29 13:13