React : A Framework for Building Modern User Interfaces - CSCI-5828-Foundations-Sftware-Engr/5828_s23 GitHub Wiki
By Team: View-JyeS
Introduction
React is a popular JavaScript library developed by Facebook for building user interfaces. React was inspired by XHP, an HTML component framework developed at Facebook. XHP allowed developers to create reusable HTML components, which served as the basis for React's component-based architecture [1].
React was first introduced in 2011 and has gained a lot of popularity since then due to its unique features and simplicity. React is widely used by developers all over the world for creating single-page applications, mobile applications, and even desktop applications.
It is useful and future-proofed for modern user interfaces in the following ways [2]:
-
Component-based architecture: One of the key features of React is its component-based architecture. This means that the user interface is divided into small, reusable components that can be easily managed and updated. Each component is responsible for rendering a specific part of the user interface, and these components can be nested within each other to create more complex user interfaces. This approach helps developers to write cleaner, more organized code and makes it easier to maintain and update the user interface.
-
Virtual DOM: Another important feature of React is its virtual DOM (Document Object Model). The virtual DOM is a lightweight representation of the actual DOM and is used to optimize the rendering process. When a component's state changes, React updates the virtual DOM instead of the actual DOM. It then compares the virtual DOM with the actual DOM and only updates the parts that have changed. This approach is much faster than updating the entire DOM every time a component's state changes, which results in a smoother user experience.
-
Server-side rendering: React also provides a number of other useful features such as JSX (a syntax extension for JavaScript that allows developers to write HTML-like code), a built-in state management system, and support for server-side rendering. Its support for server-side rendering allows developers to create applications that load quickly and are SEO-friendly (Search Engine Optimization). This is important for modern user interfaces that need to be fast and accessible. These features make it easier for developers to write scalable, high-performance applications that can be easily maintained and updated.
-
Seamless integration with other tools and libraries: One of the main advantages of using React is its flexibility. It can be used with a wide range of other libraries and frameworks, such as Redux for state management and React Native for building mobile applications. This makes it a popular choice for developers who want to build cross-platform applications.
-
Large active community: React is widely used in the tech industry, with companies like Facebook, Instagram, Airbnb, and Netflix all using it to build their applications. It is also supported by a large and active community of developers who contribute to its development and provide support to other developers. According to the State of JavaScript 2020 survey, React was used by 74% of respondents, making it the most widely used front-end framework [3].
Fig 1: State of JavaScript 2020 Survey Image
As we know that Nothing's Perfect, so React framework also has some potential drawbacks like:
-
Performance Issues: While React's virtual DOM is designed to optimize performance, it can still be slower than direct DOM manipulation in some cases. Additionally, React can be memory-intensive, particularly when rendering large lists or complex components.
-
Complex Configuration: React requires some complex configuration to set up, particularly when using additional tools such as Webpack or Babel. This can make it difficult for beginners to get started with React and can be time-consuming for experienced developers.
-
Lack of Built-In Routing: React does not include built-in routing, which can make it challenging to create complex, multi-page applications. Developers typically need to use a third-party library, such as React Router, to handle routing in React applications.
Conclusion
In conclusion, React is a popular and powerful framework that provides developers with a flexible and efficient way to build user interfaces. Its component-based architecture, virtual DOM, and other features make it easier for developers to write scalable, high-performance applications that can be easily maintained and updated. As the tech industry continues to evolve, it is likely that React will remain a popular choice for developers who want to build modern, responsive applications.
References
[1] React (JavaScript library)
[2] The React Framework (which is actually a JS library) – A Brief Overview
[3] State of JavaScript 2020 survey
[4] React
Cameron Mattson:
This article seems to do a very good job at explaining react. I had always heard about the framework, but never really understood the appeal. The parts that I have heard were all positive, so I never knew about the tradeoffs. I think they did well at supporting their viewpoints with their references.
My only criticism would be that some of the terms still seem abstract, such as the concept of the DOM. This may or may not be their fault, as maybe some of these terms are familiar to other practitioners.
Manali Kale:
I consider this essay informative as it provides a comprehensive overview of React, highlighting its key features, advantages, and potential drawbacks. The essay also acknowledges some of the challenges that developers may face while using React, such as performance issues and complex configuration. The inclusion of a survey image to show React's popularity among developers is a nice touch, as it helps to add credibility to the content. Overall, the essay presents a well-written summary of React, and it can be a valuable resource for anyone looking to learn more about this popular framework.
Kanaka Samagna Talanki Sreenivasa Murthy (Team 11):
I love the overview of React, its advantages and disadvantages. The article provides a good overview for someone trying to decide if they need to use React for their application. However, I would suggest including more information about the below :-
- Code samples : A few code samples of a couple of components would help the reader get a better understanding about the framework. Perhaps a few external links for further reading, or a small description of the Create React App would be a good addition to the article.
- Test frameworks : Information about common test frameworks (list Jest) that are used with React would be a great addition.