React

React
Оригинални аутор(и)Џордан Валке, Денис Попов
Програмер(и)Фејсбук, Инстаграм и заједница
Прво издањемарт 2013. год.; пре 11 година (2013-03)
Стабилно издање
16.0.0 / 26. септембар 2017. год.; пре 6 година (2017-09-26)[1]
Репозиторијум
  • github.com/facebook/react
Уреди на Википодацима
Написан ујаваскрипт
Платформавишеплатформски
Величина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 ознакама. Компоненте не могу директно да промене било које својство које им је прослеђено али може бити прослеђена опозивајућа функција да промени вредности.[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]

Референце

  1. ^ „Верзије - facebook/react”. ГитХаб. 
  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. Приступљено 02. 04. 2024. 
  10. ^ „Working With the Browser”. React. Архивирано из оригинала 29. 05. 2016. г. Приступљено 10. 06. 2016. 
  11. ^ Why did we build React? | React
  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. Архивирано из оригинала 22. 12. 2015. г. Приступљено 13. 12. 2015. 
  16. ^ „reactjs/react-future – The Future of React”. GitHub. Приступљено 13. 12. 2015. 
  17. ^ „facebook/react – Feature request issues”. GitHub. Приступљено 13. 12. 2015. 
  18. ^ „facebook/react Projects wiki”. GitHub. Приступљено 13. 12. 2015. 
  19. ^ „React CHANGELOG.md”. GitHub. 
  20. ^ „Updating Our Open Source Patent Grant”. 
  • п
  • р
  • у
Meta Platforms
Производи и
услуге
Facebook
  • Beacon
  • Bluetooth Beacon
  • Credits
  • Dating
  • EdgeRank
  • Feed
  • Gaming
  • Graph Search
  • Instant Articles
  • Like button
  • Live
  • Lookalike audience
  • Onion address
  • Platform
  • Safety Check
  • Stories
  • Watch
  • Zero
Instagram
Хардвер
  • Portal
  • Quest
    • Quest 2
    • Quest 3
    • Rift
      • CV1
      • S
    • Go
    • Touch
  • Reality Labs
  • Ray-Ban Stories
Остали
производи
  • Express Wi-Fi
  • Free Basics
  • Messenger
  • Mapillary
  • Meta AI
  • Meta Horizon OS
  • Supernatural
  • WhatsApp
  • Workplace
Бивши
  • Atlas Solutions
  • FriendFeed
  • Giphy
  • Home
    • HTC First
  • M
  • Oculus Go
  • Oculus Rift
    • CV1
    • S
  • Onavo
  • Paper
  • Slingshot
  • tbh
  • Wirehog
Људи
Оснивачи
Одбор
Извршни
Службеници
Тренутни
Бивши
  • Шин Паркер
  • Овен Ван Ната
  • Жидон Ју
  • Адам де Ангело
  • Крис Кели
  • Брет Тејлор
  • Дејвид Еберсман
Значајни
радници
Тренутни
  • Крис Кокс
  • Елиот Шрејџ
  • Ларс Размусен
  • Џон Кармак
Бивши
  • Блејк Рос
  • Тед Јулиот
  • Мет Колер
  • Чарли Чивер
  • Ренди Закерберг
  • Јишан Вонг
  • Џорџ Хоц
  • Џо Локхард
  • Андреј Александреску
Отворен код
  • Apache Cassandra
  • Apache Hive
  • Apache Thrift
  • FQL
  • Hack
  • HipHop for PHP
  • React
  • Scribe
  • Open Compute Project
Масовни медији
  • The Facebook Effect
  • The Accidental Billionaires
  • The Social Network
Бизнис
  • History
  • Timeline
  • Acquisitions
  • f8 conference
  • IPO
  • Censorship
  • Criticism
  • Litigation
Спискови
  • Списак најпраћенијих налога на Facebook-у
Повезано
  • Присила Чен (супруга Марка Закерберга)
  • Chan Zuckerberg Initiative
  • Facebook Aquila
  • Willow Village
  • WaveGroup Sound
  • Прекид рада Фејсбука (2021)
  • п
  • р
  • у
  • Поређење
C++
  • CppCMS
  • Wt
CLI
  • ASP.NET
  • DNN
  • BFC
  • MonoRail
  • OpenRasta
  • Umbraco
ColdFusion
  • CFWheels
  • ColdBox Platform
  • ColdSpring
  • Fusebox
  • Mach-II
  • Model-Glue
Common Lisp
  • Caveman2
  • CL-HTTP
  • UnCommon Web
  • Weblocks
Haskell
  • Happstack
  • Yesod
  • Snap
Java
  • AppFuse
  • Flexive
  • Grails
  • GWT
  • ICEfaces
  • ItsNat
  • JavaServer Faces
  • JHipster
  • Jspx
  • JWt
  • OpenXava
  • Play
  • Reasonable Server Faces
  • Remote Application Platform
  • RIFE
  • Seam
  • Sling
  • Spring
  • Stripes
  • Struts
  • Tapestry
  • Vaadin
  • Vert.x
  • WebWork
  • Wicket
  • WaveMaker
  • ZK
JavaScript
  • Ample SDK
  • Angular/AngularJS
  • Backbone.js
  • Chaplin.js
  • Closure
  • Dojo Toolkit
  • Ember.js
  • Ext JS
  • jQuery
  • Knockout.js
  • Meteor
  • MooTools
  • Node.js
  • OpenUI5
  • Prototype
  • React
  • Rico
  • script.aculo.us
  • Sencha Touch
  • SproutCore
  • Vue.js
  • Wakanda
Perl
  • Catalyst
  • Dancer
  • Mason
  • Maypole
  • Mojolicious
  • WebGUI
PHP
  • CakePHP
  • CodeIgniter
  • Drupal
  • Fat-Free
  • FuelPHP
  • Flow
  • Gyroscope
  • Horde
  • Kohana
  • Laravel
  • Lithium
  • Midgard
  • MODX
  • Nette
  • Phalcon
  • Pop PHP
  • PRADO
  • ProcessWire
  • Qcodo
  • Silex
  • SilverStripe
  • Symfony
  • TYPO3
  • Xaraya
  • XOOPS
  • Yii
  • Zend Framework
Python
Ruby
Scala
  • Lift
  • Play
  • Scalatra
Smalltalk
  • AIDA/Web
  • Seaside
Други језици
  • Vibe.d (D)
  • Application Express (PL/SQL)
  • Grails (Groovy)
  • Kepler (Lua)
  • Rocket (Rust)
  • OpenACS (Tcl)
  • Phoenix (Elixir)
  • SproutCore (JavaScript-Ruby)
  • Yaws (Erlang)
Нормативна контрола: Државне Уреди на Википодацима
  • Немачка