In the early days of the internet, web sites were essentially made of static HTML files. Web servers were little more than file servers, when a user would come to a url, the web server would simply fetch it, and send it to the user via their browser, along with all kind of assets, like fonts and images.
The functionality of this kind of web pages are very limited, so eventually the web became more dynamic. When people would visit a page or interact with a form, instead of just fetching data, the server could perform an operation and prepare some content on demand. That content would still be sent to the user’s browser. There could also a little bit of code running on the browser, to animate pages, handle form and what not, but not very much.
So up until around 2010, that was the dominant model. Code could be involved to generate content but the browser wouldn’t do much, most of the logic would happen on servers which would just send prepared content to the browser.
However, in the early 2010s, this paradigm started to shift. With HTML5/CSS3, the browser became much more capable, and so people started to move the logic that would generate content from the server to the browser. Instead of sending a whole styled HTML page, a web server could just send the data needed to create it. Then, code could run on the browser to actually turn that data into HTML. That browser code could also update what the user would see, making just the required data calls.
Get 20% off Google Google Workspace (Google Meet) Standard Plan with the following codes: 96DRHDRA9J7GTN6 Get 20% off Google Workspace (Google Meet) Business Plan (AMERICAS): M9HNXHX3WC9H7YE (Email us for more codes)
So, in the early to mid 2010s, front-end code would typically:
render complex web pages from data retrieved from back-end,
simulate “navigation” between different views: when the user would do some actions, the entire page would change, the url would update etc. but without actually loading a new page from the server.
maintain the state of an application: the application could track certain things about the user and the session, and won’t have to reload that information from the server all the time.
dynamically update both contents and style of a web page.
Now, all of this is possible to do in “vanilla javascript”. But it’s really cumbersome to implement it, and especially tricky to do it in a performant way. There are millions and millions of “web apps” that are replacing the static “web sites” of old, and which all need to dynamically render content. Should developers reimplement that from scratch each time?
Enter the web frameworks such as React. These frameworks are abstractions that let the developers focus on the logic of their web app (where the data comes from, how content is organized) without being tied to the nitty gritty. Web frameworks make developers organize their code in building blocks called modules or components. Somebody could write a header component and someone else building a page could reuse that header component. And a third developer could change the header component, and that change would be reflected everywhere the component is used. Folks could also build 3rd party libraries compatible with the web framework ecosystem, that would address common problems that many developers face. For instance, someone could create a date picker component (a notably tricky interface) that anyone can reuse and customize. Or create a solution to deal with very long pages by only rendering what is in the browser viewport, and creating/deleting elements as a user would scroll.
To have the support of this ecosystem is a huge productivity boost. There are millions of developers who work with React, and the most popular React libraries are very elegant solutions to hard problems(the same could be said of Angular, Vue etc. though their communities are a bit smaller).
React and web frameworks aren’t exactly needed, in fact there is a reverse trend in the last couple of years to go back to server generated content in some cases or to only use vanilla javascript, but it’s a very solid foundation to build a web app.
Comments:
1- The specific rationale for React is state management and efficient page updates, it’s underlying power comes not just from the structure and tooling provided by it being a framework, but also the shadow-DOM and component lifecycle that along with state management empower greater interactivity without very slow inefficient page updates.
React is great for widgets and implementing patterns. You can keep data/text separate from structure and behavior. React, angular and vue are all popular frameworks. Before that we used stuff like dust, handlebars, jQuery and UI libraries like dojo and jQuery UI.
Developers are always looking for ways to be more efficient and more maintainable. React is a current iteration tool for being more efficient.
3- It is needed as a pattern for the devs to create packages that will works (The React packages). In NPM there are many packages, but all them are following its own logic, docs or no docs, they are based on another packages, etc. With things like React, you are somehow limited to follow its rules and you are entering its ecosystem which is good. This is true for all frameworks/libraries.
Hey, did someone here ever used react native markdown? I want to fetch mardown from supabas and render it. Does this work? Thanks submitted by /u/SomeNameIChoose [link] [comments]
I’m trying to implement this popup menu. I could just have an absolutely positioned view that’s only visible on the button press but I’m looking for something more streamline and has that native “feel”. Any suggestions? Or am I stuck using reanimated to implement the animation. Thanks in advance. submitted by /u/Ultra-Reverse [link] [comments]
In my react native app, I have been using react-native-maps in order to render a map in some screens. In the google console there is an option that allows you to put your api key as private. With that option, there is not problem on IOS, the maps works correctly. On the other hand, with that option active, the maps don't work on Android. I would like to know if this is related with some configurations in the android folder or if I need to implement something else in my app. import { View } from 'react-native'; import MapView, { Marker, PROVIDER_GOOGLE } from 'react-native-maps'; import { mapCustomStyle } from '@/UI/assets/styles/MapStyles'; import MarkerIcon from '@/UI/assets/svg/MarkerIcon'; type TypeMapSingleProps = { latitude?: number | null; longitude?: number | null; containerStyles?: string; }; const MapSingle = ({ latitude, longitude, containerStyles, }: TypeMapSingleProps) => { return ( <View className={`${containerStyles ?? ''}`}> {latitude && longitude ? ( <MapView testID='map' className='w-full h-full' provider={PROVIDER_GOOGLE} initialRegion={{ latitude: latitude, longitude: longitude, latitudeDelta: 0.03, longitudeDelta: 0.03, }} customMapStyle={mapCustomStyle} > <Marker coordinate={{ latitude: latitude, longitude: longitude, }} > <MarkerIcon stroke='#FE2EFF' /> </Marker> </MapView> ) : null} </View> ); }; export default MapSingle; submitted by /u/rox651 [link] [comments]
Has anyone been able to accomplish vertical & horizontal masonry in React? A lot of these libraries seem to only support only one direction. submitted by /u/mr_derp_brain [link] [comments]
Hi guys. I am just starting to make the effort into better coding quality. As part of that effort, I am trying to integrate ESlinting into my project. The problem is that I have no experience with the tool, I know what is it used for but that is it. 1) I would like to ask how should I configure my ESLint, right now I have one activated and almost every file in the project is red outlined. I want to know if there is any specific configuration or Plugin I should be using for my daily job, and I would like something easy to start with, Typescript and React-Native oriented configuration/plugin. 2) Is the default ESLint configuration enough? I mean, I am not sure if the default configuration is oriented toward tsx and ts files, not even sure if it was generated with react-native in mind. Maybe it is just configured for javascript or jsx Any info or suggestion is welcome! thanks! submitted by /u/Aware-Leather5919 [link] [comments]
Today I Learned (TIL) You learn something new every day; what did you learn today? Submit interesting and specific facts about something that you just found out here.
Reddit Science This community is a place to share and discuss new scientific research. Read about the latest advances in astronomy, biology, medicine, physics, social science, and more. Find and submit new publications and popular science coverage of current research.