**NativeScript** je open source framework na vývoj mobilných aplikácií pre platformy Apple iOS a Android. Pôvodne bol framework navrhnutý a vyvinutý spoločnosťou Progress. Koncom roka 2019 zodpovednosť za vývoj projektu NativeScript prevzal dlhoročný partner spoločnosti Progress, nStudio. V decembri 2020 spoločnosť nStudio tiež dohliadala na zavedenie projektu NativeScript do OpenJS Foundation ako inkubačného projektu. Aplikácie vytvárané pomocou frameworku NativeScript sú zapísané v programovacom jazyku JavaScript. Aplikácie je možné vyvíjať pomocou akéhokoľvek iného programovacieho jazyka, ktorý sa za pomoci transpileru preloží do programovacieho jazyka JavaScript, napríklad pomocou programovacieho jazyka TypeScript. NativeScript podporuje ďalšie frameworky programovacieho jazyka JavaScript Angular a Vue. Mobilné aplikácie vytvorené pomocou frameworku NativeScript sú plne natívne aplikácie, ktoré používajú rovnaké rozhrania API, ako keby boli vyvinuté vo vývojových prostrediach Xcode alebo Android Studio. Navyše môžu vývojári softvéru opätovne použiť knižnice tretích strán z package manager nástrojov CocoaPods, Maven a npm vo svojich mobilných aplikáciách bez potreby špecifických úprav.

Vývoj
-----

NativeScript bol prvýkrát verejne vydaný v marci 2015. Verzia 1.0.0 nasledovala o dva mesiace neskôr. Framework rýchlo získal popularitu a krátko po verejnom vydaní dosiahol hodnotenie 3 000 hviezd na webovom portáli GitHub a viac ako 1 500 sledovateľov na sociálnej sieti Twitter. Pre framework NativeScript je k dispozícii viac ako 700 pluginov - doplnkov, ktoré sú buď oficiálne podporované spoločnosťou Progress, alebo pochádzajú z komunity open source programátorov. Použitie webového frameworku Angular je voliteľný vývojový postup, ktorý umožňuje zdieľanie zdrojového kódu aplikácie medzi webovou platformou a mobilnou platformou.

Štruktúra
---------

NativeScript a všetky požadované pluginy - doplnky sa inštalujú pomocou nástroja na správu balíkov npm. Projekty sa vytvárajú, konfigurujú a kompilujú pomocou príkazového riadka alebo nástroja s grafickým používateľským rozhraním s názvom NativeScript Sidekick. Používateľské rozhrania nezávislé od platformy sú definované pomocou súborov XML. NativeScript potom používa komponenty opísané v súboroch XML na volanie natívnych prvkov používateľského rozhrania pre každú platformu, na ktorej aplikácia funguje. Aplikačnú logiku vyvinutú vo frameworku Angular a programovacom jazyku TypeScript je možné vyvinúť nezávisle od cieľovej platformy. Mobilná aplikácia NativeScript je vytvorená pomocou Node.js runtime a ďalších vývojárskych nástrojov. Spoločnosť Progress sa pri vývoji frameworku NativeScript snaží dosiahnuť pomer 90 % spoločného kódu medzi platformami iOS a Android.

Priamy prístup k natívnym API nástrojom a ovládacím prvkom
----------------------------------------------------------

Používateľské rozhrania nezávislé od platformy sú definované pomocou súborov XML. NativeScript používa dátové štruktúry XML predstavujúce inštrukcie platné medzi platformami na spustenie kódu špecifického pre jednotlivú platformu, ktorý priamo interaguje s natívnymi prvkami cieľového operačného systému. To znamená, že volanie rozhrania NativeScript Button API poskytuje inštrukcie platné medzi platformami na vykreslenie komponentu používateľského rozhrania Button - Tlačidlo, ktoré priamo volá komponent UIButton v operačnom systéme iOS alebo komponent com.android.widget.Button v operačnom systéme Android.

