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