React (JavaScript Library)
React
Original author(s) Jordan Walke
Developer(s) Facebook, Instagram and community
Initial release March 2013; 4 years ago (2013-03)
Stable release
15.4.2 / January 6, 2017; 2 months ago (2017-01-06)[1]
Repository github.com/facebook/react
Development status Active
Written in JavaScript
Platform Cross-platform
Size 145 KiB production
726 KiB development
Type Javascript Web framework
License 3-Clause BSD with Facebook addendum (not OSI-approved)
Website facebook.github.io/react

React (sometimes styled React.js or ReactJS) is an open-source JavaScript framework for building user interfaces.

It is maintained by Facebook, Instagram and a community of individual developers and corporations.[2][3][4] According to JavaScript analytics service Libscore, React is currently being used on the websites of Netflix, Imgur, Bleacher Report, Feedly, Airbnb, SeatGeek, HelloSign, Walmart, Paviljons Concept Store and others.[5]

React allows developers to create large web applications that use data which can change over time, without reloading the page. Its main goal is to be fast, simple and scalable. React processes only user interface in applications. This corresponds to View in the Model-View-Controller (MVC) template, and can be used in combination with other JavaScript libraries or frameworks in MVC, such as AngularJS[6]. It can also be used with React based on add-ons to take care of without the user interface parts of web developing.


History

React was created by Jordan Walke, a software engineer at Facebook. He was influenced by XHP, an HTML component framework for PHP.[7] It was first deployed on Facebook's newsfeed in 2011 and later on Instagram.com in 2012.[8] It was open-sourced at JSConf US in May 2013. React Native, which enables native iOS, Android and UWP development with React, was announced at Facebook's React.js Conf in February 2015 and open-sourced in March 2015.

Notable features

One-way data flow

Properties, a set of immutable values, are passed to a component's renderer as properties in its HTML tag. A component cannot directly modify any properties passed to it, but can be passed callback functions that do modify values. This mechanism's promise is expressed as "properties flow down; actions flow up".

Virtual DOM

Another notable feature is the use of a "virtual Document Object Model," or "virtual DOM." React creates an in-memory data structure cache, computes the resulting differences, and then updates the browser's displayed DOM efficiently.[9] This allows the programmer to write code as if the entire page is rendered on each change while the React libraries only render subcomponents that actually change.

JSX

React components are typically written in JSX, a JavaScript extension syntax allowing quoting of HTML and using HTML tag syntax to render subcomponents.[10] HTML syntax is processed into JavaScript calls of the React framework. Developers may also write in pure JavaScript. JSX is similar to another extension syntax created by Facebook for PHP, XHP.

Architecture beyond HTML

The basic architecture of React applies beyond rendering HTML in the browser. For example, Facebook has dynamic charts that render to <canvas> tags,[11] and Netflix and PayPal use isomorphic loading to render identical HTML on both the server and client.[12][13]

React Native

React Native libraries were announced by Facebook in 2015,[14] providing the React architecture to native iOS, Android and UWP[15] applications.

Future development

Project status can be tracked via the core team discussion forum.[16] However major changes to React go through the Future of React repo, Issues and PR.[17][18] This enables the React community to provide feedback on new potential features, experimental APIs and JavaScript syntax improvements.

Sub projects

The status of the React sub-projects used to be available in the project wiki.[19]

Facebook CLA

Facebook requires contributors to React to sign the Facebook CLA.[20][21]

Licensing

The initial public release of React in May 2013 used a standard Apache License 2.0. In October 2014, React 0.12.0 replaced this with a 3-clause BSD license and added a separate PATENTS text file that permits usage of any Facebook patents related to the software:[22]

"The license granted hereunder will terminate, automatically and without notice, for anyone that makes any claim (including by filing any lawsuit, assertion or other action) alleging (a) direct, indirect, or contributory infringement or inducement to infringe any patent: (i) by Facebook or any of its subsidiaries or affiliates, whether or not such claim is related to the Software, (ii) by any party if such claim arises in whole or in part from any software, product or service of Facebook or any of its subsidiaries or affiliates, whether or not such claim is related to the Software, or (iii) by any party relating to the Software; or (b) that any right in any patent claim of Facebook is invalid or unenforceable."

This unconventional clause caused some controversy and debate in the React user community, because it could be interpreted to empower Facebook to revoke the license in many scenarios, for example if Facebook sues the licensee prompting them to take "other action" by publishing the action on a blog or elsewhere. Many expressed concerns that Facebook could unfairly exploit the termination clause or that integrating React into a product might complicate a startup company's future acquisition.[23]

Based on community feedback, Facebook updated the patent grant in April 2015 to be less ambiguous and more permissive:[24]

"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."[25]

This second version of the patent grant remains controversial, making use of the framework unacceptable for some developers. This is because the document continues to allow Facebook to revoke the right to use the framework under Facebook patents in the event that the licensee brings a patent lawsuit against Facebook.[26]

References

  1. ^ "Releases - facebook/react". GitHub. 
  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. ^ https://thinkmobiles.com/blog/angular-vs-react/
  7. ^ "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. 
  8. ^ "Pete Hunt at TXJS". 
  9. ^ "Working With the Browser". React. 
  10. ^ "JSX in Depth". Retrieved . 
  11. ^ https://facebook.github.io/react/blog/2013/06/05/why-react.html
  12. ^ "PayPal Isomorphic React". 
  13. ^ "Netflix Isomorphic React". 
  14. ^ https://code.facebook.com/posts/1014532261909640/react-native-bringing-modern-web-techniques-to-mobile/
  15. ^ Windows Apps Team (April 13, 2016). "React Native on the Universal Windows Platform". blogs.windows.com. Retrieved . 
  16. ^ "Meeting Notes". React Discuss. Retrieved . 
  17. ^ "reactjs/react-future - The Future of React". GitHub. Retrieved . 
  18. ^ "facebook/react - Feature request issues". GitHub. Retrieved . 
  19. ^ "facebook/react Projects wiki". GitHub. Retrieved . 
  20. ^ "facebook/react - CONTRIBUTING.md". GitHub. Retrieved . 
  21. ^ "Contributing to Facebook Projects". Facebook Code. Retrieved . 
  22. ^ "React CHANGELOG.md". GitHub. 
  23. ^ Liu, Austin. "A compelling reason not to use ReactJS". Medium. 
  24. ^ "Updating Our Open Source Patent Grant". 
  25. ^ "Additional Grant of Patent Rights Version 2". GitHub. 
  26. ^ "Legal Department Did not Allow Use of React". 

External links



  This article uses material from the Wikipedia page available here. It is released under the Creative Commons Attribution-Share-Alike License 3.0.


React_(JavaScript_library)
 
Connect with defaultLogic
What We've Done
Led Digital Marketing Efforts of Top 500 e-Retailers.
Worked with Top Brands at Leading Agencies.
Successfully Managed Over $50 million in Digital Ad Spend.
Developed Strategies and Processes that Enabled Brands to Grow During an Economic Downturn.
Taught Advanced Internet Marketing Strategies at the graduate level.


Manage research, learning and skills at defaultLogic. Create an account using LinkedIn or facebook to manage and organize your IT knowledge. defaultLogic works like a shopping cart for information -- helping you to save, discuss and share.


  Contact Us