NativeScript

NativeScript是一個提供開發Apple iOS及Android的流動應用程式的开源软件，最初由Progress構思和開發。2019 年底，Progress的長期合作夥伴nStudio接管NativeScript項目。在nStudio的監督下，NativeScript於2020年12月成為OpenJS基金會的培育項目。NativeScript可以使用JavaScript或是其他可以編譯成JavaScript的编程语言編寫，例如TypeScript。NativeScript同時也支援Angular和Vue。使用NativeScript構建的行動應用程式會產生完整的原生應用程式，其使用了與Xcode及Android Studio相同API。此外，軟體開發人員可以加入CocoaPods、Maven和npm.js的第三方程式庫到程式中而無須其他的包裝函數。

發展
NativeScript於2015年3月首次公開發布，並在兩個月後發布了1.0.0版本。NativeScript在公開發布後不久就迅速流行起來，短期之內超過1500名Twitter用戶追蹤其Twitter，其Github儲存庫也獲得了3000顆以上的星星。與此同時，NativeScript已有700個擴充功能，分別由Progress官方及開源社區開發。除此之外，也可使用Angular來開發在Web平台和移動平台之間共用的應用程式原始碼。

架構
NativeScript和所有必需的擴充功能都使用套件管理器npm安裝。使用者可通過命令行或名為NativeScript Sidekick的GUI工具建立、配置和編譯項目。
NativeScript使用XML文件定義不同平台的用戶界面，再由XML文件中的抽象描述來呼叫不同平台的原生UI元素。使用Angular和TypeScript開發的應用程式可以於目標平台外進行開發。NativeScript使用node.js執行和構建行動版應用程式。NativeScript的目標是在iOS和Android兩個平台之間實現90%的通用代碼。

 直接呼叫原生API及控件 
NativeScript使用XML文件定義不同平台的用戶界面，同時NativeScript使用了跨平台的抽象XML資料來觸發特定於平台的代碼，這些代碼直接與目標平台的原生物件交互，例如說當調用NativeScript Button API的UI抽象時，NativeScript會直接調用iOS上的UIButton或Android上的com.android.widget.Button。

雖然應用程式可能使用JavaScript、TypeScript、Angular或Vue.js來編寫，但其源始碼不會被編譯或轉譯，而是按原樣直接在設備上執行。此構建方式免除了交叉編譯或轉譯的需求。此外，雖然應用程式的源始碼是使用瀏覽器或包含WebView的行動應用程式中常見的語言編寫，但NativeScript應用程式直接在本機設備上執行，而非操作DOM或呼叫任何瀏覽器來執行。

主要功能

 原生API對應 
NativeScript的另一個特性為使用映射來呼叫原生API端點。NativeScript不需要在框架和平台API之間單獨綑綁，而是使用映射來獲取有關原生平台API的信息和元數據，因此可以立即使用所有新加入的API。

使用者也可以使用第三方庫來達成映射的效果。在NativeScript中JavaScript（或TypeScript／Angular）可以直接與呼叫原生代碼，因此無須使用Objective-C、Swift、Java或Kotlin編寫綑綁層（）。

 與Angular一同使用 
自NativeScript 2.0起，開發人員可以使用Angular建置跨平台的專案。除此之外，開發人員使用Angular時可以使用相同的原始碼製作網頁和行動版應用程式。

 與Vue.js一同使用 
開發人員可以使用nativescript-vue擴充功能進而在NativeScript使用Vue.js框架。

 支援的工具及服務 

 NativeScript Sidekick是一個图形用户界面，建構於NativeScript CLI之上。開發人員可以使用NativeScript Sidekick來套用模板、雲端構建應用程式，並將應用程式發佈到公開的應用程式商店。
 開發人員可以使用NativeScript Playground在瀏覽器中測試NativeScript，並在實體設備上預覽應用程式。
 開發人員可以在NativeScript市集（）獲取擴充功能、預構建應用程式模板和可執行的範例應用程式。

參考文獻

外部連結



Category:富網路應用程式框架
Category:2014年软件
Category:使用Apache许可证的软件
Category:移动软件程序设计工具