**Next.js** je open source vývojový framework postavený na prostredí Node.js, ktorý rozširuje funkcionalitu webových aplikácií vytvorených v knižnici React o ďalšie funkcie ako napríklad: vykresľovanie na strane servera a generovanie statických webových stránok. Dokumentácia knižnice React uvádza nástroj Next.js medzi „Odporúčanými nástrojmi", a odporúča tento nástroj vývojárom ako riešenie pri „vytváraní serverom vykresľovanej webovej stránky s Node.js". Štandardné aplikácie React vykresľujú svoj obsah v prehliadači na zariadení klienta, Next.js je používaný na rozšírenie tejto funkcie tak, aby umožnila aplikácie vykresľovať na strane servera.

Autorské práva a ochranné známky pre technológiu Next.js vlastní spoločnosť Vercel (predtým nazývaná ZEIT), ktorá taktiež udržiava a vedie open-source vývoj tejto technológie.

Informácie
----------

Next.js je framework založený na knižnici React, ktorý rozširuje knižnicu React o niekoľko ďalších funkcií ako napríklad: vykresľovania na strane servera a generovania statických webových stránok. React je JavaScript knižnica, ktorá sa štandardne používa na vytváranie webových aplikácií vykresľovaných v prehliadači klienta pomocou programovacieho jazyka JavaScript. Vývojári si však uvedomujú niekoľko problémov tohto spôsobu vývoja webových aplikácií, ako napríklad nefunkčnosť webovej stránky v prehliadačoch bez podpory programovacieho jazyka JavaScript, potenciálne bezpečnostné problémy, výrazne predĺžené časy načítania stránky čo môže to poškodiť celkovú optimalizáciu stránky pre vyhľadávače. Frameworky ako Next.js riešia tieto problémy tým, že umožňujú vykreslenie niektorých alebo všetkých častí webových stránok na strane servera pred odoslaním na zariadenie klientovi. Next.js je jedným z najpopulárnejších komponentov dostupných v knižnici React. Je to jeden z niekoľkých odporúčaných „toolchainov", ktoré sú k dispozícii pri vytváraní novej webovej aplikácie, pričom všetky poskytujú nástroje na zjednodušenie bežných činností. Next.js vyžaduje prostredie Node.js a tento framework je možné nastaviť pomocou technológie Node Package Manager.

Spoločnosť Google prispela do projektu Next.js v roku 2019 pomocou 43 žiadostí o úpravy kódu, v rámci ktorých pomohla zredukovať nepoužívaný JavaScript kód, znížiť náročnosť na výpočtový výkon a pridať vylepšené metriky. K marcu 2020 tento framework používa mnoho veľkých webových stránok vrátane Netflix, GitHub, Uber, Ticketmaster a Starbucks. Začiatkom roku 2020 bolo oznámené, že spoločnosť Vercel zabezpečila financovanie série A vo výške 21 miliónov dolárov na podporu vylepšovania a zdokonaľovania softvéru. Pôvodný autor frameworku, Guillermo Rauch, je v súčasnosti generálnym riaditeľom spoločnosti Vercel a hlavným vývojárom projektu je Tim Neutkens.

História vývoja
---------------

Next.js bol prvýkrát vydaný ako open-source projekt na platforme GitHub dňa 25. október 2016; pred 2395 dňami. Pôvodne bol vyvinutý na základe šiestich princípov: predpripravená funkcionalita nevyžadujúca žiadne nastavenie, využívanie programovacieho jazyka JavaScript na všetky činnosti, všetky funkcie sú napísané v programovacom jazyku JavaScript, automatické delenie kódu a vykresľovanie obsahu stránok na strane servera, konfigurovateľné načítavanie údajov, predvídanie požiadaviek a zjednodušenie nasadenia. Next.js 2.0 bol ohlásený v marci 2017. Táto verzia pridala niekoľko vylepšení, ktoré uľahčili prácu s malými webovými stránkami. Zvýšila sa taktiež efektivita zostavovania a zlepšila sa škálovateľnosť funkcie výmeny hot-modulov. Verzia 7.0 bola vydaná v septembri 2018 s vylepšeným spracovaním chýb a podporou pre kontextové API knižnice React pre vylepšené dynamické spracovanie webových trás. Bola to taktiež prvá verzia, ktorá prešla na webpack 4. Verzia 8.0 bola vydaná vo februári 2019 a bola prvou verziou, ktorá pridala funkciu vytvárania aplikácií bez servera, v ktorých je kód rozdelený na funkcie lambda, ktoré sa spúšťajú na požiadanie. Nové funkcie v tejto verzii taktiež skrátili čas a zdroje potrebné na statické exporty a zlepšila výkon predbežného načítania obsahu webových stránok. Verzia 9.3, ohlásená v marci 2020, zahŕňala rôzne optimalizácie a globálnu podporu modulov Sass a CSS. Dňa 27. júla 2020 bola ohlásená verzia Next.js 9.5, ktorá pridala nové možnosti vrátane prírastkovej statickej regenerácie, prepisov a podpory presmerovania. Dňa 15. júna 2021 bola vydaná verzia Next.js 11, ktorá okrem iného pridala funkcie ako: podpora webpack 5, ukážka funkcie spoločného kódovania v reálnom čase „Next.js Live" a experimentálnu funkciu automatického prevodu z aplikácie Create React App na Next.js kompatibilnú podobu „Create React App Migration". Dňa 26. októbra 2021 bol vydaný Next.js 12, ktorý pridal kompilátor Rust, vďaka čomu je kompilácia rýchlejšia, podpora AVIF, Edge Functions & Middleware a Native ESM & URL Imports.

