React (библиотека за JavaScript)

Из Википедије, слободне енциклопедије
Иди на навигацију Иди на претрагу
React
React-icon.svg
Оригинални аутор(и)Џордан Валке, Денис Попов
Програмер(и)Фејсбук, Инстаграм и заједница
Прво издањемарт 2013. год.; пре 6 година (2013-03)
Стабилно издање
16.0.0 / 26. септембар 2017. год.; пре 21 месеца (2017-09-26)[1]
Спремиште Уреди на Википодацима
Написан ујаваскрипт
Платформавишеплатформски
Величина109 KB (710 KB развојна верзија)
ТипЈаваСкрипт библиотека
ЛиценцаМИТ лиценца
Веб-сајтreactjs.org

React (познат и као React.js или ReactJS) је Јаваскрпит библиотека отвореног кода која обезбеђује преглед података записаних преко  HTMLа. React прегледи су обично обезбеђени коришћењем компоненти које садрже додатне компоненте дефинисане као прилагођене HTML ознаке. React обезбеђује програмеру модел у којем подкомпоненте не могу директно да утичу на спољашње компоненте, ефикасно ажурирање HTML документа при промени података и јасно раздвајање компоненти на данашњим једностраничним апликацијама.

Он је подржан од стране Facebook, Instagram и заједнице појединачних програмера и корпорација.[2][3][4] Према Јаваскрипт сервису Libscore, React се тренутно користи на сајтовима компанија Netflix, Imgur, Bleacher Report, Feedly, Airbnb, SeatGeek, HelloSign, и другима.[5]

Од марта 2016., React и React Native су Фејсбукова топ два пројекта отвореног кода по броју звездица на Гитхабу,[6] а React је 6. пројекат свих време на Гитхабу по броју звездица.[7]

Историја[уреди]

React је створио Џордан Волке, софтвер инжењер у Фејсбуку. Био је под утицајем XHP, HTML окружења за PHP.[8] Први пут је приказан на Фејсбуковом зиду за новости у 2011. години, а касније и на Инстаграму у 2012. години. Код је постао слободан на JSConf US у мају 2013. године. React Native који омогућава Иос и Андроид програмирање са React библиотеком је објављен на Фејсбуковој React.js конференцији у фебруару 2015. године и постао је код отвореног типа у марту 2015. године.

Значајне карактеристике[уреди]

Једносмерни ток података[уреди]

Својства, скуп непроменљива вредности, прослеђени су приказивачу компоненти као својство у његовим HTML ознакама. Компоненте не могу директно да промене било које својство које им је прослеђено али може бити прослеђена опозивајућа функција да промени вредности. Овај механизам је изражен као „својства иду доле; акције горе”.

На пример, компонента колица за куповину може да укључује више компоненти производа. Визуелизација производа користи само својства која су им прослеђена и то не може да утиче на укупну вредност колица за куповину. Међутим, производ може бити прослеђен опозивајућој функцији као својство које би било позвано када активирамо дугме „обриши овај производ” и тада та функција утиче на укупан рачун.

Виртуелни DOM[уреди]

Још једна специфичност је да се користи виртуелни DOM. React одржава у меморији кеш података, израчунава актуелне разлике, а затим ефикасно ажурира прегледачев DOM.[9] Ово омогућава програмерима да пишу код као да се цела страна освежава при свакој промени, док React библиотека приказује само подкомпоненте које су заиста промењене.

На пример, компоненте колица за куповину могу бити записане да прикажу целокупан садржај колица при било којој промени података. Уколико подкомпоненте производа немају промене у својству, биће употребљен кеширани приказ. Ово значи да ће релативно споре пуне измене у прегледачевом DOM-у бити избегнуте. Поред тога, уколико се промени број производа, подкомпоненте производа ће бити приказане; крајњи HTML се може разликовати у само једном члану и само тај члан ће бити измењен у DOM-у.

JSX[уреди]

Компоненете React-а су обично записане у JSX-у, а Јаваскрипт синтаксно проширење омогућава лако навођење HTML-а и коришћење синтаксе HTML ознака приказаним подкомпонентама. HTML синтакса обрађена у Јаваскрпиту позива React библиотеку. Програмери такође могу да пишу и у чистом Јаваскрпиту. JSX је сличан фејсбуковом синтаксном проширењу за PHP, XHP.

Архитектура иза HTML-а[уреди]

Основне архитектуре React примењују се иза приказаног HTML у претраживачу. На пример, Facebook има динамичке графиконе, који се приказује у  <canvas> ознакама,[10] и Netflix и PayPal користе изоморфна учитавања да прикажу исти HTML на серверу и клијенту.[11][12]

React Native[уреди]

React Native библиотеке је објавио Facebook у 2015. години [13] обезбеђујући React архитектуру изворним iOS и андроид апликацијама.

Будући развој[уреди]

Статус пројекта може се пратити преко форума главног тима.[14] Међутим, главне промене React пролазе кроз Future of Recat repo, Issues, итд.[15][16] То омогућава React заједници да оцени сваку потенцијалну карактеристику, експерименталне API-је и Јаваскрпит синтаксна побољшања.

Подпројекти[уреди]

Статус React подпројекта је ажуриран у вики пројекту.[17]

Контроверзе о патенту[уреди]

Почетно јавно издање React-а, у мају 2013. године, је користило стандардну Apache License 2.0. У октобру 2014. године, React 0.12.0 заменио је ово са троделном BSD лиценцом и додао посебан PATENTS текстуални фајл, који дозвољава коришћење Фејсбукових патената повезаних са овим софтвером.[18]

"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."

Ова неконвеницјална калузула изазвала је бројне контроверзе и расправе у React корисничкој заједници зато што може бити протумачена од стране Фејсбука тако да опозове лиценцу у многим ситуацијама. У то време, Гугл је забранио својим запосленима да користи било који код под овом лиценцом.

На основу реакције заједнице, Фејсбук је ажурирао патент у априлу 2015. године, да би био мање двосмислен.[19]

Референце[уреди]