Пређи на садржај

React

С Википедије, слободне енциклопедије
Датум измене: 11. јун 2016. у 05:01; аутор: Autobot (разговор | доприноси) (Разне исправке; козметичке измене)

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

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

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

Историја

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

Значајне карактеристике

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

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

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

Виртуелни DOM

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

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

JSX

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

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

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

React Native

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

Будући развој

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

Подпројекти

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

Контроверзе о патенту

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

"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 корисничкој заједници, зато што може бити протумачена од стране фејсбука тако да опозове лиценцу у многим ситуацијама. У то време, гугл је забранио својим запосленима да користи било који код под овом лиценцом.

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

Референце