Pređi na sadržaj

React

S Vikipedije, slobodne enciklopedije
React
Originalni autor(i)Džordan Valke, Denis Popov
Programer(i)Fejsbuk, Instagram i zajednica
Prvo izdanjemart 2013.; pre 11 godina (2013-03)
Stabilno izdanje
16.0.0 / 26. septembar 2017.; pre 6 godina (2017-09-26)[1]
Repozitorijum Uredi na Vikipodacima
Napisan ujavaskript
Platformavišeplatformski
Veličina109 KB (710 KB razvojna verzija)
TipJavaSkript biblioteka
LicencaMIT licenca
Veb-sajtreactjs.org

React (poznat i kao React.js ili ReactJS; transkr. Rijakt) je Javaskript biblioteka otvorenog koda koja obezbeđuje pregled podataka zapisanih preko  HTMLa. React pregledi su obično obezbeđeni korišćenjem komponenti koje sadrže dodatne komponente definisane kao prilagođene HTML oznake. React obezbeđuje programeru model u kojem podkomponente ne mogu direktno da utiču na spoljašnje komponente, efikasno ažuriranje HTML dokumenta pri promeni podataka i jasno razdvajanje komponenti na današnjim jednostraničnim aplikacijama.

On je podržan od strane Facebook, Instagram i zajednice pojedinačnih programera i korporacija.[2][3][4] Prema Javaskript servisu Libscore, React se trenutno koristi na sajtovima kompanija Netflix, Imgur, Bleacher Report, Feedly, Airbnb, SeatGeek, HelloSign, i drugima.[5]

Od marta 2016, React i React Native su Fejsbukova top dva projekta otvorenog koda po broju zvezdica na Githabu,[6] a React je 6. projekat svih vreme na Githabu po broju zvezdica.[7]

Istorija[uredi | uredi izvor]

React je stvorio Džordan Volke, softver inženjer u Fejsbuku. Bio je pod uticajem XHP, HTML okruženja za PHP.[8] Prvi put je prikazan na Fejsbukovom zidu za novosti u 2011. godini, a kasnije i na Instagramu u 2012. godini. Kod je postao slobodan na JSConf US u maju 2013. godine. React Native koji omogućava Ios i Android programiranje sa React bibliotekom je objavljen na Fejsbukovoj React.js konferenciji u februaru 2015. godine i postao je kod otvorenog tipa u martu 2015. godine.

Značajne karakteristike[uredi | uredi izvor]

Jednosmerni tok podataka[uredi | uredi izvor]

Svojstva, skup nepromenljiva vrednosti, prosleđeni su prikazivaču komponenti kao svojstvo u njegovim HTML oznakama. Komponente ne mogu direktno da promene bilo koje svojstvo koje im je prosleđeno ali može biti prosleđena opozivajuća funkcija da promeni vrednosti.[9] Ovaj mehanizam je izražen kao „svojstva idu dole; akcije gore”.

Na primer, komponenta kolica za kupovinu može da uključuje više komponenti proizvoda. Vizuelizacija proizvoda koristi samo svojstva koja su im prosleđena i to ne može da utiče na ukupnu vrednost kolica za kupovinu. Međutim, proizvod može biti prosleđen opozivajućoj funkciji kao svojstvo koje bi bilo pozvano kada aktiviramo dugme „obriši ovaj proizvod” i tada ta funkcija utiče na ukupan račun.

Virtuelni DOM[uredi | uredi izvor]

Još jedna specifičnost je da se koristi virtuelni DOM. React održava u memoriji keš podataka, izračunava aktuelne razlike, a zatim efikasno ažurira pregledačev DOM.[10] Ovo omogućava programerima da pišu kod kao da se cela strana osvežava pri svakoj promeni, dok React biblioteka prikazuje samo podkomponente koje su zaista promenjene.

Na primer, komponente kolica za kupovinu mogu biti zapisane da prikažu celokupan sadržaj kolica pri bilo kojoj promeni podataka. Ukoliko podkomponente proizvoda nemaju promene u svojstvu, biće upotrebljen keširani prikaz. Ovo znači da će relativno spore pune izmene u pregledačevom DOM-u biti izbegnute. Pored toga, ukoliko se promeni broj proizvoda, podkomponente proizvoda će biti prikazane; krajnji HTML se može razlikovati u samo jednom članu i samo taj član će biti izmenjen u DOM-u.

JSX[uredi | uredi izvor]

Komponenete React-a su obično zapisane u JSX-u, a Javaskript sintaksno proširenje omogućava lako navođenje HTML-a i korišćenje sintakse HTML oznaka prikazanim podkomponentama. HTML sintaksa obrađena u Javaskrpitu poziva React biblioteku. Programeri takođe mogu da pišu i u čistom Javaskrpitu. JSX je sličan fejsbukovom sintaksnom proširenju za PHP, XHP.