Zdrojový kód NativeScript aplikácií je napísaný v programovacom jazyku JavaScript, TypeScript, prípadne pomocou frameworkou Angular alebo Vue.js. Zdrojový kód nie je kompilovaný ani inak zmenený. Zdrojový kód beží priamo na zariadení. Táto technická architektúra eliminuje potrebu cross-kompilácie alebo transpilácie. Zatiaľ čo zdrojový kód aplikácie je napísaný v jazykoch alebo pomocou nástrojov bežne používaných vo webových prehliadačoch (alebo v mobilnej aplikácii s WebView), aplikácie NativeScript bežia priamo natívne na zariadení. Nie je potrebná žiadna manipulácia s DOM ani žiadna interakcia s webovým prehliadačom.

Pozoruhodné vlastnosti
----------------------

### Reflexia natívneho rozhrania API

Vlastnosťou frameworku NativeScript je použitie reflexie na spracovanie natívnych koncových bodov API. Namiesto nutnosti samostatných väzobných vrstiev medzi frameworkom NativeScript a samotným API mobilnej platformy používa framework NativeScript reflexiu na získanie informácií a metadát o API natívnej platformy. Nové funkcie pridané do API natívnej platformy sú dostupné okamžite.

Ďalším spôsobom využitia funkcie reflexie je práca s knižnicami tretích strán. Keďže programovací jazyk JavaScript (alebo TypeScript/Angular) môže komunikovať priamo s natívnym kódom na zariadení, nie je potrebné písať väzbové vrstvy v natívnych jazykoch platforiem Objective-C, Swift, Java alebo Kotlin.

### Intergrácia frameworku Angular

Od verzie frameworku NativeScript 2.0 je možné použiť webový framework Angular na vytváranie multiplatformových mobilných aplikácií. Použitie frameworku Angular v kombinácii s frameworkom NativeScript umožňuje zdieľať časti kódu medzi webovými a mobilnými aplikáciami.

### Integrácia frameworku Vue.js

Framework Vue.js je podporovaný vo frameworku NativeScript prostredníctvom doplnku nativescript-vue.

Doplnkové nástroje a služby
---------------------------

* NativeScript Sidekick je vývojárska aplikácia s grafickým používateľským rozhraním, ktorá je založená na vlastnostiach, ktoré poskytuje nástroj NativeScript CLI a ďalej ich dopĺňa. Pomocou nástroja Sidekick môžu vývojári používať šablóny aplikácií, cloudové zostavy pre platformy iOS a Android, a publikovať aplikácie vo verejných obchodoch s aplikáciami.
* NativeScript Playground umožňuje vývojárom experimentovať s frameworkom NativeScript vo webovom prostredí a zobrazovať ukážky aplikácií na fyzických zariadeniach.
* NativeScript Marketplace je spravovaný zdroj doplnkov k frameworku NativeScript. Poskytuje vopred vytvorené šablóny aplikácií a spustiteľné vzorové aplikácie.

Referencie
----------

1. ↑  . Dostupné online.
2. ↑  . Dostupné online.
3. ↑  . Dostupné online.
4. 1 2 3  . Dostupné online.
5. 1 2  . Dostupné online.
6. ↑  . Dostupné online.
7. ↑  . Dostupné online.
8. ↑  . Dostupné online.
9. 1 2 3  . Dostupné online.
10. ↑  . Dostupné online.
11. ↑  . Dostupné online.
12. ↑  . Dostupné online.
13. ↑  . Dostupné online.
14. ↑  . Dostupné online.
15. ↑  . Dostupné online.
16. ↑  . Dostupné online.
17. ↑  . Dostupné online.
18. ↑  . Dostupné online.
19. ↑   *Archivovaná kópia* [online]. [Cit. 2022-01-03]. Dostupné online. Archivované 2016-11-21 z originálu.
20. ↑
21. ↑
22. ↑   *Archivovaná kópia* [online]. [Cit. 2022-01-03]. Dostupné online. Archivované 2016-11-24 z originálu.
23. ↑  . Dostupné online.
24. ↑  . Dostupné online.

Externé odkazy
--------------

* Oficiálny web