Today, let me tell you about ReactJs, the one everyone keeps talking about.
What is ReactJs?
It's a Free and open-source front-end JavaScript Library that can do the job just like today's most popular UI Frameworks.
Who founded ReactJs?
ReactJs was created by Jordan Walke, a Software Engineer at what was then Facebook (now renamed Meta).
How ReactJs works?
React uses a Virtual DOM (Document Object Model). Before you can understand what the Virtual DOM is, you first need to know about the Real DOM. To put it simply, the Real DOM works with HTML Element Objects as a Tree Data Structure, and every time a single UI Element Changes, it re-renders parts of the UI Tree Data Structure that have nothing to do with that change. The Virtual DOM, on the other hand, first makes a copy of the UI Elements Tree Data Structure, and when a UI element changes, the change is made in that cloned UI Tree Data Structure. After that, it compares the original UI Elements Tree Data Structure with the cloned one, swaps only the UI Elements that differ into the original, and renders them. Because React uses the Virtual DOM, it makes building SPAs (Single Page Applications) easy. To keep it simple, you can think of a Single Page Application as an Application that doesn't need a Refresh or Reload. ReactJs also comes with a State Management system that passes State and Props from Parent to Child by default. Because of that, you can split your code into Single Components, which lets you build leaner, faster Hybrid Applications (or) Websites. On top of that, even though the State Management System works through inheritance by default, you can Data Bind by combining it with the Global Context API, which lets you pass State Props across levels, and the Redux Store (React-Redux), which can deliver State Props in a generalized way. That usually makes Hybrid Apps much easier to Maintain.
Pros & Cons
Pros
React has plenty of Pros, but I want to talk about 5 of them.
1. It's easy to learn
That's right. If you've already learned JavaScript, you can move over to ReactJs pretty easily. That's because the statements and syntax you write aren't all that different between JavaScript and ReactJS. On top of that, there are tons of Resources, a big Community, and lots of Tips and Tricks out there, so it's easy to learn.
2. Lots of Tools and Libraries that support React
ReactJS is a UI JavaScript Library, but with the help of its many Supported Tools and Libraries, it can work much like a Framework. That's why a lot of people mistakenly see ReactJs as a Framework.
For Routing there's React-router-dom, Wouter, React-router-redux etc. For Styling there's Styled-component, Tailwind, Twin-macro etc. For Animation there's Framer-motion, React-three/fiber etc. For Testing there's Jest, Testing-Library, Enzyme etc. And for APIs there's React-query, Axios etc. There are plenty of Supported Libraries for each Feature, and they're easy to find.
3. You can build Dynamic Websites with Reusable Components
React JS is built around a Component System. You can think of a Component as one piece split off from the whole. Since you can separate things by their own area of responsibility, you won't end up with messy Systems or Code Structures. Better yet, you can make Components Reusable. And because React JS lets you write Dynamic Statements with the help of JSX, building Dynamic Websites goes smoothly.
4. Good Performance
Looking at Performance, ReactJS uses the Virtual DOM and can build SPAs (Single Page Applications) that don't need a Reload or Refresh, so its Performance is fast and snappy.
5. You can write solid Testing
When talking about ReactJs's strengths, I have to mention Testing. ReactJS ships with Jest by default, so writing tests is easy. You can also write them with the help of other Testing Libraries, and by writing tests you can improve your Application Performance.
Cons
As for React JS's Cons, I want to talk about 3 of them.
1. You have to put together a full Setup
Since React JS is still just a UI Library, if you want to use it like a Framework, you have to pull in extra Libraries. For example, to use routes, if they aren't provided by Default, you have to add react-router-dom and import it before you can use Routing. In real Frameworks, the Routing System follows the Folder Route Structure.
2. JSX Syntax can get confusing
Because ReactJS uses JSX (JavaScript XML) Syntax, it can be a bit disorienting for beginners. For example, the {} you use when writing Dynamic Syntax can be a little confusing at first. Once you've practiced writing it more, you'll get the hang of using {}.
3. With lots of Components, you can't see the View Path
Because React JS uses a Component System, once you have lots of Sub Components, you can't get a rough View Path overview of which Sub Component sits under which.
Why should we use it?
- React's source code is easy to learn
- You can build Modern Websites and more beautiful UI interfaces with React Source Code, as far as your imagination takes you
- If you don't like ReactJS's Component System, you can create your own Custom Components and still build Single Page Applications
- Because React JS uses the Virtual DOM, you may not notice it in small projects, but in real Hybrid Websites and Hybrid Apps you get faster rendering, which cuts down Loading Time and Rendering Time
- It's set up to support SEO (Search Engine Optimization) so it's easy to write for
- With a Strong Community, Supported Tools, Libraries, Toolkit Support and Availability of extensions, more than 500 Companies, including big names like Facebook, Instagram, Netflix, Khan Academy and WhatsApp, are already using ReactJS. So you can use it with solid confidence.
ááŽááąáˇáážáŹááąáŹáˇ áĄááźáąáŹááťáŹá¸ááĄááąá¸ááťáŹá¸áá˛áˇ ReactJs áĄááźáąáŹááşá¸áááŻááźáąáŹááźááŤáá áą
ReactJs áááŻááŹááŹáá˛?
ááŻááąááşááŹááážáŹ ááąáááşá¸áĄá áŹá¸ááŻáśá¸ááźá áşáá˛áˇ UI Frameworkáá˝áą áááşá¸áá° áĄááŻááşááŻááşáááŻááşáá˛áˇ Free and open-source front-end JavaScript Library áĄááťááŻá¸áĄá áŹá¸áá áşááŻáá˛ááźá áşááŤáááşá
Who found ReactJs?
ReactJs áááŻááąáŹáˇáĄáááşá Facebook (áĄááŻáĄáááşááźáąáŹááşá¸ Meta Facebook) á Software Engineer áá áşáŚá¸ááźá áşáá˛áˇ Jordan Walke áááŽáá˝ááşááŹá¸áá˛áˇááŹááŤá
How ReactJs works?
React áážáŹááąáŹáˇ Virtual DOM (Document Object Modal) ááᯠááŻáśá¸ááŹá¸ááŹááźá áşááŤáááşá Virtual DOM ááŹáá˛áááŻááŹááááááşáážáŹ áĄáááş Real DOM áĄááźáąáŹááşá¸áááŻááááŹá¸áááŻáˇáááŻáĄááşááŤáááşá Real DOM áááŻááŹáááąáŹáˇ ááŹá¸áááşáá˝ááşáĄáąáŹááşááźáąáŹááááşáááŻáááş HTML Element Object áá˝áąááᯠTree Data Structure áĄáááŻááşá¸áĄááŻááşááŻááşááźáŽá¸ UI Element áá áşáᯠChanges ááŻááşáááŻááşá¸áážáŹ ááááŻááşáá˛áˇ UI Tree Data Structure ááᯠrender ááŻááşááźáŽá¸ ááŻááşááąáŹááşááąá¸áááŻááşááŹááᯠááąáŤáşááŹááźá áşááŤáááşá Virtual DOM áááŻááŹáááąáŹáˇ UI Elements Tree Data Structure ááᯠáĄáááşááŻáśáá˝áŹá¸áá°ááźáŽá¸ UI element áá áşááŻááźáąáŹááşá¸áá˛áááşáááŻáááş cloned UI Tree Data Structure áážáŹ ááŻááşááŹááźá áşááŤáááşáááźáŽá¸áá˛áˇáĄá፠áá°áááşá¸ UI Elements Tree Data Structure áá˛áˇ cloned UI Tree Data Structure ááᯠáážááŻááşá¸áážááşááźáŽá¸ ááá°ááŽáá˛áˇ UI Element ááᯠáá°áááşá¸ UI Elements Tree Data Structure áážáŹ áĄá áŹá¸áááŻá¸ááźáŽá¸ render ááŻááşááŹá¸ááᯠááąáŤáşááŹááźá áşááŤáááşá áááŻááąáŹáˇ React á Virtual DOM ááᯠááŻáśá¸ááŹá¸ááŹááźáąáŹááˇáş SPA (Single Page Application) áá˝áąááᯠáá˝ááşáá˝ááşáá°áá°ááŻááşááąáŹááşááąá¸áááŻááşááŹáá˛ááźá áşááŤáááşá SPA (Single Page Application) áááŻááŹáááąáŹáˇ ááŹá¸áááşáá˝ááşáĄáąáŹááş ááźáąáŹááááşáááŻáááş Refresh, Reload ááááŻáá˛áˇ áááąáŹáááŹá áážááá˛áˇ ApplicationááᯠSingle Page Application áááŻáˇáážááşáá°áááŻáˇáááŤáááşá ReactJs áážáŹááąáŹáˇ State áááŻáá˛áˇ Props áá˝áąááᯠDefault áĄááąáá˛áˇ Parent to Child áá°á¸ááźáąáŹááşá¸ááąá¸áááŻááşáá˛áˇ State Management á áá áşáá áşááŻáᲠááŤáááşááŤááąá¸áááşá áĄá˛áˇáááŻááŤáááşááŹááŹááźáąáŹááˇáş Single Component áá˝áąáá˝á˛ááąá¸áááŻáˇáááŹááááŻáˇ áááŻáááŻááťá áşáá áşááźááşáááşáá˛áˇ Hybrid Application (or) Website áá˝áąááᯠáááşááŽá¸ááąá¸áááŻááşááŤáááşá áĄá˛áˇáĄááźááş State Management System áážáŹ Default áĄááąáá˛áˇ Inheritation áááąáŹáá˛áˇ ááŻááşááąááąáá˛áˇáᲠState Props áá˝áąááᯠáĄáááˇáşááťáąáŹáşáááŻáˇááąá¸áááŻáˇááá˛áˇ Global Context API áá˝áą, State Props ááᯠGeneralize áááŻáˇááąáŹááşááąá¸áááŻááşáá˛áˇ Redux Store (React-Redux) áá˝áą áá˛áˇ ááąáŤááşá¸ááźáŽá¸ Data Blind áááŻáˇáááŹááźáąáŹááˇáş áĄááťáŹá¸áĄáŹá¸ááźááˇáş Hybrid App áá˝áąááᯠMaintain áá˝ááşáá˝ááşáá°áá°ááŻááşáááŻáˇááááŻááşááŤáááşá
Pros & Cons
Pros
React áá˛áˇ Pros áá˝áą áĄááťáŹá¸ááźáŽá¸áážááá˛áˇáĄáá˛á áĄááťááş (á ) ááťááşáá˛áˇ ááźáąáŹááźááťááşááŤáááşá
1.ááąááŹáááŹáá˝ááşáá°ááźááşá¸
ááŻááşááŤáááşá JavaScript ááᯠááąáˇááŹááŹá¸áá˛áˇ áá°áá˝áąáááŻáááş ReactJs áááşáááŻáá˝ááşáá˝ááşáá°áá° áá°á¸ááźáąáŹááşá¸áááŻáˇááááŻááşááŤáááşá ááąá¸ááá˛áˇ statement áá˝áą , syntax áá˝áąá JavaScript áá˛áˇ ReactJS ááᯠááťáŹá¸ááźáŽá¸ááá˝áŹáááŻáˇáá˛ááźá áşááŤáááşááĄá˛áˇáĄááźááş ááąáˇááŹá áᏠResource áá˝áą, Community ,Tip and Trick áá˝áąááᲠáĄááťáŹá¸ááźáŽá¸áážáááŹáááŻáˇ áá˝ááşáá˝ááşáá°áá° ááąáˇááŹáááŻáˇááááŻááşááŤáááşá
2.React ááᯠSupport ááąá¸áááŻááşáá˛áˇ Tools áá˝áą Libraryáá˝áąááťáŹá¸ááźááşá¸
ReactJS á UI JavaScript Library ááźá áşááąáá˛áˇ ááťáŹá¸á á˝áŹááąáŹ Supported Tools , Library áá˝áąáá˛áˇ áĄáá°áĄááŽáá˛áˇáĄáá° Framework áááşáááşáĄááŻááşááŻááşáááŻááşááŹáá˛ááźá áşááŤáááşááĄá˛áˇááŤááźáąáŹááˇáş ReactJs ááᯠFramework áááŻááźáŽá¸áĄááťáŹá¸áĄáŹá¸áĄááźááşáážáŹá¸áááşááźááŤáááşá
Routing áĄáá˝ááş React-router-dom, Wouter, React-router-redux etc, Styling áááŻáááş Styled-component, Tailwind, Twin-macro etc , Animation áááŻáááş Framer-motion, React-three/fiber etc, Testing áĄáá˝ááşááᯠJest, Testing-Library, Enzyme etc, API áĄáá˝ááşáááŻáááş React-query, Axios etc ááťáŹá¸á á˝áŹ áááşáááŻááşáᏠFeature áĄáááŻááş Supported Library ááťáŹá¸á á˝áŹáážááááᯠáážáŹáááŹáá˛áá˝ááşáá°ááŤáááşá
3.Reusable Component áá˝áąáá˛áˇ áĄáá° Dynamic Website áá˝áąáááşááŽá¸áááŻááşááźááşá¸
React JSááᯠComponent System áĄáááŻááşá¸ááŻáśááąáŹáşááŹá¸ááŹááźá áşááŤáááşá ComponentáááŻááŹá áá áşááŻááŻáśá¸áá˛áááą áá áşá áááşááááŻááşá¸áááŻááşá¸ááźáŹá¸ááŹá¸ááźááşá¸áááŻáˇ ááąáŤáşáááŻáááŻáˇáááŤáááşá áááŻááşá áááşáááŻááşááŹááášááĄáááŻááş ááŽááźáŹá¸áááŻááşá¸ááźáŹá¸ááŹá¸áááŻááşááŹááźáąáŹááˇáş áážáŻááşáá˝áąá¸ááąáá˛áˇ System , Code Structure áá˝áąáááŻááźá áşá áąáážáŹáááŻááşááŤáá°á¸ á áĄá˛áˇáĄááźááş Component ááᯠáááŻáááŻááąáŹááşá¸áá˝ááşáĄáąáŹááş Reusable ááźá áşáá˛áˇáĄááááᯠáááşááŽá¸ááááşááąá¸ááŹáá˛ááźá áşááŤáááşá ááźáŽá¸áá˛áˇáĄá፠React JS á JSX áĄáá°áĄááŽáá˛áˇ Dynamic Statement áá˝áąáááşááŽá¸ááŹá¸áááŻááşááŹááźáąáŹááˇáş Dynamic Website áá˝áąáááŻáĄáááşááźáąááźáąáááşááŽá¸áááŻááşáážáŹááźá áşááŤáááşá
4.Peformance áĄáááŻááşá¸áááŻááşáᏠááąáŹááşá¸áá˝ááşááźááşá¸
Performance áááŻááşá¸ááᯠááźááˇáşáááşáᲠReactJS á Virtual DOM ááᯠááŻáśá¸ááŹá¸ááźáŽá¸ Reload,Refresháááᯠáá˛áˇ SPA(Single Page Application) áááşááŽá¸áááŻááşááŹááźáąáŹááˇáş Performance áĄáááŻááşá¸á ááźááşáááşáá˝ááşáááşá áąááŤáááşá
5.Testing ááąáŹááşá¸ááąáŹááşá¸ááąá¸áááŻáˇááááŻááşááźááşá¸
ReactJs áá˛áˇ ááąáŹááşá¸áá˝ááşáá˝áąááźáąáŹáá˛áˇáĄá፠Testing áĄáááŻááşá¸ááᯠáááźá áşáááąááźáąáŹááźááážáŹááźá áşááŤáááşá ReactJS á Default áĄááąáá˛áˇ Jest áááŻáááˇáşááąá¸ááŹá¸ááźáąáŹááˇáş Testing áĄáááŻááşá¸ááąá¸áá˛áˇáĄá፠áá˝ááşáá˝ááşáá°áá°ááąá¸áááŻáˇáááŤáááşá áĄá˛áˇááźááş áĄááźáŹá¸Testing Library áá˛áˇ áĄáá°áĄááŽáá˛áˇáá˛ááąá¸áááŻáˇáááŹááźáąáŹááˇáş Testing áá˝áąááąá¸ááźááşá¸ááźááˇáş Application Performance áááŻááźááˇáşáááşáááŻáˇáááŤáááşá
Cons
React JS áá˛áˇ Cons áááŻááąáŹáˇ áĄááťááş(á) ááťááş ááźáąáŹááźááťááşááŤáááşá
1. Setup áĄááźááˇáşáĄá áŻáśáá˝ááşá¸áááźááşá¸
React JSá UI Library áá˛ááźá áşááąá¸ááŹááźáąáŹááˇáş Framework áááşáááşááŻáśá¸áááŻáˇáááŻáááş ááźááşááźáŽá¸ Library áá˝áąááźááşááąáŤáşááąá¸áááŹáá˛ááźá áşááŤáááşá áĽáááŹ- route ááŻáśá¸áááŻáˇáááŻáááş Default ááąá¸ááŹá¸áážááááᯠááážááááş react-router-dom ááźááşáááˇáşááąá¸ááááᯠááźááşááąáŤáşááŻáśá¸áážáŹáᏠRouting ááᯠááŻáśá¸áááŻáˇááážáŹááźá áşááŤáááşá Framework á á áşáá˝áąáážáŹáááŻáááşááąáŹáˇ Routing System áá˝áąá Folder Route Structure áááŻááşá¸ááŻááşááŹá¸ááŹááźá áşááŤáááşá
2.JSX Syntax ááąáŹáá˝áąá¸áááŻááşááźááşá¸
ReactJS á JSX(JavaScript XML) Syntax ááᯠááŻáśá¸ááŹá¸ááŹááźáąáŹááˇáş á ááąáˇááŹáá°áá˝áąáĄáááŻáˇááąáŹáˇ áááşá¸áááşá¸ááťááşá ááááşá áąááŤáááşá áĽáááŹ- Dynamic Syntax áá˝áąáááŻáááşááŽá¸áá˛áˇááąááŹáážáŹ {} áá˛áˇ áááşá¸áááşá¸ááťááşá ááááşá áąááŤáááşáááąáŹááşáááŻááşá¸ááąá¸ááťááˇáşááŹááťáŹá¸áááşááąáŹáˇ {} ááŻáśá¸ááŹááŹá¸áááşáááąáŹááąáŤááşáá˝áŹá¸á áąáážáŹááŤá
3. Component áĄáááŻááşá¸ááťáŹá¸áááş View Path áá˛áˇ ááźááˇáşáááŻáˇááááźááşá¸
React JS á Component System áááŻááŻáśá¸ááŹá¸ááŹááźáąáŹááˇáş Sub Component áá˝áąááťáŹá¸ááźáŽá¸ááźá áşááŹáááş áááşáĄáąáŹááşáážáŹ Sub Component áážáááŹáááŻááŹááᯠáĄááźááşá¸áĄááźááş View Path áááąáŹááźááˇáşáááŻáˇááááźááşá¸ááźá áşááŤáááşá
Why should we use?
- Reactáá˛áˇ source code áá˝áąá ááąáˇááŹááᏠáá˝ááşáá°ááźááşá¸
- Modern Website áá˝áąáá˛áˇ áááŻááᯠáážááá˛áˇ UI interface áá˝áąááᯠá áááşáá°á¸ááŹááşáážááááąáŹááş React Source Code áá˛áˇ áááşááŽá¸áááŻáˇáááźááşá¸
- ReactJS áá˛áˇ Component System áááźááŻááşáááşáᲠCustom Component áá˝áąáááŻáááşááŽá¸ááźáŽá¸ Single Page Application áá˝áąááᯠáááşááŽá¸áááŻáˇáááááşááźááşá¸
- React JS á Virtual DOM áááŻááŻáśá¸ááŹá¸ááŹááźáąáŹááˇáş small project áá˝áąáážáŹ áááááŹááąáá˛áˇ ááááş Hybrid Website áá˛áˇ Hybrid Appáá˝áąáážáŹ áááŻááźááşáá˛áˇ rendering áááŻááážáááŹááźáąáŹááˇáş Loading Time ,Rendering Time ááťáąáŹáˇááťááąá¸ááááşááźááşá¸
- SEO (Search Engine Optimization) ááᯠáá˝ááşáá˝ááşáá°áá°ááąá¸áááŻáˇááĄáąáŹááş support ááąá¸ááŹá¸ááźááşá¸
- Strong Community áá˛áˇ Supported Tools , Library, Toolkit Support, Availability of extensions áá˝áąáážáááŹááźáąáŹááˇáş ReactJS áááŻááŻáśá¸áá˛áˇ ááŹáááşááźáŽá¸ Companies Facebook, Instagram, Netflix, Khan Academy, WhatsApp áĄá áážááááźááˇáş Companies 500 ááťáąáŹáşááĄááŻáśá¸ááťááąáá˛áˇááŤááźáŽááĄá˛ááŤááźáąáŹááˇáş áááŻááşáááŻááşááŹááŹááŻáśááŻáśááźááşááźááşáĄááŻáśá¸ááźáŻáááŻáˇáááŤáááşá

