用NativeScript建立JavaScript原生移動應用

Telerik公開了用於建立安卓、iOS和Windows Universal跨平臺原生應用的框架,NativeScript的公共訪問權限。html

NativeScript既不是一種新型的JavaScript語言,也不是原生功能的封裝器,它包括一個JavaScript運行時環境和一種將JavaScript調用轉化爲原生調用的機制。用JavaScript(或TypeScript,CoffeeScript等)語言編寫應用,以後在安卓平臺用V8,在iOS和Windows Phone上用WebKit JavaScriptCore解釋應用。而後,NativeScript運行時環境找到原生的目標API,將JS數據類型轉化爲相應的原生類型,而後調用原生API,並將獲得的結果值返回,具體流程以下圖所示java

舉例來講,在安卓平臺上建立文件對象var file = new java.io.File(path);的步驟以下:android

  • 用V8解釋代碼
  • 根據原數據肯定相應的原生方法調用。原數據是在各個平臺上預先構建的提供類型和方法簽名的所有可用API集合。
  • 類型轉換模塊將JavaScript的String類型轉換爲一個java.lang.String對象
  • 運行時環境爲java.io.File建立一個代理對象
  • 經過該代理將對原有JS File對象的調用委託給相應的Java實例

據Telerik介紹,與純原生代碼相比NativeScript運行時環境會帶來大概10%的性能損失。ios

NativeScript能夠將其所支持平臺上的任意原生API做爲目標,包括傳感器接口API和用Objective C,Java或.NET編寫的第三方庫。UI組件是原生的,UI事件由在JavaScript代碼中聲明的原生處理程序處理,如View.OnClickListenerUIControl.addTargetgit

爲了不開發者須要對三個支持的平臺有深刻的理解,該框架包含了一個抽象與原生代碼鏈接的NativeScript模塊層(NativeScript Modules Layer,NML),能夠自動將JavaScript調用轉化爲原生調用。NML包含以下模塊:Application,Camera,Color,Console,Data,File System,HTTP,Imaging,Local Settings,Location,Timer,UI。開發者並未受限於只能使用NML,也能夠訪問任意原生API。github

NativeScript其它一些功能簡單列示以下:web

  • 當前支持平臺:iOS7+,安卓4.2+。預計將在4月實現Windows Phone的支持。對安卓早期版本的支持也將很快到來。
  • iOS平臺的編譯能夠在遠程完成,無需Mac電腦或iOS工具
  • 開發工做能夠在任意IDE中完成。
  • 支持任意跨瀏覽器的JavaScript庫。
  • 支持CSS。
  • 支持MVVM。
  • 即時支持新的原平生臺。

NativeScript是一個基於Apache 2.0許可的Github開源項目瀏覽器

查看英文原文:Creating Mobile Native Apps in JavaScript with NativeScriptapp

相關文章
相關標籤/搜索