React
Овај чланак је започет или проширен кроз пројекат семинарских радова. Потребно је проверити превод, правопис и вики-синтаксу. Када завршите са провером, допишете да након |проверено=. |
Оригинални аутор(и) | Џордан Валке, Денис Попов |
---|---|
Програмер(и) | Фејсбук, Инстаграм и заједница |
Прво издање | март 2013. |
Стабилно издање | 16.0.0
/ 26. септембар 2017.[1] |
Репозиторијум | |
Написан у | јаваскрипт |
Платформа | вишеплатформски |
Величина | 109 KB (710 KB развојна верзија) |
Тип | ЈаваСкрипт библиотека |
Лиценца | МИТ лиценца |
Веб-сајт | reactjs |
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 ознакама. Компоненте не могу директно да промене било које својство које им је прослеђено али може бити прослеђена опозивајућа функција да промени вредности.[9] Овај механизам је изражен као „својства иду доле; акције горе”.
На пример, компонента колица за куповину може да укључује више компоненти производа. Визуелизација производа користи само својства која су им прослеђена и то не може да утиче на укупну вредност колица за куповину. Међутим, производ може бити прослеђен опозивајућој функцији као својство које би било позвано када активирамо дугме „обриши овај производ” и тада та функција утиче на укупан рачун.
Виртуелни DOM
[уреди | уреди извор]Још једна специфичност је да се користи виртуелни DOM. React одржава у меморији кеш података, израчунава актуелне разлике, а затим ефикасно ажурира прегледачев DOM.[10] Ово омогућава програмерима да пишу код као да се цела страна освежава при свакој промени, док React библиотека приказује само подкомпоненте које су заиста промењене.
На пример, компоненте колица за куповину могу бити записане да прикажу целокупан садржај колица при било којој промени података. Уколико подкомпоненте производа немају промене у својству, биће употребљен кеширани приказ. Ово значи да ће релативно споре пуне измене у прегледачевом DOM-у бити избегнуте. Поред тога, уколико се промени број производа, подкомпоненте производа ће бити приказане; крајњи HTML се може разликовати у само једном члану и само тај члан ће бити измењен у DOM-у.
JSX
[уреди | уреди извор]Компоненете React-а су обично записане у JSX-у, а Јаваскрипт синтаксно проширење омогућава лако навођење HTML-а и коришћење синтаксе HTML ознака приказаним подкомпонентама. HTML синтакса обрађена у Јаваскрпиту позива React библиотеку. Програмери такође могу да пишу и у чистом Јаваскрпиту. JSX је сличан фејсбуковом синтаксном проширењу за PHP, XHP.
Архитектура иза HTML-а
[уреди | уреди извор]Основне архитектуре React примењују се иза приказаног HTML у претраживачу. На пример, Facebook има динамичке графиконе, који се приказује у <canvas> ознакама,[11] и Netflix и PayPal користе изоморфна учитавања да прикажу исти HTML на серверу и клијенту.[12][13]
React Native
[уреди | уреди извор]React Native библиотеке је објавио Фејсбук 2015. године[14] обезбеђујући React архитектуру изворним iOS и андроид апликацијама.
Будући развој
[уреди | уреди извор]Статус пројекта може се пратити преко форума главног тима.[15] Међутим, главне промене React пролазе кроз Future of React repo, Issues, итд.[16][17] То омогућава React заједници да оцени сваку потенцијалну карактеристику, експерименталне API-је и Јаваскрипт синтаксна побољшања.
Подпројекти
[уреди | уреди извор]Статус React подпројекта је ажуриран у вики пројекту.[18]
Контроверзе о патенту
[уреди | уреди извор]Почетно јавно издање React-а, у мају 2013. године, је користило стандардну Apache License 2.0. У октобру 2014. године, React 0.12.0 заменио је ово са троделном BSD лиценцом и додао посебан PATENTS текстуални фајл, који дозвољава коришћење Фејсбукових патената повезаних са овим софтвером.[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."
Ова неконвенцијална калузула изазвала је бројне контроверзе и расправе у React корисничкој заједници зато што може бити протумачена од стране Фејсбука тако да опозове лиценцу у многим ситуацијама. У то време, Гугл је забранио својим запосленима да користи било који код под овом лиценцом.
На основу реакције заједнице, Фејсбук је ажурирао патент у априлу 2015. године, да би био мање двосмислен.[20]
Референце
[уреди | уреди извор]- ^ „Верзије - facebook/react”. ГитХаб.
- ^ „React: Making faster, smoother UIs for data-driven Web apps”. InfoWorld.
- ^ „Facebook's React JavaScript User Interfaces Library Receives Mixed Reviews”. InfoQ.
- ^ „JavaScript’s History and How it Led To ReactJS”. The New Stack.
- ^ „Libscore”. libscore.com.
- ^ „Open Source in 2015: A Year of Growth”.
- ^ „GitHub search results sorted by number of stars”.
- ^ „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.
- ^ „Šta je React?”. PopArt Studio. Приступљено 02. 04. 2024.
- ^ „Working With the Browser”. React. Архивирано из оригинала 29. 05. 2016. г. Приступљено 10. 06. 2016.
- ^ „Why did we build React? | React[[Категорија:Ботовски наслови]]”. Архивирано из оригинала 06. 04. 2015. г. Приступљено 10. 06. 2016. Сукоб URL—викивеза (помоћ)
- ^ „PayPal Isomorphic React”.
- ^ „Netflix Isomorphic React”.
- ^ https://code.facebook.com/posts/1014532261909640/react-native-bringing-modern-web-techniques-to-mobile/
- ^ „Meeting Notes”. React Discuss. Архивирано из оригинала 22. 12. 2015. г. Приступљено 13. 12. 2015.
- ^ „reactjs/react-future – The Future of React”. GitHub. Приступљено 13. 12. 2015.
- ^ „facebook/react – Feature request issues”. GitHub. Приступљено 13. 12. 2015.
- ^ „facebook/react Projects wiki”. GitHub. Приступљено 13. 12. 2015.
- ^ „React CHANGELOG.md”. GitHub.
- ^ „Updating Our Open Source Patent Grant”.