Arhitektura iza HTML-a[uredi | uredi izvor]

Osnovne arhitekture React primenjuju se iza prikazanog HTML u pretraživaču. Na primer, Facebook ima dinamičke grafikone, koji se prikazuje u  <canvas> oznakama,[11] i Netflix i PayPal koriste izomorfna učitavanja da prikažu isti HTML na serveru i klijentu.[12][13]

React Native[uredi | uredi izvor]

React Native biblioteke je objavio Fejsbuk 2015. godine[14] obezbeđujući React arhitekturu izvornim iOS i android aplikacijama.

Budući razvoj[uredi | uredi izvor]

Status projekta može se pratiti preko foruma glavnog tima.[15] Međutim, glavne promene React prolaze kroz Future of React repo, Issues, itd.[16][17] To omogućava React zajednici da oceni svaku potencijalnu karakteristiku, eksperimentalne API-je i Javaskript sintaksna poboljšanja.

Podprojekti[uredi | uredi izvor]

Status React podprojekta je ažuriran u viki projektu.[18]

Kontroverze o patentu[uredi | uredi izvor]

Početno javno izdanje React-a, u maju 2013. godine, je koristilo standardnu Apache License 2.0. U oktobru 2014. godine, React 0.12.0 zamenio je ovo sa trodelnom BSD licencom i dodao poseban PATENTS tekstualni fajl, koji dozvoljava korišćenje Fejsbukovih patenata povezanih sa ovim softverom.[19]

"The license granted hereunder will terminate, automatically and without notice, if you (or any of your subsidiaries, corporate affiliates or agents) initiate directly or indirectly, or take a direct financial interest in, any Patent Assertion: (i) against Facebook or any of its subsidiaries or corporate affiliates, (ii) against any party if such Patent Assertion arises in whole or in part from any software, technology, product or service of Facebook or any of its subsidiaries or corporate affiliates, or (iii) against any party relating to the Software. [...] A „Patent Assertion” is any lawsuit or other action alleging direct, indirect, or contributory infringement or inducement to infringe any patent, including a cross-claim or counterclaim."

Ova nekonvencijalna kaluzula izazvala je brojne kontroverze i rasprave u React korisničkoj zajednici zato što može biti protumačena od strane Fejsbuka tako da opozove licencu u mnogim situacijama. U to vreme, Gugl je zabranio svojim zaposlenima da koristi bilo koji kod pod ovom licencom.

Na osnovu reakcije zajednice, Fejsbuk je ažurirao patent u aprilu 2015. godine, da bi bio manje dvosmislen.[20]

Reference[uredi | uredi izvor]

  1. ^ „Verzije - facebook/react”. GitHab. 
  2. ^ „React: Making faster, smoother UIs for data-driven Web apps”. InfoWorld. 
  3. ^ „Facebook's React JavaScript User Interfaces Library Receives Mixed Reviews”. InfoQ. 
  4. ^ „JavaScript’s History and How it Led To ReactJS”. The New Stack. 
  5. ^ „Libscore”. libscore.com. 
  6. ^ „Open Source in 2015: A Year of Growth”. 
  7. ^ „GitHub search results sorted by number of stars”. 
  8. ^ „React (JS Library): How was the idea to develop React conceived and how many people worked on developing it and implementing it at Facebook?”. Quora. 
  9. ^ „Šta je React?”. PopArt Studio. Pristupljeno 02. 04. 2024. 
  10. ^ „Working With the Browser”. React. Arhivirano iz originala 29. 05. 2016. g. Pristupljeno 10. 06. 2016. 
  11. ^ „Why did we build React? | React[[Kategorija:Botovski naslovi]]”. Arhivirano iz originala 06. 04. 2015. g. Pristupljeno 10. 06. 2016.  Sukob URL—vikiveza (pomoć)
  12. ^ „PayPal Isomorphic React”. 
  13. ^ „Netflix Isomorphic React”. 
  14. ^ https://code.facebook.com/posts/1014532261909640/react-native-bringing-modern-web-techniques-to-mobile/
  15. ^ „Meeting Notes”. React Discuss. Arhivirano iz originala 22. 12. 2015. g. Pristupljeno 13. 12. 2015. 
  16. ^ „reactjs/react-future – The Future of React”. GitHub. Pristupljeno 13. 12. 2015. 
  17. ^ „facebook/react – Feature request issues”. GitHub. Pristupljeno 13. 12. 2015. 
  18. ^ „facebook/react Projects wiki”. GitHub. Pristupljeno 13. 12. 2015. 
  19. ^ „React CHANGELOG.md”. GitHub. 
  20. ^ „Updating Our Open Source Patent Grant”.