跨平臺移動端開發:NativeScript
NativeScript 可以使用 Javascript,CSS, XML 創建真正的 Native 跨平臺應用,支持 iOS Android,NativeScript 將您的跨平臺代碼翻譯成目標平臺的代碼。
UI 使用 XML 描述,CSS 樣式,在編譯時將 UI 轉化成本地原生代碼,最終得到正在的 Native 原生應用。
Telerik 公開了用于創建安卓、iOS和Windows Universal跨平臺原生應用的框架,NativeScript 的公共訪問權限。
NativeScript既不是一種新型的JavaScript語言,也不是原生功能的封裝器,它包括一個JavaScript運行時環境和一種將 JavaScript調用轉化為原生調用的機制。用JavaScript(或TypeScript,CoffeeScript等)語言編寫應用,之后在安 卓平臺用V8,在iOS和Windows Phone上用WebKit JavaScriptCore解釋應用。然后,NativeScript運行時環境找到原生的目標API,將JS數據類型轉化為相應的原生類型,然后調用原生API,并將得到的結果值返回,具體流程如下圖所示:
舉例來說,在安卓平臺上創建文件對象var file = new java.io.File(path);的步驟如下:
-
用V8解釋代碼
</li> -
根據原數據確定相應的原生方法調用。原數據是在各個平臺上預先構建的提供類型和方法簽名的全部可用API集合。
</li> -
類型轉換模塊將JavaScript的String類型轉換為一個java.lang.String對象
</li> -
運行時環境為java.io.File創建一個代理對象
</li> -
通過該代理將對原有JS File對象的調用委托給相應的Java實例
</li> </ul>據Telerik介紹,與純原生代碼相比NativeScript運行時環境會帶來大概10%的性能損失。
NativeScript可以將其所支持平臺上的任意原生API作為目標,包括傳感器接口API和用Objective C,Java或.NET編寫的第三方庫。UI組件是原生的,UI事件由在JavaScript代碼中聲明的原生處理程序處理,如View.OnClickListener,UIControl.addTarget。
為了避免開發者需要對三個支持的平臺有深入的理解,該框架包含了一個抽象與原生代碼連接的NativeScript模塊層(NativeScript Modules Layer,NML), 可以自動將JavaScript調用轉化為原生調用。NML包含如下模 塊:Application,Camera,Color,Console,Data,File System,HTTP,Imaging,Local Settings,Location,Timer,UI。開發者并未受限于只能使用NML,也可以訪問任意原生API。
NativeScript其它一些功能簡單列示如下:
-
當前支持平臺:iOS7+,安卓4.2+。預計將在4月實現Windows Phone的支持。對安卓早期版本的支持也將很快到來。
</li> -
iOS平臺的編譯可以在遠程完成,無需Mac電腦或iOS工具
</li> -
開發工作可以在任意IDE中完成。
</li> -
支持任意跨瀏覽器的JavaScript庫。
</li> -
支持CSS。
</li> -
支持MVVM。
</li> -
即時支持新的原生平臺。
</li> </ul> 來自 InfoQ
-