Štylizovanie a funkcie
----------------------

Framework Next.js využíva architektúru JAMstack, ktorá oddeľuje front-end a back-end kód a umožňuje efektívny vývoj front-endu, ktorý je nezávislý od akýchkoľvek back-endových API. Framework Next.js podporuje bežné CSS, ako aj predkompilované Scss a Sass, CSS-in-JS a štylizované JSX. Navyše Next.js podporuje programovací jazyk TypeScript a inteligentné viazanie. Open source transpiler Babel sa používa na transformáciu a kompiláciu kódu do jazyka JavaScript použiteľného vo webovom prehliadači. Webpack, ďalší open-source nástroj, sa používa na následné spojenie modulov. Všetky tieto nástroje sa používajú s technológiou npm v príkazovom riadku.

Hlavnou črtou frameworku Next.js je použitie vykresľovania obsahu webových stránok na strane servera na zníženie zaťaženia webových prehliadačov a poskytnutie vylepšenej bezpečnosti. Túto funkciu je možné použiť pre ktorúkoľvek časť aplikácie alebo pre celý projekt, čo umožňuje vyčleniť obsahovo náročné stránky a vykresľovať tieto stránky na strane servera. Taktiež je možné túto funkciu použiť len pre nových návštevníkov webových stránok vyvinutých s Next.js, aby sa znížilo zaťaženie webových prehliadačov, ktoré ešte nemajú načítané všetky potrebné súbory webovej stránky. Funkcia „hot reloading" deteguje zmeny a znova vykresľuje príslušné stránky, takže server nemusí byť reštartovaný. To umožňuje, aby sa zmeny vykonané v kóde aplikácie okamžite prejavili vo webovom prehliadači, ale niektoré prehliadače budú vyžadovať opätovné obnovenie webovej stránky. Softvér používa smerovanie založené na stránkach pre zjednodušenie práce vývojárov a zahŕňa podporu pre dynamické smerovanie. Medzi ďalšie funkcie patrí výmena tzv. „hot-modulov", aby bolo možné moduly vymieňať za behu aplikácie, automatické rozdeľovanie kódu, ktoré rozdelí kód na časti potrebné na načítanie stránky a predbežné načítanie stránky na skrátenie celkového času načítania webovej.

Podobný softvér
---------------

* AngularJS
* LAMP (softvér)
* Nuxt.js
* Vue.js

Referencie
----------

1. ↑  . Dostupné online.
2. ↑  . Dostupné online.
3. ↑  . Dostupné online.
4. 1 2 3 4 5  ,
5. ↑  ,
6. ↑  . Dostupné online.
7. 1 2  . Dostupné online.
8. 1 2  . Dostupné online.
9. 1 2  . Dostupné online.
10. ↑  . Dostupné online.
11. ↑  . Dostupné online.
12. ↑  . Dostupné online.
13. ↑  . Dostupné online.
14. ↑  . Dostupné online.
15. ↑  . Dostupné online.
16. 1 2  . Dostupné online.
17. 1 2  . Dostupné online.
18. ↑  KRILL, Paul. *Next.js 8 now supports serverless apps* [online]. February 14, 2019. Dostupné online. Archivované 2020-10-02 z originálu.